Parcourir la source

高程坡度调用

gushoubang il y a 8 mois
Parent
commit
734d90459c

+ 1 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/SelectionDTO.java

@@ -27,6 +27,7 @@ public class SelectionDTO {
     @TableField(value = "use_land_type")
     private Boolean useLandType=false;// 是否保持用地性质一致
     private String zdpd;// 最大坡度
+    // TODO:字段待确认
     private Double xzmj;// 选址面积(㎡)
     private String sjy;// 数据源,对应表的名称
     @TableField(value = "geom_id")

+ 6 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/domain/vo/FactorSpatialVo.java

@@ -4,6 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 计算中用到的因子
  */
@@ -16,7 +19,9 @@ public class FactorSpatialVo {
     private String defaultType;
     @JsonProperty("hasValue")
     private Boolean hasValue;
+
     @JsonProperty("defaultValue")
-    private Integer defaultValue;
+    private String defaultValue;
+
     private boolean clip = false;
 }

+ 12 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/CreateUtilsDBMapper.java

@@ -84,4 +84,16 @@ public interface CreateUtilsDBMapper {
                             @Param("tableIdsA") List<String> tableIdsA,
                             @Param("tableNameB") String tableNameB,
                             @Param("newTableName") String newTableName);
+
+    @Slave
+    void getLtBandValue(@Param("tableNameA") String tableNameA,
+                        @Param("tableNameB") String tableNameB,
+                        @Param("newTableName") String newTableName,
+                        @Param("value") Double value);
+
+    @Slave
+    void getGtBandValue(@Param("tableNameA") String tableNameA,
+                        @Param("tableNameB") String tableNameB,
+                        @Param("newTableName") String newTableName,
+                        @Param("value") Double value);
 }

+ 19 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/CreateUtilsDBService.java

@@ -72,4 +72,23 @@ public interface CreateUtilsDBService {
      * @return
      */
     String intersectionTables(String tableNameA, List<String> tableIdsA, String tableNameB);
+
+    /**
+     * 生成新表,获取表tableNameA空间数据波段值小于value的数据
+     *
+     * @param tableNameA
+     * @param tableNameB
+     * @param value
+     * @return
+     */
+    String getLtBandValue(String tableNameA, String tableNameB, Double value);
+
+    /**
+     * 生成新表,获取表tableNameA空间数据波段值大于value的数据
+     * @param tableNameA
+     * @param tableNameB
+     * @param value
+     * @return
+     */
+    String getGtBandValue(String tableNameA, String tableNameB, Double value);
 }

+ 2 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/ITableDateService.java

@@ -4,6 +4,8 @@ import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
 import com.onemap.analyse.domain.vo.TargetTableVo;
+import com.onemap.common.datasource.annotation.Slave;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;

+ 19 - 33
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/CreateUtilsDBServiceImpl.java

@@ -18,10 +18,6 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
 
     @Override
     public String bufferTable(String tableName, float radius) {
-        long timestamp = System.currentTimeMillis();
-        String[] tableNames = Strings.split(tableName, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_buffer_" + tableNames[tableNames.length - 1];
         String newTableName = StringUtils.getTemporaryTableName();
         createUtilsDBMapper.bufferTable(tableName, radius, newTableName);
         return newTableName;
@@ -29,11 +25,6 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
 
     @Override
     public String bufferTable(String tableName, String column) {
-        long timestamp = System.currentTimeMillis();
-        String[] tableNames = Strings.split(tableName, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_buffer_" + tableNames[tableNames.length - 1];
-
         String newTableName = StringUtils.getTemporaryTableName();
         createUtilsDBMapper.bufferColumnTable(tableName, column, newTableName);
         return newTableName;
@@ -41,20 +32,16 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
 
     @Override
     public String bufferEekt(String ewkt, float radius) {
-        ewkt=  createUtilsDBMapper.bufferEwkt(ewkt, radius);
+        ewkt = createUtilsDBMapper.bufferEwkt(ewkt, radius);
         return ewkt;
     }
 
     @Override
     public String differenceTableWkt(String tableName, List<String> tableIds, String ewkt) {
         // TODO
-       if(ewkt.equals("")){
-           return tableName;
-       }
-        long timestamp = System.currentTimeMillis();
-        String[] tableNames = Strings.split(tableName, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_diff_wkt_" + tableNames[tableNames.length - 1];
+        if (ewkt.equals("")) {
+            return tableName;
+        }
         String newTableName = StringUtils.getTemporaryTableName();
         createUtilsDBMapper.differenceTableWkt(tableName, tableIds, ewkt, newTableName);
         return newTableName;
@@ -63,14 +50,8 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
     @Override
     public String differenceTables(String tableNameA, List<String> tableIdsA, String tableNameB) {
         long timestamp = System.currentTimeMillis();
-        String[] tableNamesA = Strings.split(tableNameA, '_');
-        String[] tableNamesB = Strings.split(tableNameB, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_" + tableNamesA[tableNamesA.length - 1] + "_diff_" + tableNamesB[tableNamesB.length - 1];
         String newTableName = StringUtils.getTemporaryTableName();
 
-
-
         String temporaryTable = "temporaryTable_" + timestamp;
         createUtilsDBMapper.differenceTables(tableNameA, tableIdsA, tableNameB, newTableName, temporaryTable);
         return newTableName;
@@ -80,13 +61,9 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
     @Override
     public String intersectionTableWkt(String tableName, List<String> tableIds, String ewkt) {
         // TODO
-        if(ewkt.equals("")){
+        if (ewkt.equals("")) {
             return tableName;
         }
-        long timestamp = System.currentTimeMillis();
-        String[] tableNames = Strings.split(tableName, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_inter_wkt_" + tableNames[tableNames.length - 1];
         String newTableName = StringUtils.getTemporaryTableName();
 
         createUtilsDBMapper.intersectionTableWkt(tableName, tableIds, ewkt, newTableName);
@@ -95,13 +72,22 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
 
     @Override
     public String intersectionTables(String tableNameA, List<String> tableIdsA, String tableNameB) {
-        long timestamp = System.currentTimeMillis();
-        String[] tableNamesA = Strings.split(tableNameA, '_');
-        String[] tableNamesB = Strings.split(tableNameB, '_');
-
-        // String newTableName = TEMPORARY + "_" + timestamp + "_" + tableNamesA[tableNamesA.length - 1] + "_inter_table_" + tableNamesB[tableNamesB.length - 1];
         String newTableName = StringUtils.getTemporaryTableName();
         createUtilsDBMapper.intersectionTables(tableNameA, tableIdsA, tableNameB, newTableName);
         return newTableName;
     }
+
+    @Override
+    public String getLtBandValue(String tableNameA, String tableNameB, Double value) {
+        String newTableName = StringUtils.getTemporaryTableName();
+        createUtilsDBMapper.getLtBandValue(tableNameA, tableNameB, newTableName, value);
+        return newTableName;
+    }
+
+    @Override
+    public String getGtBandValue(String tableNameA, String tableNameB, Double value) {
+        String newTableName = StringUtils.getTemporaryTableName();
+        createUtilsDBMapper.getGtBandValue(tableNameA, tableNameB, newTableName, value);
+        return newTableName;
+    }
 }

+ 16 - 6
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/FzssServiceImpl.java

@@ -327,7 +327,7 @@ public class FzssServiceImpl implements IFzssService {
             FactorSpatialVo factorSpatialVo = factorUseDTO.getConditionInfoObj();
             if (factorSpatialVo.equals("intersect")) {
                 // 1.先切割因子地块
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), 0);
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, Float.parseFloat(factorSpatialVo.getDefaultValue()), 0);
                 if (factorSpatialVo.isClip()) {
                     // 切割地块
                     if (factorSpatialVo.getDefaultType().equals("intersect")) {
@@ -355,7 +355,7 @@ public class FzssServiceImpl implements IFzssService {
                 }
             } else if (factorSpatialVo.getSpatialType().equals("contain")) {
                 // 1.先切割因子地块
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), 0);
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, Float.parseFloat(factorSpatialVo.getDefaultValue()), 0);
                 if (factorSpatialVo.isClip()) {
                     // 包含判断
                     if (factorSpatialVo.getDefaultType().equals("contain")) {
@@ -382,7 +382,9 @@ public class FzssServiceImpl implements IFzssService {
                     }
                 }
             } else if (factorSpatialVo.getSpatialType().equals("distance")) {
-                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt, factorSpatialVo.getDefaultValue(), factorSpatialVo.getDefaultValue());
+                String calculateEwkt = getFactorEwkt(factorUseDTO.getFactorBsm(), ewkt,
+                        Float.parseFloat(factorSpatialVo.getDefaultValue()),
+                        Float.parseFloat(factorSpatialVo.getDefaultValue()));
 
                 if (factorSpatialVo.isClip()) {
                     // 距离判断
@@ -418,12 +420,20 @@ public class FzssServiceImpl implements IFzssService {
                         }
                     }
                 }
-            } else if (factorSpatialVo.getDefaultType().equals("sy_dsm")) {
+            } else if (factorSpatialVo.getSpatialType().equals("slope") || factorSpatialVo.getSpatialType().equals("dsm")) {
                 // 坡度计算
                 if (factorSpatialVo.getDefaultType().equals("lt") || factorSpatialVo.getDefaultType().equals("let")) {
-
+                    // 小于等于
+                    rawTable = createUtilsDBService.getLtBandValue(rawTable, factorUseDTO.getFactorBsm(), Double.valueOf(factorSpatialVo.getDefaultValue()));
+                } else if (factorSpatialVo.getDefaultType().equals("gt") || factorSpatialVo.getDefaultType().equals("get")) {
+                    // 大于等于
+                    rawTable = createUtilsDBService.getGtBandValue(rawTable, factorUseDTO.getFactorBsm(), Double.valueOf(factorSpatialVo.getDefaultValue()));
                 } else {
-
+                    // 介于
+                    String defaultValues = factorSpatialVo.getDefaultValue();
+                    String[] valueArray = defaultValues.split(",");
+                    rawTable = createUtilsDBService.getLtBandValue(rawTable, factorUseDTO.getFactorBsm(), Double.valueOf(valueArray[0]));
+                    rawTable = createUtilsDBService.getGtBandValue(rawTable, factorUseDTO.getFactorBsm(), Double.valueOf(valueArray[1]));
                 }
             }
             Integer tableCount = tableDateService.getTableCount(rawTable);

+ 19 - 0
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/CreateUtilsDBMapper.xml

@@ -95,4 +95,23 @@
         </if>
         ;
     </insert>
+
+    <insert id="getLtBandValue">
+        CREATE TABLE "${newTableName}" AS
+        SELECT DISTINCT ta.id,ta.geom
+        FROM "${tableNameA}" ta,
+             "${tableNameB}" tb
+        WHERE public.ST_Intersects(tb.rast, ta.geom)
+          AND (SELECT (stats).mean
+            FROM (SELECT PUBLIC.ST_SummaryStats(PUBLIC.ST_Clip(tb.rast,ta.geom)) AS stats) AS summary) &lt; #{value};
+    </insert>
+    <insert id="getGtBandValue">
+        CREATE TABLE "${newTableName}" AS
+        SELECT DISTINCT ta.id,ta.geom
+        FROM "${tableNameA}" ta,
+             "${tableNameB}" tb
+        WHERE public.ST_Intersects(tb.rast, ta.geom)
+          AND (SELECT (stats).mean
+            FROM (SELECT PUBLIC.ST_SummaryStats(PUBLIC.ST_Clip(tb.rast,ta.geom)) AS stats) AS summary) &gt; #{value};
+    </insert>
 </mapper>

+ 6 - 0
sql/pgsql/0_init.sql

@@ -4,3 +4,9 @@ vector."AFTER_NZYSJ_NEW"
 vector.gdbh_zbph
 
 
+--8.13
+UPDATE base.t_jsc_sql
+SET jsc_sql='SELECT round(coalesce(sum(zy_gdmj),0),2)zy_gdmj,round(coalesce(sum(zy_st),0),2) zy_st,round(coalesce(sum(zy_cn),0)/1000,2) zy_cn, round(coalesce(sum(cb_gdmj),0),2) cb_gdmj,round(coalesce(sum(cb_st),0),2) cb_st,round(coalesce(sum(cb_cn),0)/1000,2) cb_cn, #{id} as id ,#{begin_time} as create_time FROM vector.gdbh_zbph x where xzqhdm like #{id}||''%'' AND pzrq >= #{begin_time} AND pzrq < #{end_time}'
+-- 同步数据
+-- base.t_fzss_fzxz_factor_temp
+-- base.t_fzss_fzxz_factor