Explorar o código

本地添加锐角顶点去除

gushoubang hai 7 meses
pai
achega
bf0e57a696

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

@@ -1,5 +1,6 @@
 package com.onemap.analyse.service;
 package com.onemap.analyse.service;
 
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
@@ -39,4 +40,6 @@ public interface ITableDateService {
     List<String> getTableNames(String schema, String startWith);
     List<String> getTableNames(String schema, String startWith);
 
 
     void delElongatedPolygon(String tableName, float minArea, float elongationRatio);
     void delElongatedPolygon(String tableName, float minArea, float elongationRatio);
+
+    void delSmallAnglePolygon(Map<String,Object> map) throws JsonProcessingException;
 }
 }

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

@@ -206,10 +206,21 @@ public class FzssServiceImpl implements IFzssService {
             }
             }
         }
         }
 
 
-        // 4.根据因子切割地块
+        // 4.0根据因子切割地块
         String rawTable = factorClip(taskId, temporaryTable, fzxzCalc.getFactorUseList(), ewkt);
         String rawTable = factorClip(taskId, temporaryTable, fzxzCalc.getFactorUseList(), ewkt);
         if (rawTable.equals("")) return RequestResult.error("区域筛选条件筛选未找到符合条件数据!", null);
         if (rawTable.equals("")) return RequestResult.error("区域筛选条件筛选未找到符合条件数据!", null);
 
 
+        // 4.1 删除多边形的小尾巴
+        Map<String, Object> delSmallAngel = new HashMap<>();
+        delSmallAngel.put("功能","去除多边形尾巴");
+        delSmallAngel.put("输入表",rawTable);
+        String resName = StringUtils.getTemporaryTableName();
+        delSmallAngel.put("输出表",resName);
+        delSmallAngel.put("容差",0.01);
+        delSmallAngel.put("去除平直线上的顶点","否");
+        tableDateService.delSmallAnglePolygon(delSmallAngel);
+        rawTable=resName;
+
         // 5.切割地块,面积筛选
         // 5.切割地块,面积筛选
         tableDateService.delElongatedPolygon(rawTable, 1500, 0.01f);
         tableDateService.delElongatedPolygon(rawTable, 1500, 0.01f);
 
 

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

@@ -1,11 +1,13 @@
 package com.onemap.analyse.service.impl;
 package com.onemap.analyse.service.impl;
 
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableLengthVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.RawTableVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
 import com.onemap.analyse.domain.vo.TableNameIdsVo;
 import com.onemap.analyse.domain.vo.TargetTableVo;
 import com.onemap.analyse.domain.vo.TargetTableVo;
 import com.onemap.analyse.mapper.vector.TableDataMapper;
 import com.onemap.analyse.mapper.vector.TableDataMapper;
 import com.onemap.analyse.service.ITableDateService;
 import com.onemap.analyse.service.ITableDateService;
+import com.onemap.analyse.utils.JsonUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -59,8 +61,7 @@ public class TableDateServiceImpl implements ITableDateService {
 
 
     @Override
     @Override
     public void delInIds(String tableName, List<String> ids) {
     public void delInIds(String tableName, List<String> ids) {
-        if (ids.size() != 0)
-            tableDataMapper.delInIds(tableName, ids);
+        if (ids.size() != 0) tableDataMapper.delInIds(tableName, ids);
     }
     }
 
 
     @Override
     @Override
@@ -92,11 +93,22 @@ public class TableDateServiceImpl implements ITableDateService {
      * @param tableName
      * @param tableName
      * @param minArea         小于该面积的地块将被删除
      * @param minArea         小于该面积的地块将被删除
      * @param elongationRatio 面积 (A) 和周长 (P) 之间的比率 (T = 4π(A/P²)) T小于该值的地块将被删除
      * @param elongationRatio 面积 (A) 和周长 (P) 之间的比率 (T = 4π(A/P²)) T小于该值的地块将被删除
-     * https://pro.arcgis.com/zh-cn/pro-app/2.9/help/data/validating-data/polygon-sliver.htm
+     *                        https://pro.arcgis.com/zh-cn/pro-app/2.9/help/data/validating-data/polygon-sliver.htm
      */
      */
     @Override
     @Override
     public void delElongatedPolygon(String tableName, float minArea, float elongationRatio) {
     public void delElongatedPolygon(String tableName, float minArea, float elongationRatio) {
-         tableDataMapper.delElongatedPolygon(tableName, minArea, elongationRatio);
+        tableDataMapper.delElongatedPolygon(tableName, minArea, elongationRatio);
+    }
+
+    /**
+     * 删除多边形中的小角度
+     *
+     * @param map {"功能": "去除多边形尾巴","输入表": "vector.\"smallAngle\"", "输出表": "vector.\"result\"","容差": 0.01,"去除平直线上的顶点": "否" }
+     */
+    @Override
+    public void delSmallAnglePolygon(Map<String, Object> map) throws JsonProcessingException {
+        String jsonArg = JsonUtils.toJson(map);
+        tableDataMapper.delSmallAnglePolygon(jsonArg);
     }
     }
 
 
     @Override
     @Override

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

@@ -24,7 +24,7 @@ feign:
 -- base.t_fzss_zhxz_file
 -- base.t_fzss_zhxz_file
 
 
 -- 添加函数,去除小锐角
 -- 添加函数,去除小锐角
-drop function remove_smallangle;
+DROP FUNCTION IF EXISTS remove_smallangle;
 
 
 CREATE OR REPLACE FUNCTION  remove_smallangle(jsonarg json)
 CREATE OR REPLACE FUNCTION  remove_smallangle(jsonarg json)
 RETURNS VARCHAR AS $$
 RETURNS VARCHAR AS $$