From 03d4fc607b5df795a4319120036ef138cde70896 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 19 九月 2023 20:00:23 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/data/RasterService.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/lf/server/service/data/RasterService.java b/src/main/java/com/lf/server/service/data/RasterService.java index b5117d7..72cb5c5 100644 --- a/src/main/java/com/lf/server/service/data/RasterService.java +++ b/src/main/java/com/lf/server/service/data/RasterService.java @@ -1,11 +1,15 @@ package com.lf.server.service.data; +import com.lf.server.entity.all.StaticData; import com.lf.server.helper.StringHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconst; +import org.gdal.ogr.Geometry; +import org.gdal.ogr.ogr; +import org.gdal.osr.SpatialReference; import org.springframework.stereotype.Service; import java.io.File; @@ -17,7 +21,25 @@ */ @Service public class RasterService { + private SpatialReference sr4326; + + private SpatialReference sr4490; + private final static Log log = LogFactory.getLog(RasterService.class); + + /** + * 鍒濆鍖栫┖闂村弬鑰� + */ + public void initSr() { + if (null == sr4326) { + sr4326 = new SpatialReference(); + sr4326.ImportFromEPSG(StaticData.I4326); + } + if (null == sr4490) { + sr4490 = new SpatialReference(); + sr4490.ImportFromEPSG(StaticData.I4490); + } + } /** * 鑾峰彇鏍呮牸鏁版嵁鐨凟PSG缂栫爜 @@ -55,4 +77,27 @@ } } } + + /** + * 鏌ヨ鍧愭爣杞崲 + */ + public Object csTransform(double x, double y, int epsg) { + this.initSr(); + + SpatialReference srs = new SpatialReference(); + srs.ImportFromEPSG(epsg); + + Geometry point = new Geometry(ogr.wkbPoint); + point.AddPoint(x, y, 0); + point.AssignSpatialReference(srs); + + if (srs.GetName().contains(StaticData.CGCS2000)) { + point.TransformTo(sr4490); + } else { + point.TransformTo(sr4326); + } + point.SwapXY(); + + return new double[]{point.GetX(), point.GetY()}; + } } -- Gitblit v1.9.3