浏览代码

填挖方分析完成

gushoubang 7 月之前
父节点
当前提交
7b94011ec6

+ 3 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/controller/analyse/RasterController.java

@@ -30,7 +30,9 @@ public class RasterController {
     @PostMapping("/cutFill")
     @Slave
     public RequestResult getCutFill(@RequestBody CutFillVo cutFillVo) {
-        Map<String, Object> mapRes = iRasterService.getCutFill(cutFillVo);
+        // TODO: 表名需要替换
+        String tableName = "vector.\"RASTER_DSM_BP_3857\"";
+        Map<String, Object> mapRes = iRasterService.getCutFill(cutFillVo, tableName);
         return RequestResult.success(mapRes);
     }
 }

+ 10 - 29
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/vector/AnalyseUtilsDBMapper.java

@@ -18,15 +18,9 @@ public interface AnalyseUtilsDBMapper {
      * @return
      */
     @Slave
-    List<String> intersectsTableWkt(
-            @Param("tableName") String tableName,
-            @Param("tableIds") List<String> tableIds,
-            @Param("ewkt") String ewkt);
+    List<String> intersectsTableWkt(@Param("tableName") String tableName, @Param("tableIds") List<String> tableIds, @Param("ewkt") String ewkt);
 
-    List<String> intersectsTables(
-            @Param("tableNameA") String tableNameA,
-            @Param("tableNameB") String tableNameB,
-            @Param("tableIdsB") List<String> tableIdsB);
+    List<String> intersectsTables(@Param("tableNameA") String tableNameA, @Param("tableNameB") String tableNameB, @Param("tableIdsB") List<String> tableIdsB);
 
     /**
      * 计算wkt包含table中的数据,返回table id
@@ -36,10 +30,7 @@ public interface AnalyseUtilsDBMapper {
      * @param ewkt
      * @return
      */
-    List<String> containsTableWkt(
-            @Param("tableName") String tableName,
-            @Param("tableIds") List<String> tableIds,
-            @Param("ewkt") String ewkt);
+    List<String> containsTableWkt(@Param("tableName") String tableName, @Param("tableIds") List<String> tableIds, @Param("ewkt") String ewkt);
 
     /**
      * 计算TableA包含TableB中的数据,返回tableB id
@@ -49,10 +40,7 @@ public interface AnalyseUtilsDBMapper {
      * @param tableIdsB
      * @return
      */
-    List<String> containsTables(
-            @Param("tableNameA") String tableNameA,
-            @Param("tableNameB") String tableNameB,
-            @Param("tableIdsB") List<String> tableIdsB);
+    List<String> containsTables(@Param("tableNameA") String tableNameA, @Param("tableNameB") String tableNameB, @Param("tableIdsB") List<String> tableIdsB);
 
     /**
      * 计算wkt距离范围内table中的数据,返回table id
@@ -62,12 +50,7 @@ public interface AnalyseUtilsDBMapper {
      * @param ewkt      wkt
      * @return
      */
-    List<String> distanceTableWkt(
-            @Param("tableName") String tableName,
-            @Param("tableIds") List<String> tableIds,
-            @Param("ewkt") String ewkt,
-            @Param("distance") Integer distance,
-            @Param("distanceType") Integer distanceType);
+    List<String> distanceTableWkt(@Param("tableName") String tableName, @Param("tableIds") List<String> tableIds, @Param("ewkt") String ewkt, @Param("distance") Integer distance, @Param("distanceType") Integer distanceType);
 
     /**
      * 计算TableA距离范围内TableB中的数据,返回tableB id
@@ -76,12 +59,10 @@ public interface AnalyseUtilsDBMapper {
      * @param tableNameB
      * @return
      */
-    List<String> distanceTables(
-            @Param("tableNameA") String tableNameA,
-            @Param("tableNameB") String tableNameB,
-            @Param("tableIdsB") List<String> tableIdsB,
-            @Param("distance") Integer distance,
-            @Param("distanceType") Integer distanceType);
-
+    List<String> distanceTables(@Param("tableNameA") String tableNameA, @Param("tableNameB") String tableNameB, @Param("tableIdsB") List<String> tableIdsB, @Param("distance") Integer distance, @Param("distanceType") Integer distanceType);
 
+    /**
+     * 两个矢量数据作差
+     */
+    String differenceWkt(@Param("ewktA") String ewktA, @Param("ewktB") String ewktB);
 }

+ 7 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/AnalyseUtilsDBService.java

@@ -1,5 +1,7 @@
 package com.onemap.analyse.service;
 
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 /**
@@ -86,4 +88,9 @@ public interface AnalyseUtilsDBService {
             List<String> tableIdsB,
             Integer distance,
             Integer distanceType);
+
+    /**
+     * 两个矢量数据作差
+     */
+    String differenceWkt(String ewktA, String ewktB);
 }

+ 1 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/IRasterService.java

@@ -10,5 +10,5 @@ import java.util.Map;
 public interface IRasterService {
     Double getValue(String tableName, String geomWkt, String type);
 
-    Map<String,Object> getCutFill(CutFillVo cutFillVo);
+    Map<String,Object> getCutFill(CutFillVo cutFillVo,String tableName);
 }

+ 5 - 1
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/AnalyseUtilsDBServiceImpl.java

@@ -35,7 +35,7 @@ public class AnalyseUtilsDBServiceImpl implements AnalyseUtilsDBService {
 
     @Override
     public List<String> distanceTableWkt(String tableName, List<String> tableIds, String ewkt, Integer distance, Integer distanceType) {
-        return analyseUtilsDBMapper.distanceTableWkt(tableName, tableIds, ewkt, distance,distanceType);
+        return analyseUtilsDBMapper.distanceTableWkt(tableName, tableIds, ewkt, distance, distanceType);
     }
 
     @Override
@@ -43,4 +43,8 @@ public class AnalyseUtilsDBServiceImpl implements AnalyseUtilsDBService {
         return analyseUtilsDBMapper.distanceTables(tableNameA, tableNameB, tableIdsB, distance, distanceType);
     }
 
+    @Override
+    public String differenceWkt(String ewktA, String ewktB) {
+        return analyseUtilsDBMapper.differenceWkt(ewktA, ewktB);
+    }
 }

+ 14 - 10
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/RasterServiceImpl.java

@@ -2,6 +2,7 @@ package com.onemap.analyse.service.impl;
 
 import com.onemap.analyse.domain.vo.CutFillVo;
 import com.onemap.analyse.mapper.raster.RasterMapper;
+import com.onemap.analyse.mapper.vector.AnalyseUtilsDBMapper;
 import com.onemap.analyse.service.IRasterService;
 import org.springframework.stereotype.Service;
 
@@ -17,6 +18,9 @@ public class RasterServiceImpl implements IRasterService {
     @Resource
     private RasterMapper rasterMapper;
 
+    @Resource
+    private AnalyseUtilsDBMapper analyseUtilsDBMapper;
+
     @Override
     public Double getValue(String tableName, String geomWkt, String type) {
         Double value = (double) 0;
@@ -31,8 +35,8 @@ public class RasterServiceImpl implements IRasterService {
     }
 
     @Override
-    public Map<String,Object> getCutFill(CutFillVo cutFillVo) {
-        String tableName = "vector.\"RASTER_DSM_BP_3857\"";
+    public Map<String, Object> getCutFill(CutFillVo cutFillVo,String tableName) {
+
         Double midHeight = cutFillVo.getHeight();
         if (midHeight == null) {
             midHeight = rasterMapper.getAveValue(tableName, cutFillVo.getGeom());
@@ -66,17 +70,17 @@ public class RasterServiceImpl implements IRasterService {
 
         String bottomGeom = cutFillVo.getGeom();
 
-        Map<String,Object> resMap=new HashMap<>();
+        Map<String, Object> resMap = new HashMap<>();
 
-        resMap.put("fillVolume",fillVolume);
-        resMap.put("cutVolume",cutVolume);
-        resMap.put("height",midHeight);
+        resMap.put("fillVolume", fillVolume);
+        resMap.put("cutVolume", cutVolume);
+        resMap.put("height", midHeight);
 
+        bottomGeom = analyseUtilsDBMapper.differenceWkt("SRID=4326;" + bottomGeom, midGeom);
         // resMap.put("midUpGeom",midUpGeom);
-        resMap.put("midGeom",midGeom);
+        resMap.put("midGeom", midGeom);
         // resMap.put("midDownGeom",midDownGeom);
-        resMap.put("bottomGeom",bottomGeom);
-
-        return  resMap;
+        resMap.put("bottomGeom", bottomGeom);
+        return resMap;
     }
 }

+ 3 - 0
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/vector/AnalyseUtilsDBMapper.xml

@@ -123,4 +123,7 @@
         </choose>
         )
     </select>
+    <select id="differenceWkt" resultType="String">
+        SELECT public.ST_AsEWKT(public.ST_Difference(public.st_geomfromewkt(#{ewktA}), public.st_geomfromewkt(#{ewktB})))
+    </select>
 </mapper>