From 3d415216b8d8f101ab543dbbf22e313507a402ca Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期二, 23 十二月 2025 12:14:30 +0800
Subject: [PATCH] 优化了地块边界管理页面

---
 src/dikuai/Dikuanbianjipage.java |   70 +++++++++++++++++++++++++++++++---
 1 files changed, 63 insertions(+), 7 deletions(-)

diff --git a/src/dikuai/Dikuanbianjipage.java b/src/dikuai/Dikuanbianjipage.java
index f3d7ff8..c6a9525 100644
--- a/src/dikuai/Dikuanbianjipage.java
+++ b/src/dikuai/Dikuanbianjipage.java
@@ -7,6 +7,7 @@
 import java.util.List;
 
 import bianjie.bianjieguihua2;
+import bianjie.Bianjieyouhuatoxy;
 import publicway.Fuzhibutton;
 import zhuye.Coordinate;
 import zhuye.Shouye;
@@ -14,7 +15,7 @@
 import java.util.Date;
 
 /**
- * 鍦板潡杈圭晫绠$悊椤甸潰
+ * 杈圭晫绠$悊椤甸潰
  * 鏄剧ず锛氬師濮嬭竟鐣屽潗鏍囷紙缁忕含搴︺�侀珮绋嬶級銆佸師濮嬭竟鐣孹Y锛堢浉瀵逛簬鍩哄噯绔欙級銆佷互鍙婂彲缂栬緫鐨勪紭鍖栧悗杈圭晫鍧愭爣
  */
 public class Dikuanbianjipage extends JDialog {
@@ -106,16 +107,33 @@
                 return;
             }
             
-            // 浠庡師濮嬭竟鐣孹Y鍧愭爣鏂囨湰鍩熻幏鍙栬緭鍏�
-            String inputXY = rawXYArea.getText();
-            if (inputXY == null || inputXY.trim().isEmpty() || "-1".equals(inputXY.trim())) {
-                JOptionPane.showMessageDialog(this, "鍘熷杈圭晫XY鍧愭爣涓虹┖锛屾棤娉曚紭鍖�", "閿欒", JOptionPane.ERROR_MESSAGE);
+            // 鑾峰彇鍩哄噯绔欏潗鏍囦綔涓哄師鐐�
+            String originStr = dikuai.getBaseStationCoordinates();
+            if (originStr == null || originStr.trim().isEmpty() || "-1".equals(originStr.trim())) {
+                JOptionPane.showMessageDialog(this, "鍩哄噯绔欏潗鏍囦负绌猴紝鏃犳硶浼樺寲", "閿欒", JOptionPane.ERROR_MESSAGE);
+                return;
+            }
+            
+            // 鑾峰彇鍘熷杈圭晫鍧愭爣
+            String boundaryStr = dikuai.getBoundaryOriginalCoordinates();
+            if (boundaryStr == null || boundaryStr.trim().isEmpty() || "-1".equals(boundaryStr.trim())) {
+                JOptionPane.showMessageDialog(this, "鍘熷杈圭晫鍧愭爣涓虹┖锛屾棤娉曚紭鍖�", "閿欒", JOptionPane.ERROR_MESSAGE);
                 return;
             }
 
             try {
-                // 璋冪敤浼樺寲绠楁硶锛堢洿鎺ヤ娇鐢╔Y鍧愭爣瀛楃涓诧級
-                String optimized = bianjieguihua2.optimizeBoundaryXYString(inputXY.trim());
+                // 璋冪敤Bianjieyouhuatoxy鐨刼ptimizeBoundary鏂规硶
+                // boundaryStr鏍煎紡锛氱含搴�(搴﹀垎),绾害鏂瑰悜,缁忓害(搴﹀垎),缁忓害鏂瑰悜,楂樼▼;...
+                // 闇�瑕佽浆鎹负optimizeBoundary鏈熸湜鐨勬牸寮忥細lat(搴﹀垎),lon(搴﹀垎);...
+                String convertedBoundaryStr = convertBoundaryFormat(boundaryStr.trim());
+                String optimized = Bianjieyouhuatoxy.optimizeBoundary(originStr.trim(), convertedBoundaryStr);
+                
+                // 妫�鏌ユ槸鍚︽湁閿欒
+                if (optimized != null && optimized.startsWith("ERROR:")) {
+                    JOptionPane.showMessageDialog(this, "浼樺寲澶辫触: " + optimized.substring(6), "閿欒", JOptionPane.ERROR_MESSAGE);
+                    return;
+                }
+                
                 optTextArea.setText(optimized);
                 JOptionPane.showMessageDialog(this, "杈圭晫浼樺寲瀹屾垚", "鎻愮ず", JOptionPane.INFORMATION_MESSAGE);
             } catch (Exception ex) {
@@ -299,4 +317,42 @@
         double degreeMinutes = degrees * 100.0 + minutes;
         return String.format(java.util.Locale.US, "%.8f", degreeMinutes);
     }
+    
+    /**
+     * 灏哹oundaryOriginalCoordinates鏍煎紡杞崲涓簅ptimizeBoundary鏈熸湜鐨勬牸寮�
+     * 杈撳叆鏍煎紡锛氱含搴�(搴﹀垎),绾害鏂瑰悜,缁忓害(搴﹀垎),缁忓害鏂瑰悜,楂樼▼;...
+     * 杈撳嚭鏍煎紡锛氱含搴�(搴﹀垎),缁忓害(搴﹀垎);...
+     * 
+     * @param boundaryOriginalCoordinates 鍘熷杈圭晫鍧愭爣瀛楃涓�
+     * @return 杞崲鍚庣殑鏍煎紡瀛楃涓�
+     */
+    private String convertBoundaryFormat(String boundaryOriginalCoordinates) {
+        if (boundaryOriginalCoordinates == null || boundaryOriginalCoordinates.trim().isEmpty() || "-1".equals(boundaryOriginalCoordinates.trim())) {
+            return "";
+        }
+        
+        StringBuilder sb = new StringBuilder();
+        String[] points = boundaryOriginalCoordinates.split(";");
+        
+        for (String point : points) {
+            if (point == null || point.trim().isEmpty()) {
+                continue;
+            }
+            
+            String[] parts = point.trim().split("[,锛宂");
+            // 鏍煎紡锛氱含搴�(搴﹀垎),绾害鏂瑰悜,缁忓害(搴﹀垎),缁忓害鏂瑰悜,楂樼▼
+            // 鑷冲皯闇�瑕�4涓瓧娈碉紙绾害銆佹柟鍚戙�佺粡搴︺�佹柟鍚戯級锛岄珮绋嬫槸鍙�夌殑
+            if (parts.length >= 4) {
+                String lat = parts[0].trim();
+                String lon = parts[2].trim();
+                
+                if (sb.length() > 0) {
+                    sb.append(";");
+                }
+                sb.append(lat).append(",").append(lon);
+            }
+        }
+        
+        return sb.toString();
+    }
 }

--
Gitblit v1.10.0