From 6827092435f97dcd7bf557eb01711d24f437ce55 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 30 九月 2024 18:04:35 +0800 Subject: [PATCH] 1 --- src/main/java/com/se/simu/helper/GdalHelper.java | 64 ++++++++++++++++++++++++++++++-- 1 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/se/simu/helper/GdalHelper.java b/src/main/java/com/se/simu/helper/GdalHelper.java index 32ca4ff..e988d0e 100644 --- a/src/main/java/com/se/simu/helper/GdalHelper.java +++ b/src/main/java/com/se/simu/helper/GdalHelper.java @@ -5,10 +5,7 @@ import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconst; -import org.gdal.ogr.DataSource; -import org.gdal.ogr.Driver; -import org.gdal.ogr.Layer; -import org.gdal.ogr.ogr; +import org.gdal.ogr.*; import org.gdal.osr.SpatialReference; import org.gdal.osr.osr; @@ -143,4 +140,63 @@ log.error(ex.getMessage(), ex); } } + + public static Geometry getMinPoint(Dataset ds) + { + double[] transform = new double[6]; + ds.GetGeoTransform(transform); + + double xMin = transform[0]; + double yMin = transform[3] - ds.getRasterYSize() * transform[1]; + + Geometry point = new Geometry(ogr.wkbPoint); + point.AddPoint(xMin, yMin, 0); + + return Transform(ds, point); + } + + public static Geometry getMaxPoint(Dataset ds) + { + /* + * transform[0] 宸︿笂瑙抶鍧愭爣 + * transform[1] 涓滆タ鏂瑰悜鍒嗚鲸鐜� + * transform[2] 鏃嬭浆瑙掑害, 0琛ㄧず鍥惧儚 "鍖楁柟鏈濅笂" + * + * transform[3] 宸︿笂瑙抷鍧愭爣 + * transform[4] 鏃嬭浆瑙掑害, 0琛ㄧず鍥惧儚 "鍖楁柟鏈濅笂" + * transform[5] 鍗楀寳鏂瑰悜鍒嗚鲸鐜� + */ + double[] transform = new double[6]; + ds.GetGeoTransform(transform); + + double xMax = transform[0] + (ds.getRasterYSize() * transform[1]); + double yMax = transform[3]; + + Geometry point = new Geometry(ogr.wkbPoint); + point.AddPoint(xMax, yMax, 0); + + return Transform(ds, point); + } + + public static Geometry Transform(Dataset ds, Geometry point) + { + point.AssignSpatialReference(ds.GetSpatialRef()); + if (ds.GetSpatialRef().IsGeographic() > 0) + { + return point; + } + + String srsName = ds.GetSpatialRef().GetName(); + //if (srsName.Contains(CGCS2000)) + //{ + // point.TransformTo(sr4490); + //} + //else + //{ + point.TransformTo(SR4326); + //} + point.SwapXY(); + + return point; + } } -- Gitblit v1.9.3