From ed8c7a5effd0d423ce1118b680ecdca6fe732609 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 02 七月 2025 16:43:13 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.11.205:9000/r/P2022036_Service --- src/main/java/com/lf/server/service/data/RasterService.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 57 insertions(+), 1 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 72cb5c5..1870908 100644 --- a/src/main/java/com/lf/server/service/data/RasterService.java +++ b/src/main/java/com/lf/server/service/data/RasterService.java @@ -2,6 +2,7 @@ import com.lf.server.entity.all.StaticData; import com.lf.server.helper.StringHelper; +import com.lf.server.helper.WebHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.gdal.gdal.Dataset; @@ -10,6 +11,8 @@ import org.gdal.ogr.Geometry; import org.gdal.ogr.ogr; import org.gdal.osr.SpatialReference; +import org.osgeo.proj4j.*; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; @@ -24,6 +27,9 @@ private SpatialReference sr4326; private SpatialReference sr4490; + + @Value("${sys.gdal_path}") + private String gdalPath; private final static Log log = LogFactory.getLog(RasterService.class); @@ -79,7 +85,39 @@ } /** - * 鏌ヨ鍧愭爣杞崲 + * 浣跨敤GDAL鑾峰彇EPSG缂栫爜 + */ + public Integer getEpsgByGdal(String file) { + try { + File f = new File(file); + if (!f.exists() || f.isDirectory()) { + return null; + } + + String cmd = String.format("%s\\gdalsrsinfo.exe \"%s\" -o epsg", gdalPath, file); + String rs = WebHelper.exec2(cmd); + if (StringHelper.isEmpty(rs)) { + return null; + } + + String[] strs = rs.split("\n"); + for (String str : strs) { + if (str.contains("EPSG:")) { + String epsg = str.replace("EPSG:", ""); + + return Integer.parseInt(epsg); + } + } + + return 0; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } + } + + /** + * 鍧愭爣杞崲 */ public Object csTransform(double x, double y, int epsg) { this.initSr(); @@ -100,4 +138,22 @@ return new double[]{point.GetX(), point.GetY()}; } + + /** + * 鍧愭爣杞崲-浣跨敤Proj4j搴� + */ + public String transformByProj4j(double x, double y, int epsg) { + CRSFactory crsFactory = new CRSFactory(); + CoordinateReferenceSystem fromCrs = crsFactory.createFromName("EPSG:" + epsg); + CoordinateReferenceSystem toCrs = crsFactory.createFromName("EPSG:4326"); + + CoordinateTransformFactory ctf = new CoordinateTransformFactory(); + CoordinateTransform transform = ctf.createTransform(fromCrs, toCrs); + + ProjCoordinate fromCoord = new ProjCoordinate(x, y); + ProjCoordinate toCoord = new ProjCoordinate(); + transform.transform(fromCoord, toCoord); + + return String.format("%f,%f", toCoord.x, toCoord.y); + } } -- Gitblit v1.9.3