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