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