From 3417cf014a65765e02696c1d121ce58b2b4a8aed Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 08 四月 2025 15:55:36 +0800
Subject: [PATCH] 修改pom.xml

---
 src/main/java/com/se/simu/helper/ComHelper.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/se/simu/helper/ComHelper.java b/src/main/java/com/se/simu/helper/ComHelper.java
index 057cb54..c625043 100644
--- a/src/main/java/com/se/simu/helper/ComHelper.java
+++ b/src/main/java/com/se/simu/helper/ComHelper.java
@@ -4,6 +4,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.gdal.gdal.Band;
 import org.gdal.gdal.Dataset;
+import org.gdal.gdal.WarpOptions;
 import org.gdal.gdal.gdal;
 import org.gdal.gdalconst.gdalconst;
 import org.gdal.ogr.Geometry;
@@ -18,6 +19,8 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Vector;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 @Slf4j
 @SuppressWarnings("ALL")
@@ -39,6 +42,32 @@
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
         }
+    }
+
+    public static void Resample(Dataset ds, String dest, int width, int height, LayerDto layer) {
+        Vector<String> vector = new Vector<>();
+        //vector.add("-s_srs");
+        //vector.add("EPSG:" + 4548);
+        //vector.add("-t_srs");
+        //vector.add("EPSG:" + 4326);
+        vector.add("-ts");
+        vector.add("" + width);
+        vector.add("" + height);
+        //vector.add("-te");
+        //vector.add("" + layer.getExtension().getMinx());
+        //vector.add("" + layer.getExtension().getMiny());
+        //vector.add("" + layer.getExtension().getMaxx());
+        //vector.add("" + layer.getExtension().getMaxy());
+        //vector.add("-te_srs");
+        //vector.add("EPSG:" + 4326);
+        vector.add("-r");
+        vector.add("bilinear");
+        vector.add("-of");
+        vector.add("GTiff");
+        WarpOptions warpOptions = new WarpOptions(vector);
+
+        Dataset destDs = gdal.Warp(dest, new Dataset[]{ds}, warpOptions);
+        destDs.delete();
     }
 
     public static BuildingDto intersects(ResultDto dto, double x, double y) {
@@ -182,4 +211,40 @@
             if (null != ds) ds.delete();
         }
     }
+
+    private List<PointDto> getValues2(Dataset ds, Geometry g, double[] transform, int xSize, int ySize) {
+        double[] env = new double[4];
+        g.GetEnvelope(env);
+
+        int startX = (int) Math.floor((env[0] - transform[0]) / transform[1]);
+        int endX = (int) Math.floor((env[1] - transform[0]) / transform[1]);
+        int startY = (int) Math.floor((transform[3] - env[3]) / Math.abs(transform[5]));
+        int endY = (int) Math.floor((transform[3] - env[2]) / Math.abs(transform[5]));
+        if (startX < 0) startX = 0;
+        if (startY < 0) startY = 0;
+        if (endX > ds.getRasterXSize()) endX = ds.getRasterXSize();
+        if (endY > ds.getRasterYSize()) endY = ds.getRasterYSize();
+        if (endX - startX < 1 || endY - startY < 1) return null;
+
+        List<XYDto> xyList = new ArrayList<>();
+        for (int x = startX; x <= endX; x++) {
+            for (int y = startY; y <= endY; y++) {
+                xyList.add(new XYDto(x, y));
+            }
+        }
+
+        List<PointDto> points = new CopyOnWriteArrayList<>();
+        xyList.stream().forEach(xy -> {
+            double X = transform[0] + xy.getX() * transform[1] + xy.getY() * transform[2];
+            double Y = transform[3] + xy.getX() * transform[4] + xy.getY() * transform[5];
+
+            float[] values = new float[1];
+            ds.GetRasterBand(1).ReadRaster(xy.getX(), xy.getY(), 1, 1, values);
+            if (Float.isNaN(values[0]) || values[0] < -999 || !ComHelper.isContains(g, X, Y)) return;
+
+            points.add(new PointDto(X, Y, values[0]));
+        });
+
+        return points;
+    }
 }

--
Gitblit v1.9.3