Browse Source

高程坡度调用

gushoubang 8 tháng trước cách đây
mục cha
commit
66177885e5

+ 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")

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

@@ -19,9 +19,9 @@ public class FactorSpatialVo {
     private String defaultType;
     @JsonProperty("hasValue")
     private Boolean hasValue;
+
     @JsonProperty("defaultValue")
-    private Integer defaultValue;
-    @JsonProperty("defaultValues")
-    private List<Integer> defaultValues = new ArrayList<>();
+    private String defaultValue;
+
     private boolean clip = false;
 }

+ 6 - 4
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/CreateUtilsDBMapper.java

@@ -86,12 +86,14 @@ public interface CreateUtilsDBMapper {
                             @Param("newTableName") String newTableName);
 
     @Slave
-    void delGtBandValue(@Param("tableNameA") String tableNameA,
+    void getLtBandValue(@Param("tableNameA") String tableNameA,
                         @Param("tableNameB") String tableNameB,
-                        @Param("newTableName") String newTableName);
+                        @Param("newTableName") String newTableName,
+                        @Param("value") Double value);
 
     @Slave
-    void delLtBandValue(@Param("tableNameA") String tableNameA,
+    void getGtBandValue(@Param("tableNameA") String tableNameA,
                         @Param("tableNameB") String tableNameB,
-                        @Param("newTableName") String newTableName);
+                        @Param("newTableName") String newTableName,
+                        @Param("value") Double value);
 }

+ 10 - 3
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/CreateUtilsDBService.java

@@ -74,14 +74,21 @@ public interface CreateUtilsDBService {
     String intersectionTables(String tableNameA, List<String> tableIdsA, String tableNameB);
 
     /**
-     * 生成新表,删除表tableNameA空间数据波段值大于value的数据
+     * 生成新表,获取表tableNameA空间数据波段值小于value的数据
      *
      * @param tableNameA
      * @param tableNameB
      * @param value
      * @return
      */
-    String delGtBandValue(String tableNameA, String tableNameB, Double value);
+    String getLtBandValue(String tableNameA, String tableNameB, Double value);
 
-    String delLtBandValue(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;

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

@@ -78,16 +78,16 @@ public class CreateUtilsDBServiceImpl implements CreateUtilsDBService {
     }
 
     @Override
-    public String delGtBandValue(String tableNameA, String tableNameB, Double value) {
+    public String getLtBandValue(String tableNameA, String tableNameB, Double value) {
         String newTableName = StringUtils.getTemporaryTableName();
-        createUtilsDBMapper.delGtBandValue(tableNameA, tableNameB, newTableName);
+        createUtilsDBMapper.getLtBandValue(tableNameA, tableNameB, newTableName, value);
         return newTableName;
     }
 
     @Override
-    public String delLtBandValue(String tableNameA, String tableNameB, Double value) {
+    public String getGtBandValue(String tableNameA, String tableNameB, Double value) {
         String newTableName = StringUtils.getTemporaryTableName();
-        createUtilsDBMapper.delLtBandValue(tableNameA, tableNameB, newTableName);
+        createUtilsDBMapper.getGtBandValue(tableNameA, tableNameB, newTableName, value);
         return newTableName;
     }
 }

+ 12 - 7
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,17 +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);

+ 12 - 18
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/CreateUtilsDBMapper.xml

@@ -96,28 +96,22 @@
         ;
     </insert>
 
-    <insert id="delGtBandValue">
+    <insert id="getLtBandValue">
         CREATE TABLE "${newTableName}" AS
-        SELECT ta.id,
-               ta.geom
+        SELECT DISTINCT ta.id,ta.geom
         FROM "${tableNameA}" ta,
-             "${tableNameB}" tb,
-             LATERAL (
-                      SELECT ST_SummaryStats(ST_Clip(tb.rast, ta.geom)) AS stats
-                 ) AS summary
-        WHERE ST_Intersects(tb.rast, ta.geom)
-          AND (stats).mean &gt; #{value};
+             "${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="delLtBandValue">
+    <insert id="getGtBandValue">
         CREATE TABLE "${newTableName}" AS
-        SELECT ta.id,
-               ta.geom
+        SELECT DISTINCT ta.id,ta.geom
         FROM "${tableNameA}" ta,
-             "${tableNameB}" tb,
-             LATERAL (
-                      SELECT ST_SummaryStats(ST_Clip(tb.rast, ta.geom)) AS stats
-                 ) AS summary
-        WHERE ST_Intersects(tb.rast, ta.geom)
-          AND (stats).mean &lt; #{value};
+             "${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>

+ 4 - 1
sql/pgsql/0_init.sql

@@ -14,4 +14,7 @@
 
 --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}'
+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