From b05352cd656b55aadba4ac4326a29fdda2107108 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 15 九月 2023 10:11:14 +0800
Subject: [PATCH] 栅格分析-线分析,添加距离累计

---
 src/main/java/com/moon/server/service/data/RasterAnalysisService.java |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

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 80be306..a2866b4 100644
--- a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
+++ b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
@@ -144,22 +144,29 @@
         // double rotationX = transform[2]; double rotationY = transform[4]
         double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = transform[5];
 
+        double len = 0;
         int bandCount = ds.getRasterCount();
         double lineDis = getPolylineDistance(geo);
         double distance = lineDis / Math.max(geo.GetPointCount(), size);
 
         List<double[]> points = getPointsByDistance(geo, distance);
-        for (double[] xy : points) {
+        for (int i = 0, c = points.size(); i < c; i++) {
+            double[] xy = points.get(i);
+            if (i > 0) {
+                double[] p = points.get(i - 1);
+                len += GeoHelper.getDistance(p[0], p[1], xy[0], xy[1]);
+            }
+
             int xPixel = (int) Math.floor((xy[0] - minX) / pixelWidth);
             int yPixel = (int) Math.floor((maxY - xy[1]) / Math.abs(pixelHeight));
 
             List<Double> vals = new ArrayList<>();
-            for (int i = 1; i <= bandCount; i++) {
+            for (int j = 1; j <= bandCount; j++) {
                 double[] pixelValues = new double[1];
-                ds.GetRasterBand(i).ReadRaster(xPixel, yPixel, 1, 1, pixelValues);
+                ds.GetRasterBand(j).ReadRaster(xPixel, yPixel, 1, 1, pixelValues);
                 vals.add(pixelValues[0]);
             }
-            entity.addPoint(xy[0], xy[1], vals);
+            entity.addPoint(xy[0], xy[1], len, vals);
         }
     }
 

--
Gitblit v1.9.3