From ca8d3861b4e9a28beead77e81ecfa23d15d5eb5f Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期日, 29 九月 2024 09:36:42 +0800 Subject: [PATCH] 获取CPU核心数 --- src/main/java/com/se/simu/helper/ShpHelper.java | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 43 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/se/simu/helper/ShpHelper.java b/src/main/java/com/se/simu/helper/ShpHelper.java index c3bcf6c..98641c5 100644 --- a/src/main/java/com/se/simu/helper/ShpHelper.java +++ b/src/main/java/com/se/simu/helper/ShpHelper.java @@ -6,8 +6,11 @@ import com.se.simu.domain.dto.GeField; import com.se.simu.domain.dto.GeLayer; import lombok.extern.slf4j.Slf4j; +import org.gdal.gdal.Dataset; import org.gdal.ogr.*; +import org.gdal.osr.CoordinateTransformation; import org.gdal.osr.SpatialReference; +import org.gdal.osr.osr; import java.sql.Timestamp; import java.time.LocalDateTime; @@ -64,7 +67,15 @@ } private static Geometry createPolygon(SpatialReference sr, Double minx, Double miny, Double maxx, Double maxy) { - // + String epsg = sr.GetAuthorityCode(null); + if (!("4326".equals(epsg) || "4490".equals(epsg))) { + double[] dmin = fromWgs84(sr, minx, miny); + double[] dmax = fromWgs84(sr, maxx, maxy); + minx = dmin[0]; + miny = dmin[1]; + maxx = dmax[0]; + maxy = dmax[1]; + } Geometry ring = new Geometry(ogr.wkbLinearRing); ring.AddPoint_2D(minx, maxy); @@ -232,4 +243,35 @@ return ogr.OFTString; } } + + private String getEpsg(SpatialReference sr) { + return sr.GetAuthorityCode(null); + } + + /** + * 杞崲涓篧GS84鍧愭爣 + */ + public static Geometry toWgs84(SpatialReference sr, double x, double y) { + Geometry point = new Geometry(ogr.wkbPoint); + point.AssignSpatialReference(sr); + point.AddPoint(x, y); + + point.TransformTo(GdalHelper.SR4326); + //point.SwapXY(); + + return point; + } + + /** + * WGS84杞崲涓虹洰鏍囧潗鏍� + */ + public static double[] fromWgs84(SpatialReference sr, double x, double y) { + // https://blog.csdn.net/weixin_34910922/article/details/129208661 + CoordinateTransformation ct = new CoordinateTransformation(GdalHelper.SR4326, sr); + if (sr.IsProjected() != 1) { + sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER); + } + + return ct.TransformPoint(x, y); + } } -- Gitblit v1.9.3