826220679@qq.com
3 小时以前 69b40096cb0ae965f2a3e92672b880edfe7d04d2
src/bianjie/BoundaryAlgorithm.java
@@ -116,30 +116,21 @@
    // 高级处理边界数据方法
    public List<Coordinate> processBoundaryDataAdvanced(String gnggaData, double baseLat, double baseLon, 
                                                       BoundaryParameters params) {
        System.out.println("开始处理边界数据...");
        System.out.println("基准站坐标: " + baseLat + ", " + baseLon);
        System.out.println("参数: 间隔=" + params.interval + "米, 角度阈值=" + params.angleThreshold + "度");
        // 1. 解析GNGGA数据
        List<Coordinate> rawPoints = parseGNGGA(gnggaData, baseLat, baseLon);
        System.out.println("解析到原始点: " + rawPoints.size() + " 个");
        
        if (rawPoints.size() < 3) {
            System.out.println("数据点不足,无法形成边界");
            return new ArrayList<>();
        }
        
        // 2. 过滤和平滑数据
        List<Coordinate> filteredPoints = filterAndSmoothPoints(rawPoints);
        System.out.println("过滤后点: " + filteredPoints.size() + " 个");
        
        // 3. 高级边界点优化
        List<Coordinate> optimizedPoints = optimizeBoundaryPointsAdvanced(filteredPoints, params);
        System.out.println("优化后边界点: " + optimizedPoints.size() + " 个");
        
        // 4. 边界质量评估
        BoundaryQuality quality = evaluateBoundaryQuality(optimizedPoints);
        System.out.println(quality.toString());
        
        return optimizedPoints;
    }
@@ -167,7 +158,6 @@
        // 5. 自动选择预设场景
        selectPresetAutomatically(analysis);
        
        System.out.println(analysis.toString());
        return analysis;
    }
@@ -287,8 +277,6 @@
        } else {
            analysis.suggestedPreset = "复杂小区域";
        }
        System.out.println("自动场景选择得分: " + String.format("%.2f", score) + " -> " + analysis.suggestedPreset);
    }
    // 根据场景名称获取参数
@@ -312,7 +300,6 @@
        }
        
        String[] records = gnggaData.split("\\$GNGGA");
        System.out.println("找到GNGGA记录: " + (records.length - 1) + " 条");
        
        for (String record : records) {
            try {
@@ -325,7 +312,6 @@
                
                String[] fields = trimmedRecord.split(",");
                if (fields.length < 7) {
                    System.out.println("记录字段不足: " + trimmedRecord);
                    continue;
                }
                
@@ -334,12 +320,10 @@
                try {
                    fixStatus = Integer.parseInt(fields[6]);
                } catch (NumberFormatException e) {
                    System.out.println("定位状态格式错误: " + fields[6]);
                    continue;
                }
                
                if (fixStatus != 4) {
                    System.out.println("跳过非高精度定位点,状态: " + fixStatus);
                    continue;
                }
                
@@ -415,8 +399,6 @@
            double speed = calculateDistance(points.get(i-1), points.get(i));
            if (speed < 5.0) { // 最大合理速度为5米/秒
                filtered.add(points.get(i));
            } else {
                System.out.println("移除高速点: 速度=" + speed + "米/秒");
            }
        }
        
@@ -462,7 +444,6 @@
        
        // 1. 首先进行道格拉斯-普克算法简化
        List<Coordinate> simplified = douglasPeuckerSimplification(points, params.simplificationTolerance);
        System.out.println("道格拉斯-普克简化后: " + simplified.size() + " 个点");
        
        // 2. 基于距离和角度的进一步优化
        optimized.add(simplified.get(0));