فهرست منبع

添加包含方法

gushoubang 9 ماه پیش
والد
کامیت
b5af1cfd4e

+ 30 - 13
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/controller/analyse/AnalyseUtilsDBController.java

@@ -34,12 +34,7 @@ public class AnalyseUtilsDBController extends BaseController {
      */
     @PostMapping("/intersects/table_wkt")
     @Slave
-    public RequestResult intersectsTableWkt(
-            @RequestParam(value = "inputTable") String inputTable,
-            @RequestParam(value = "inputSRID", required = false) Integer inputSRID,
-            @RequestParam(value = "inputIds", required = false) List<String> inputIds,
-            @RequestParam(value = "intersectsWkt") String intersectsWkt,
-            @RequestParam(value = "intersectsWktSRID", required = false) Integer intersectsWktSRID) {
+    public RequestResult intersectsTableWkt(@RequestParam(value = "inputTable") String inputTable, @RequestParam(value = "inputSRID", required = false) Integer inputSRID, @RequestParam(value = "inputIds", required = false) List<String> inputIds, @RequestParam(value = "intersectsWkt") String intersectsWkt, @RequestParam(value = "intersectsWktSRID", required = false) Integer intersectsWktSRID) {
         return RequestResult.success(analyseUtilsDBService.intersectsTableWkt(inputTable, inputSRID, inputIds, intersectsWkt, intersectsWktSRID));
     }
 
@@ -57,14 +52,36 @@ public class AnalyseUtilsDBController extends BaseController {
      */
     @PostMapping("/intersection/table_wkt")
     @Slave
-    public RequestResult intersectionTableWkt(
-            @RequestParam(value = "inputTable") String inputTable,
-            @RequestParam(value = "inputSRID", required = false) Integer inputSRID,
-            @RequestParam(value = "inputIds", required = false) List<String> inputIds,
-            @RequestParam(value = "intersectionWkt") String intersectionWkt,
-            @RequestParam(value = "intersectionWktSRID", required = false) Integer intersectionWktSRID,
-            @RequestParam(value = "outputColumn", required = false) List<String> outputColumn) {
+    public RequestResult intersectionTableWkt(@RequestParam(value = "inputTable") String inputTable, @RequestParam(value = "inputSRID", required = false) Integer inputSRID, @RequestParam(value = "inputIds", required = false) List<String> inputIds, @RequestParam(value = "intersectionWkt") String intersectionWkt, @RequestParam(value = "intersectionWktSRID", required = false) Integer intersectionWktSRID, @RequestParam(value = "outputColumn", required = false) List<String> outputColumn) {
         return RequestResult.success(analyseUtilsDBService.intersectionTableWkt(inputTable, inputSRID, inputIds, intersectionWkt, intersectionWktSRID, outputColumn));
     }
 
+
+    /**
+     * 计算wkt包含table中的数据,返回table id
+     *
+     * @param inputTable  TABLE名称(vater空间中表)
+     * @param inputIds    查询数据集ID
+     * @param containsWkt wkt
+     * @return
+     */
+    @PostMapping("/contains/table_wkt")
+    @Slave
+    public RequestResult containsTableWkt(@RequestParam(value = "inputTable") String inputTable, @RequestParam(value = "inputIds", required = false) List<String> inputIds, @RequestParam(value = "containsWkt") String containsWkt) {
+        return RequestResult.success(analyseUtilsDBService.containsTableWkt(inputTable, inputIds, containsWkt));
+    }
+
+    /**
+     * 计算TableA包含TableB中的数据,返回tableB id
+     *
+     * @param inputTableA
+     * @param inputTableB
+     * @param inputIdsB
+     * @return
+     */
+    @PostMapping("/contains/tables")
+    @Slave
+    public RequestResult containsTables(@RequestParam(value = "inputTableA") String inputTableA, @RequestParam(value = "inputTableB") String inputTableB, @RequestParam(value = "inputIdsB", required = false) List<String> inputIdsB) {
+        return RequestResult.success(analyseUtilsDBService.containsTables(inputTableA, inputTableB, inputIdsB));
+    }
 }

+ 37 - 11
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/mapper/AnalyseUtilsDBMapper.java

@@ -11,14 +11,15 @@ public interface AnalyseUtilsDBMapper {
 
     /**
      * table中与wkt数据是否有交集
-     * @param inputTable TABLE名称(vater空间中表)
-     * @param inputSRID   table
-     * @param inputIds    查询数据集ID
-     * @param intersectsWkt wkt
+     *
+     * @param inputTable        TABLE名称(vater空间中表)
+     * @param inputSRID         table
+     * @param inputIds          查询数据集ID
+     * @param intersectsWkt     wkt
      * @param intersectsWktSRID wkt对应的坐标
      * @return
      */
-    public List<String> intersectsTableWkt(
+    List<String> intersectsTableWkt(
             @Param("inputTable") String inputTable,
             @Param("inputSRID") Integer inputSRID,
             @Param("inputIds") List<String> inputIds,
@@ -27,15 +28,16 @@ public interface AnalyseUtilsDBMapper {
 
     /**
      * table中与wkt数据取交集
-     * @param inputTable TABLE名称(vater空间中表)
-     * @param inputSRID   table
-     * @param inputIds    查询数据集ID
-     * @param intersectionWkt wkt
+     *
+     * @param inputTable          TABLE名称(vater空间中表)
+     * @param inputSRID           table
+     * @param inputIds            查询数据集ID
+     * @param intersectionWkt     wkt
      * @param intersectionWktSRID wkt对应的坐标
-     * @param outputColumn      返回TABLE表中的字段,先已返回,ID,GEOM(交集的),geom_area (交集的)
+     * @param outputColumn        返回TABLE表中的字段,先已返回,ID,GEOM(交集的),geom_area (交集的)
      * @return
      */
-    public List<Map> intersectionTableWkt(
+    List<Map> intersectionTableWkt(
             @Param("inputTable") String inputTable,
             @Param("inputSRID") Integer inputSRID,
             @Param("inputIds") List<String> inputIds,
@@ -43,5 +45,29 @@ public interface AnalyseUtilsDBMapper {
             @Param("intersectionWktSRID") Integer intersectionWktSRID,
             @Param("outputColumn") List<String> outputColumn);
 
+    /**
+     * 计算wkt包含table中的数据,返回table id
+     *
+     * @param tableName
+     * @param tableIds
+     * @param ewkt
+     * @return
+     */
+    List<String> containsTableWkt(
+            @Param("tableName") String tableName,
+            @Param("tableIds") List<String> tableIds,
+            @Param("ewkt") String ewkt);
 
+    /**
+     * 计算TableA包含TableB中的数据,返回tableB id
+     *
+     * @param tableNameA
+     * @param tableNameB
+     * @param tableIdsB
+     * @return
+     */
+    List<String> containsTables(
+            @Param("tableNameA") String tableNameA,
+            @Param("tableNameB") String tableNameB,
+            @Param("tableIdsB") List<String> tableIdsB);
 }

+ 26 - 3
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/AnalyseUtilsDBService.java

@@ -1,6 +1,6 @@
 package com.onemap.analyse.service;
 
-import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 import java.util.Map;
@@ -20,7 +20,7 @@ public interface AnalyseUtilsDBService {
      * @param intersectsWktSRID wkt对应的坐标
      * @return
      */
-    public List<String> intersectsTableWkt(
+    List<String> intersectsTableWkt(
             String inputTable,
             Integer inputSRID,
             List<String> inputIds,
@@ -38,7 +38,7 @@ public interface AnalyseUtilsDBService {
      * @param outputColumn        返回TABLE表中的字段,先已返回,ID,GEOM(交集的),geom_area (交集的)
      * @return
      */
-    public List<Map> intersectionTableWkt(
+    List<Map> intersectionTableWkt(
             String inputTable,
             Integer inputSRID,
             List<String> inputIds,
@@ -46,5 +46,28 @@ public interface AnalyseUtilsDBService {
             Integer intersectionWktSRID,
             List<String> outputColumn);
 
+    /**
+     * 计算wkt包含table中的数据,返回table id
+     *
+     * @param inputTable      TABLE名称(vater空间中表)
+     * @param inputIds        查询数据集ID
+     * @param containsWkt     wkt
+     * @return
+     */
+    List<String> containsTableWkt(
+            String inputTable,
+            List<String> inputIds,
+            String containsWkt);
 
+    /**
+     * 计算TableA包含TableB中的数据,返回tableB id
+     *
+     * @param inputTableA
+     * @param inputIdsB
+     * @return
+     */
+    List<String> containsTables(
+            String inputTableA,
+            String inputTableB,
+            List<String> inputIdsB);
 }

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

@@ -5,6 +5,7 @@ import com.onemap.analyse.service.AnalyseUtilsDBService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -21,6 +22,16 @@ public class AnalyseUtilsDBServiceImpl implements AnalyseUtilsDBService {
 
     @Override
     public List<Map> intersectionTableWkt(String inputTable, Integer inputSRID, List<String> inputIds, String intersectionWkt, Integer intersectionWktSRID, List<String> outputColumn) {
-       return analyseUtilsDBMapper.intersectionTableWkt(inputTable, inputSRID, inputIds, intersectionWkt, intersectionWktSRID, outputColumn);
+        return analyseUtilsDBMapper.intersectionTableWkt(inputTable, inputSRID, inputIds, intersectionWkt, intersectionWktSRID, outputColumn);
+    }
+
+    @Override
+    public List<String> containsTableWkt(String inputTable, List<String> inputIds, String containsWkt) {
+        return analyseUtilsDBMapper.containsTableWkt(inputTable, inputIds, containsWkt);
+    }
+
+    @Override
+    public List<String> containsTables(String inputTableA, String inputTableB, List<String> inputIdsB) {
+        return analyseUtilsDBMapper.containsTables(inputTableA, inputTableB, inputIdsB);
     }
 }

+ 29 - 0
onemap-modules/onemap-analyse/src/main/resources/mapper/oracle/fzss/AnalyseUtilsDBMapper.xml

@@ -87,4 +87,33 @@
         )ret_tab
     </select>
 
+
+    <select id="containsTableWkt" resultType="String">
+        SELECT id
+        FROM "${tableName}" inTbale
+        where public.st_contains(
+        inTbale.geom,
+        public.st_geomfromewkt(#{ewkt})
+        )
+        <if test="inputIds != null and inputIds.size()>0 ">
+            and (inTbale.id)::VARCHAR in
+            <foreach collection="inputIds" item="id" open="(" close=")" separator=",">#{id}</foreach>
+        </if>
+    </select>
+
+
+    <select id="containsTables" resultType="String">
+        SELECT id
+        FROM "${tableNameB}" tableB
+        WHERE 1=1
+        <if test="tableIdsB != null and tableIdsB.size()>0 ">
+            and (tableB.id)::VARCHAR in
+            <foreach collection="inputIdsA" item="id" open="(" close=")" separator=",">#{id}</foreach>
+        </if>
+        AND EXISTS (
+        SELECT 1
+        FROM "${tableNameA}" as tableA
+        WHERE PUBLIC.st_contains(tableA.geom, tableB.geom)
+        )
+    </select>
 </mapper>