From 92fd3ce2a44b27dd931ee68a0f604e1af6d1b498 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 11 九月 2023 10:21:34 +0800
Subject: [PATCH] 修改栅格分析-1

---
 src/main/java/com/moon/server/service/data/RasterAnalysisService.java |  148 ++++++++++++++++++++++++++++---------------------
 1 files changed, 85 insertions(+), 63 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 dad196e..fcd5f35 100644
--- a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
+++ b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java
@@ -1,5 +1,6 @@
 package com.moon.server.service.data;
 
+import com.moon.server.entity.data.AnalysisResultEntity;
 import org.gdal.gdal.Band;
 import org.gdal.gdal.Dataset;
 import org.gdal.gdal.WarpOptions;
@@ -15,79 +16,30 @@
 /**
  * 鏍呮牸鍒嗘瀽鏈嶅姟
  * @author LJW
- * @date 2023-9-1 6:16
+ * @date 2023-09-01 6:16
  */
 @Service
 public class RasterAnalysisService {
-    public static Dataset clipRaster(Dataset dataset, Geometry geometry) {
-        Vector<String> warpOptions = new Vector<>();
-        warpOptions.add("-crop_to_cutline");
-        warpOptions.add("-cutline");
-        warpOptions.add(geometry.ExportToWkt());
-        warpOptions.add("-dstalpha");
+    public List<AnalysisResultEntity> analysisPoint(String wkt, Integer pixel) {
+        List<AnalysisResultEntity> rs = new ArrayList<>();
+        //
 
-        return gdal.Warp("", new Dataset[]{dataset}, new WarpOptions(warpOptions));
+        return rs;
     }
 
-    public double[] processClippedDataByLine(String imagePath, String geometryString) {
-        // 娉ㄥ唽GDAL椹卞姩
-        gdal.AllRegister();
-        // 鎵撳紑鏍呮牸鍥惧儚鏁版嵁闆�
-        Dataset dataset = gdal.Open(imagePath);
-        if (dataset == null) {
-            throw new RuntimeException("Failed to open raster dataset.");
-        }
+    public List<AnalysisResultEntity> analysisPolyline(String wkt) {
+        List<AnalysisResultEntity> rs = new ArrayList<>();
+        //
 
-        Geometry geometry = Geometry.CreateFromWkt(geometryString);
+        return rs;
+    }
+    public List<AnalysisResultEntity> analysisPolygon(String wkt) {
+        List<AnalysisResultEntity> rs = new ArrayList<>();
+        //
 
-        Dataset clippedDataset = clipRaster(dataset, geometry);
-
-        int width = clippedDataset.GetRasterXSize();
-        int height = clippedDataset.GetRasterYSize();
-        int bandCount = clippedDataset.getRasterCount();
-
-        List<double[]> sum = new ArrayList<>();
-        for (int bandIndex = 1; bandIndex <= bandCount; bandIndex++) {
-            Band band = clippedDataset.GetRasterBand(bandIndex);
-
-            double[] pixelValues = new double[width * height];
-            band.ReadRaster(0, 0, width, height, pixelValues);
-
-            sum.add(pixelValues);
-        }
-
-        return calculateAverage(sum);
+        return rs;
     }
 
-    public double processClippedDataByPolygon(String imagePath, String geometryString) {
-        // 娉ㄥ唽GDAL椹卞姩
-        gdal.AllRegister();
-        // 鎵撳紑鏍呮牸鍥惧儚鏁版嵁闆�
-        Dataset dataset = gdal.Open(imagePath);
-        if (dataset == null) {
-            throw new RuntimeException("Failed to open raster dataset.");
-        }
-
-        Geometry geometry = Geometry.CreateFromWkt(geometryString);
-
-        Dataset clippedDataset = clipRaster(dataset, geometry);
-
-        int width = clippedDataset.GetRasterXSize();
-        int height = clippedDataset.GetRasterYSize();
-        int bandCount = clippedDataset.getRasterCount();
-
-        double[] bandSum = new double[bandCount];
-        for (int bandIndex = 1; bandIndex <= bandCount; bandIndex++) {
-            Band band = clippedDataset.GetRasterBand(bandIndex);
-
-            double[] pixelValues = new double[width * height];
-            band.ReadRaster(0, 0, width, height, pixelValues);
-
-            // 澶氭尝娈靛綊涓�鍖栧鐞�
-            bandSum[bandIndex - 1] = average(pixelValues);
-        }
-        return average(bandSum);
-    }
 
     public double processPoint(String imagePath, String geometryString, int size) {
         // 鎵撳紑鏍呮牸鍥惧儚鏁版嵁闆�
@@ -219,6 +171,76 @@
         return average(calculateAverage(sum));
     }
 
+    public static Dataset clipRaster(Dataset dataset, Geometry geometry) {
+        Vector<String> warpOptions = new Vector<>();
+        warpOptions.add("-crop_to_cutline");
+        warpOptions.add("-cutline");
+        warpOptions.add(geometry.ExportToWkt());
+        warpOptions.add("-dstalpha");
+
+        return gdal.Warp("", new Dataset[]{dataset}, new WarpOptions(warpOptions));
+    }
+
+    public double[] processClippedDataByLine(String imagePath, String geometryString) {
+        // 娉ㄥ唽GDAL椹卞姩
+        gdal.AllRegister();
+        // 鎵撳紑鏍呮牸鍥惧儚鏁版嵁闆�
+        Dataset dataset = gdal.Open(imagePath);
+        if (dataset == null) {
+            throw new RuntimeException("Failed to open raster dataset.");
+        }
+
+        Geometry geometry = Geometry.CreateFromWkt(geometryString);
+
+        Dataset clippedDataset = clipRaster(dataset, geometry);
+
+        int width = clippedDataset.GetRasterXSize();
+        int height = clippedDataset.GetRasterYSize();
+        int bandCount = clippedDataset.getRasterCount();
+
+        List<double[]> sum = new ArrayList<>();
+        for (int bandIndex = 1; bandIndex <= bandCount; bandIndex++) {
+            Band band = clippedDataset.GetRasterBand(bandIndex);
+
+            double[] pixelValues = new double[width * height];
+            band.ReadRaster(0, 0, width, height, pixelValues);
+
+            sum.add(pixelValues);
+        }
+
+        return calculateAverage(sum);
+    }
+
+    public double processClippedDataByPolygon(String imagePath, String geometryString) {
+        // 娉ㄥ唽GDAL椹卞姩
+        gdal.AllRegister();
+        // 鎵撳紑鏍呮牸鍥惧儚鏁版嵁闆�
+        Dataset dataset = gdal.Open(imagePath);
+        if (dataset == null) {
+            throw new RuntimeException("Failed to open raster dataset.");
+        }
+
+        Geometry geometry = Geometry.CreateFromWkt(geometryString);
+
+        Dataset clippedDataset = clipRaster(dataset, geometry);
+
+        int width = clippedDataset.GetRasterXSize();
+        int height = clippedDataset.GetRasterYSize();
+        int bandCount = clippedDataset.getRasterCount();
+
+        double[] bandSum = new double[bandCount];
+        for (int bandIndex = 1; bandIndex <= bandCount; bandIndex++) {
+            Band band = clippedDataset.GetRasterBand(bandIndex);
+
+            double[] pixelValues = new double[width * height];
+            band.ReadRaster(0, 0, width, height, pixelValues);
+
+            // 澶氭尝娈靛綊涓�鍖栧鐞�
+            bandSum[bandIndex - 1] = average(pixelValues);
+        }
+        return average(bandSum);
+    }
+
     public static double average(double[] values) {
         double sum = 0;
         for (double value : values) {

--
Gitblit v1.9.3