From e9509391ffd3e90c64872836ad64d112a89a26a4 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 29 二月 2024 17:01:33 +0800
Subject: [PATCH] 计算多边形面积

---
 src/main/java/com/lf/server/service/sys/ReportService.java |   44 +++++++++++++++++++++++++++++---------------
 1 files changed, 29 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/lf/server/service/sys/ReportService.java b/src/main/java/com/lf/server/service/sys/ReportService.java
index cf96ef6..bfa119e 100644
--- a/src/main/java/com/lf/server/service/sys/ReportService.java
+++ b/src/main/java/com/lf/server/service/sys/ReportService.java
@@ -13,7 +13,11 @@
 import com.lf.server.mapper.sys.ReportMapper;
 import com.lf.server.service.all.RedisService;
 import com.lf.server.service.data.DownloadService;
+import com.lf.server.service.data.PublishService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.locationtech.jts.geom.Coordinate;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -28,6 +32,9 @@
  */
 @Service
 public class ReportService implements ReportMapper {
+    @Value("${sys.turfServer}")
+    private String turfServer;
+
     @Resource
     ReportMapper reportMapper;
 
@@ -42,6 +49,8 @@
 
     @Resource
     RedisService redisService;
+
+    private final static Log log = LogFactory.getLog(ReportService.class);
 
     @Override
     public Integer selectCount(String name, String code) {
@@ -153,26 +162,31 @@
                 continue;
             }
 
-            List<CoordinateEntity> ces = selectExplorationPoints(ce.getM3());
-            if (null == ces || ces.size() < 3) {
-                continue;
-            }
-
-            StringBuilder sb = new StringBuilder();
-            sb.append("[");
-            for (CoordinateEntity e : ces) {
-                sb.append(e.getX() + "," + e.getY() + ",");
-            }
-            sb.replace(sb.length() - 1, sb.length(), "]");
-
-            // double area = JtsHelper.calcAreaByPoints(ces)
-            double area = callJsFn(sb.toString());
+            double area = calcPolygonArea(ce.getM3());
             ce.setArea(area);
         }
     }
 
     /**
-     * 璋冪敤JS鏂规硶
+     * 璁$畻澶氳竟褰㈤潰绉�
+     */
+    private double calcPolygonArea(String code) {
+        try {
+            String url = turfServer + "/Call/CalcArea?code=" + code;
+            String str = RestHelper.get(url);
+            if (StringHelper.isEmpty(str)) {
+                return 0d;
+            }
+
+            return Double.parseDouble(str);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            return 0d;
+        }
+    }
+
+    /**
+     * 璋冪敤JS鏂规硶 *
      */
     private double callJsFn(String str) {
         String staticPath = PathHelper.getStaticPath();

--
Gitblit v1.9.3