From dbd56c635c64d92dd23c7f4c9227f84f77bbd82b Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 16 十月 2024 18:00:27 +0800
Subject: [PATCH] 1

---
 src/main/java/com/se/simu/helper/GdalHelper.java |   90 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 88 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/se/simu/helper/GdalHelper.java b/src/main/java/com/se/simu/helper/GdalHelper.java
index 451314d..1601ea1 100644
--- a/src/main/java/com/se/simu/helper/GdalHelper.java
+++ b/src/main/java/com/se/simu/helper/GdalHelper.java
@@ -5,7 +5,7 @@
 import org.gdal.gdal.Dataset;
 import org.gdal.gdal.gdal;
 import org.gdal.gdalconst.gdalconst;
-import org.gdal.ogr.ogr;
+import org.gdal.ogr.*;
 import org.gdal.osr.SpatialReference;
 import org.gdal.osr.osr;
 
@@ -66,7 +66,7 @@
 
     /**
      * 鍒濆鍖栧潗鏍囩郴
-     *
+     * <p>
      * https://blog.csdn.net/CallmeAdo/article/details/127558139
      */
     public static void initSr() {
@@ -113,4 +113,90 @@
             }
         }
     }
+
+    /**
+     * 閿�姣佽祫婧�
+     */
+    public static void delete(Layer layer, DataSource dataSource, Driver driver) {
+        try {
+            if (null != layer) {
+                layer.delete();
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+        try {
+            if (null != dataSource) {
+                dataSource.delete();
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+        try {
+            if (null != driver) {
+                driver.delete();
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+        }
+    }
+
+    public static Geometry getMinPoint(Dataset ds)
+    {
+        double[] transform = new double[6];
+        ds.GetGeoTransform(transform);
+
+        double xMin = transform[0];
+        double yMin = transform[3] - ds.getRasterYSize() * transform[1];
+
+        Geometry point = new Geometry(ogr.wkbPoint);
+        point.AddPoint(xMin, yMin, 0);
+
+        return Transform(ds, point);
+    }
+
+    public static Geometry getMaxPoint(Dataset ds)
+    {
+        /*
+         * transform[0] 宸︿笂瑙抶鍧愭爣
+         * transform[1] 涓滆タ鏂瑰悜鍒嗚鲸鐜�
+         * transform[2] 鏃嬭浆瑙掑害, 0琛ㄧず鍥惧儚 "鍖楁柟鏈濅笂"
+         *
+         * transform[3] 宸︿笂瑙抷鍧愭爣
+         * transform[4] 鏃嬭浆瑙掑害, 0琛ㄧず鍥惧儚 "鍖楁柟鏈濅笂"
+         * transform[5] 鍗楀寳鏂瑰悜鍒嗚鲸鐜�
+         */
+        double[] transform = new double[6];
+        ds.GetGeoTransform(transform);
+
+        double xMax = transform[0] + (ds.getRasterYSize() * transform[1]);
+        double yMax = transform[3];
+
+        Geometry point = new Geometry(ogr.wkbPoint);
+        point.AddPoint(xMax, yMax, 0);
+
+        return Transform(ds, point);
+    }
+
+    public static Geometry Transform(Dataset ds, Geometry point)
+    {
+        point.AssignSpatialReference(ds.GetSpatialRef());
+        if (ds.GetSpatialRef().IsGeographic() > 0)
+        {
+            return point;
+        }
+
+        String srsName = ds.GetSpatialRef().GetName();
+        //if (srsName.Contains(CGCS2000))
+        //{
+        //    point.TransformTo(sr4490);
+        //}
+        //else
+        //{
+        point.TransformTo(SR4326);
+        //}
+        //point.SwapXY();
+
+        return point;
+    }
 }

--
Gitblit v1.9.3