月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-09-20 5a814b2e1d688588ec03cf8372a3309ff81049e8
添加坐标转换接口
已修改1个文件
25 ■■■■■ 文件已修改
src/main/java/com/moon/server/helper/GeoHelper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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};
    }
}