From 55d23efc30f7db5ec2d9b8a0f04a268a10f3e855 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期二, 23 十二月 2025 16:53:25 +0800
Subject: [PATCH] 优化了地块管理页面

---
 src/dikuai/addzhangaiwu.java |   44 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/src/dikuai/addzhangaiwu.java b/src/dikuai/addzhangaiwu.java
index 1fa7376..f914ce4 100644
--- a/src/dikuai/addzhangaiwu.java
+++ b/src/dikuai/addzhangaiwu.java
@@ -52,12 +52,9 @@
 import zhuye.Coordinate;
 import zhuye.MapRenderer;
 import zhuye.Shouye;
-import zhangaiwu.AddDikuai;
 import zhangaiwu.Obstacledge;
 import zhangaiwu.yulanzhangaiwu;
-import bianjie.bianjieguihua2;
-import bianjie.ThreePointCircle;
-
+import bianjie.Bianjieyouhuatoxy;
 /**
  * 闅滅鐗╂柊澧�/缂栬緫瀵硅瘽妗嗐�傝璁¤瑷�鍙傝�� {@link AddDikuai}锛屾敮鎸侀�氳繃瀹炲湴缁樺埗閲囬泦闅滅鐗╁潗鏍囥��
  */
@@ -1886,14 +1883,13 @@
             List<Coordinate> savedCoordinates = new ArrayList<>(Coordinate.coordinates);
             
             try {
-                // 璁剧疆鍒板叏灞�鍧愭爣鍒楄〃
-                Coordinate.coordinates.clear();
-                Coordinate.coordinates.addAll(coordinateList);
+                // 鏋勫缓杈圭晫瀛楃涓诧紝鏍煎紡涓� "(lat1,lon1,alt1;lat2,lon2,alt2;...)"
+                String boundaryStr = buildBoundaryStringForOptimization(coordinateList);
                 
-                // 璋冪敤bianjieguihua2绠楁硶鐢熸垚浼樺寲鍚庣殑澶氳竟褰㈣竟鐣屽潗鏍�
-                String optimizedCoordsStr = bianjieguihua2.processCoordinateListAuto(baseStation);
+                // 璋冪敤 Bianjieyouhuatoxy.optimizeBoundary 鏂规硶鐢熸垚浼樺寲鍚庣殑澶氳竟褰㈣竟鐣屽潗鏍�
+                String optimizedCoordsStr = Bianjieyouhuatoxy.optimizeBoundary(baseStation, boundaryStr);
                 
-                if (optimizedCoordsStr == null || optimizedCoordsStr.trim().isEmpty()) {
+                if (optimizedCoordsStr == null || optimizedCoordsStr.trim().isEmpty() || optimizedCoordsStr.startsWith("ERROR")) {
                     JOptionPane.showMessageDialog(this, "鐢熸垚杈圭晫鍧愭爣澶辫触", "閿欒", JOptionPane.ERROR_MESSAGE);
                     return;
                 }
@@ -1971,6 +1967,34 @@
     }
     
     /**
+     * 鏋勫缓鐢ㄤ簬浼樺寲鐨勮竟鐣屽瓧绗︿覆锛屾牸寮忎负 "(lat1,lon1,alt1;lat2,lon2,alt2;...)"
+     * 鍏朵腑lat鍜宭on鏄害鍒嗘牸寮忥紙DMM鏍煎紡锛夛紝渚嬪 "3949.89151752"
+     */
+    private String buildBoundaryStringForOptimization(List<Coordinate> coordinates) {
+        if (coordinates == null || coordinates.isEmpty()) {
+            return "()";
+        }
+        StringBuilder sb = new StringBuilder("(");
+        java.text.DecimalFormat elevationFormat = new java.text.DecimalFormat("0.00");
+        for (int i = 0; i < coordinates.size(); i++) {
+            Coordinate coord = coordinates.get(i);
+            // Coordinate绫讳腑鐨刧etLatitude()鍜実etLongitude()宸茬粡杩斿洖搴﹀垎鏍煎紡锛圖MM鏍煎紡锛�
+            String latDMM = coord.getLatitude();
+            String lonDMM = coord.getLongitude();
+            double elevation = coord.getElevation();
+            
+            if (i > 0) {
+                sb.append(";");
+            }
+            sb.append(latDMM).append(",")
+              .append(lonDMM).append(",")
+              .append(elevationFormat.format(elevation));
+        }
+        sb.append(")");
+        return sb.toString();
+    }
+    
+    /**
      * 棰勮闅滅鐗╄竟鐣�
      */
     private void previewObstacleBoundary() {

--
Gitblit v1.10.0