From 5a814b2e1d688588ec03cf8372a3309ff81049e8 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期三, 20 九月 2023 16:27:11 +0800
Subject: [PATCH] 添加坐标转换接口

---
 src/main/java/com/moon/server/helper/GeoHelper.java |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/moon/server/helper/GeoHelper.java b/src/main/java/com/moon/server/helper/GeoHelper.java
index 3af89e1..faafbff 100644
--- a/src/main/java/com/moon/server/helper/GeoHelper.java
+++ b/src/main/java/com/moon/server/helper/GeoHelper.java
@@ -5,9 +5,14 @@
 import org.apache.commons.logging.LogFactory;
 import org.gdal.osr.SpatialReference;
 import org.geotools.geometry.DirectPosition2D;
+import org.geotools.geometry.jts.JTS;
 import org.geotools.referencing.CRS;
 import org.geotools.referencing.GeodeticCalculator;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.io.WKTReader;
+import org.opengis.referencing.crs.CRSAuthorityFactory;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.MathTransform;
 
 import java.awt.geom.Point2D;
 
@@ -119,4 +124,24 @@
 
         return gc.getDestinationGeographicPoint();
     }
+
+    /**
+     * 鍧愭爣杞崲
+     */
+    public static double[] csTransform(double x, double y, int epsg) throws Exception {
+        CRSAuthorityFactory factory = CRS.getAuthorityFactory(true);
+        CoordinateReferenceSystem target = factory.createCoordinateReferenceSystem("EPSG:4326");
+
+        CoordinateReferenceSystem sourceCrs = CRS.decode("EPSG:" + epsg);
+        CoordinateReferenceSystem targetCrs = CRS.decode("EPSG:4326");
+        MathTransform transform = CRS.findMathTransform(sourceCrs, targetCrs, true);
+
+        WKTReader reader = new WKTReader();
+        Geometry geometry = reader.read("POINT (" + x + " " + y + ")");
+        geometry.setSRID(epsg);
+
+        Geometry geo = JTS.transform(geometry, transform);
+
+        return new double[]{geo.getCoordinate().x, geo.getCoordinate().y};
+    }
 }

--
Gitblit v1.9.3