瀏覽代碼

添加多个面获取外界矩形的接口

DESKTOP-2K9OVK9\siwei 4 月之前
父節點
當前提交
b363e0315e

+ 9 - 1
onemap-modules/onemap-file/src/main/java/com/onemap/file/controller/SysFileController.java

@@ -2,6 +2,7 @@ package com.onemap.file.controller;
 
 import com.onemap.common.core.domain.UploadZipDTO;
 import com.onemap.common.core.web.domain.RequestResult;
+import com.onemap.file.domain.EwktTotEnvelopeVo;
 import com.onemap.file.domain.TUploadGeomDTO;
 import com.onemap.file.service.ISpaceFileRecordService;
 import com.onemap.file.service.SaveFileService;
@@ -393,5 +394,12 @@ public class SysFileController {
         }
     }
 
-
+    @PostMapping("/read/ewkt/to/envelope")
+    public RequestResult readEwktTotEnvelope(@RequestBody EwktTotEnvelopeVo vo) {
+        try {
+            return RequestResult.success("执行成功", spaceFileRecordService.readEwktTotEnvelope(vo));
+        } catch (Exception e) {
+            return RequestResult.error("执行失败");
+        }
+    }
 }

+ 5 - 1
onemap-modules/onemap-file/src/main/java/com/onemap/file/service/ISpaceFileRecordService.java

@@ -1,9 +1,11 @@
 package com.onemap.file.service;
 
 import com.onemap.common.core.web.domain.RequestResult;
+import com.onemap.file.domain.EwktTotEnvelopeVo;
 import com.onemap.file.domain.SpaceFileRecordDTO;
 import com.onemap.file.domain.TUploadGeomDTO;
 import com.onemap.file.domain.TUploadGeomDetailsDTO;
+import org.locationtech.jts.io.ParseException;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
@@ -96,5 +98,7 @@ public interface ISpaceFileRecordService {
      */
     String uploadAbsolutePath(String file);
 
-    Map<String,Object> readTifToPng(String file);
+    Map<String, Object> readTifToPng(String file);
+
+    String readEwktTotEnvelope(EwktTotEnvelopeVo vo) throws Exception;
 }

+ 28 - 10
onemap-modules/onemap-file/src/main/java/com/onemap/file/service/impl/SpaceFileRecordServiceImpl.java

@@ -6,6 +6,7 @@ import com.onemap.common.core.utils.StringUtils;
 import com.onemap.common.core.web.domain.AjaxResult;
 import com.onemap.common.core.web.domain.RequestResult;
 import com.onemap.common.security.utils.SecurityUtils;
+import com.onemap.file.domain.EwktTotEnvelopeVo;
 import com.onemap.file.domain.SpaceFileRecordDTO;
 import com.onemap.file.domain.TUploadGeomDTO;
 import com.onemap.file.domain.TUploadGeomDetailsDTO;
@@ -25,24 +26,19 @@ import com.onemap.system.api.domain.RawTableVo;
 import com.onemap.file.domain.res.ApiTTable;
 import com.onemap.file.domain.res.ApiTTableFiled;
 import com.onemap.file.domain.res.TableDataVo;
-import org.apache.commons.io.IOUtils;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.GeometryCollection;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.io.ParseException;
+import org.locationtech.jts.io.WKTReader;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.util.UriUtils;
 
 import javax.annotation.Resource;
 import javax.annotation.processing.FilerException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -423,4 +419,26 @@ public class SpaceFileRecordServiceImpl implements ISpaceFileRecordService {
         }
         return retMap;
     }
+
+    @Override
+    public String readEwktTotEnvelope(EwktTotEnvelopeVo vo) throws ParseException {
+        if (vo == null) {
+            return "";
+        }
+        GeometryFactory geometryFactory = new GeometryFactory();
+        List<Geometry> list = new ArrayList<>();
+        for (String wkt : vo.getEwkt()) {
+            if (StringUtils.isNotEmpty(wkt)) {
+                wkt = wkt.replaceFirst("^SRID=\\d+;", "");
+                Geometry geometry_d0 = new WKTReader().read(wkt);
+                list.add(geometry_d0.getEnvelope());
+            }
+        }
+        if (list.isEmpty()) {
+            return "";
+        }
+        Geometry[] integersArray2 = list.toArray(new Geometry[list.size()]);
+        GeometryCollection geometryCollection = geometryFactory.createGeometryCollection(integersArray2);
+        return geometryCollection.union().getEnvelope().toText();
+    }
 }