From 636f52fc934cd4fdc61472d786dec14616b2f2fa Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 11 九月 2023 18:02:37 +0800
Subject: [PATCH] 修改栅格分析-1

---
 src/main/java/com/moon/server/service/data/RasterAnalysisService.java       |   30 +++++++++------
 src/main/resources/mapper/sys/LayerMapper.xml                               |    2 
 src/main/java/com/moon/server/service/data/ShuJianService.java              |    8 +++
 src/main/java/com/moon/server/controller/data/RasterAnalysisController.java |   51 -------------------------
 src/main/resources/application.yml                                          |    2 +
 5 files changed, 28 insertions(+), 65 deletions(-)

diff --git a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
index 91d3688..d1281b0 100644
--- a/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
+++ b/src/main/java/com/moon/server/controller/data/RasterAnalysisController.java
@@ -107,55 +107,4 @@
             return fail(ex, null);
         }
     }
-
-    @SysLog()
-    @ApiOperation(value = "涓嬭浇鐐瑰垎鏋�")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "wkt", value = "鐐筗KT", dataType = "String", example = "")
-    })
-    @GetMapping(value = "/downloadByPoint")
-    public void downloadByPoint(String wkt, HttpServletResponse res) {
-        try {
-            // ...
-
-            String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�";
-            WebHelper.download(filePath, "鏂囦欢鍚�", res);
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "涓嬭浇绾垮垎鏋�")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "wkt", value = "绾縒KT", dataType = "String", example = "")
-    })
-    @GetMapping(value = "/downloadByPolyline")
-    public void downloadByPolyline(String wkt, HttpServletResponse res) {
-        try {
-            // ...
-
-            String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�";
-            WebHelper.download(filePath, "鏂囦欢鍚�", res);
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-        }
-    }
-
-    @SysLog()
-    @ApiOperation(value = "涓嬭浇闈㈠垎鏋�")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "wkt", value = "闈KT", dataType = "String", example = "")
-    })
-    @GetMapping(value = "/downloadByPolygon")
-    public void downloadByPolygon(String wkt, HttpServletResponse res) {
-        try {
-            // ...
-
-            String filePath = "鐢熸垚鏂囦欢鐨勮矾寰�";
-            WebHelper.download(filePath, "鏂囦欢鍚�", res);
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
-        }
-    }
 }
diff --git a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
index ae472e7..d443f94 100644
--- a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
+++ b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
@@ -133,20 +133,23 @@
         double[] transform = ds.GetGeoTransform();
         // double rotationX = transform[2]; double rotationY = transform[4]
         double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = transform[5];
+        double[] env = new double[4];
+        polyline.GetEnvelope(env);
 
-        double[] bounds = new double[4];
-        polyline.GetEnvelope(bounds);
-        double startX = bounds[0], endX = bounds[1], startY = bounds[2], endY = bounds[3];
+        int xMinPixel = (int) Math.floor((env[0] - minX) / pixelWidth);
+        int yMinPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight));
+        int xMaxPixel = (int) Math.floor((env[1] - minX) / pixelWidth);
+        int yMaxPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight));
 
         int bandCount = ds.getRasterCount();
-        int xStartPixel = (int) Math.floor((startX - minX) / pixelWidth);
-        int yStartPixel = (int) Math.floor((maxY - startY) / Math.abs(pixelHeight));
-        int xEndPixel = (int) Math.floor((endX - minX) / pixelWidth);
-        int yEndPixel = (int) Math.floor((maxY - endY) / Math.abs(pixelHeight));
+        int xMin = Math.min(xMinPixel, xMaxPixel);
+        int xMax = Math.max(xMinPixel, xMaxPixel);
+        int yMin = Math.min(yMinPixel, yMaxPixel);
+        int yMax = Math.max(yMinPixel, yMaxPixel);
 
         List<Double> list = new ArrayList<>();
-        for (int y = Math.min(yStartPixel, yEndPixel); y <= Math.max(yStartPixel, yEndPixel); y++) {
-            for (int x = Math.min(xStartPixel, xEndPixel); x <= Math.max(xStartPixel, xEndPixel); x++) {
+        for (int y = yMin; y <= yMax; y++) {
+            for (int x = xMin; x <= xMax; x++) {
                 Geometry point = new Geometry(ogr.wkbPoint);
                 point.AddPoint(minX + pixelWidth * x, maxY - pixelHeight * y);
                 if (polyline.Contains(point)) {
@@ -173,9 +176,9 @@
         polygon.GetEnvelope(env);
 
         int xMinPixel = (int) Math.floor((env[0] - minX) / pixelWidth);
-        int yMinPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight));
+        int yMinPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight));
         int xMaxPixel = (int) Math.floor((env[1] - minX) / pixelWidth);
-        int yMaxPixel = (int) Math.floor((maxY - env[3]) / Math.abs(pixelHeight));
+        int yMaxPixel = (int) Math.floor((maxY - env[2]) / Math.abs(pixelHeight));
 
         int bandCount = ds.getRasterCount();
         int geoWidth = Math.abs(xMaxPixel - xMinPixel);
@@ -225,8 +228,11 @@
      * 澶勭悊缁撴灉
      */
     private void processResult(List<Double> rs, AnalysisResultEntity entity) {
-        double avg = rs.stream().mapToDouble(Double::valueOf).average().getAsDouble();
+        if (null == rs || rs.isEmpty()) {
+            return;
+        }
 
+        double avg = rs.stream().mapToDouble(Double::valueOf).average().getAsDouble();
         entity.setMin(Collections.min(rs));
         entity.setMax(Collections.max(rs));
         entity.setAvg(avg);
diff --git a/src/main/java/com/moon/server/service/data/ShuJianService.java b/src/main/java/com/moon/server/service/data/ShuJianService.java
index e56fec5..d4021c5 100644
--- a/src/main/java/com/moon/server/service/data/ShuJianService.java
+++ b/src/main/java/com/moon/server/service/data/ShuJianService.java
@@ -45,6 +45,12 @@
     @Value("${shujian.path}")
     String sjPath;
 
+    @Value("${shujian.domName}")
+    String domName;
+
+    @Value("${shujian.demName}")
+    String demName;
+
     @Resource
     ResService resService;
 
@@ -319,7 +325,7 @@
      * 鍒涘缓鍥惧眰
      */
     private LayerEntity createLayerEntity(ResEntity resEntity, Integer category) {
-        Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? "DOM" : "DEM");
+        Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? domName : demName);
         Integer orderNum = layerService.selectMaxOrderNumByPid(pid);
         LayerEntity layer = layerService.selectById(pid);
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 570d4fe..e570f4e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -124,6 +124,8 @@
   url1: http://172.16.2.10:50001
   url5: http://172.16.2.10:50005
   path: share/YQData/upload/
+  domName: 鑷姩鍙戝竷褰卞儚鍥惧眰缁�
+  demName: 鑷姩鍙戝竷楂樼▼鍥惧眰缁�
 
 # 绯荤粺閰嶇疆
 sys:
diff --git a/src/main/resources/mapper/sys/LayerMapper.xml b/src/main/resources/mapper/sys/LayerMapper.xml
index 3fa6425..a80aafc 100644
--- a/src/main/resources/mapper/sys/LayerMapper.xml
+++ b/src/main/resources/mapper/sys/LayerMapper.xml
@@ -72,7 +72,7 @@
         select id from lf.sys_dir where name = #{name};
     </select>
 
-    <select id="selectOrderNumByPid" resultType="java.lang.Integer">
+    <select id="selectMaxOrderNumByPid" resultType="java.lang.Integer">
         select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = #{pid};
     </select>
 

--
Gitblit v1.9.3