From dd9c2d6758376ee81262d27970efac424d49b2ba Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 27 九月 2024 13:23:00 +0800 Subject: [PATCH] 11 --- src/main/java/com/se/simu/helper/ShpHelper.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 46 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/se/simu/helper/ShpHelper.java b/src/main/java/com/se/simu/helper/ShpHelper.java index 21f7f21..c3bcf6c 100644 --- a/src/main/java/com/se/simu/helper/ShpHelper.java +++ b/src/main/java/com/se/simu/helper/ShpHelper.java @@ -7,6 +7,7 @@ import com.se.simu.domain.dto.GeLayer; import lombok.extern.slf4j.Slf4j; import org.gdal.ogr.*; +import org.gdal.osr.SpatialReference; import java.sql.Timestamp; import java.time.LocalDateTime; @@ -33,6 +34,51 @@ return options; } + public static boolean createShp(String filePath, SpatialReference sr, Double minx, Double miny, Double maxx, Double maxy) { + Driver driver = null; + DataSource dataSource = null; + Layer layer = null; + try { + driver = ogr.GetDriverByName("ESRI shapefile"); + if (null == driver) return false; + + dataSource = driver.CreateDataSource(filePath, null); + if (null == dataSource) return false; + + layer = dataSource.CreateLayer(FileUtil.getName(filePath), sr, ogr.wkbPolygon, getOptions()); + if (null == layer) return false; + + Feature f = new Feature(layer.GetLayerDefn()); + Geometry g = createPolygon(sr, minx, miny, maxx, maxy); + f.SetGeometry(g); + + layer.CreateFeature(f); + + return true; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return false; + } finally { + GdalHelper.delete(layer, dataSource, driver); + } + } + + private static Geometry createPolygon(SpatialReference sr, Double minx, Double miny, Double maxx, Double maxy) { + // + + Geometry ring = new Geometry(ogr.wkbLinearRing); + ring.AddPoint_2D(minx, maxy); + ring.AddPoint_2D(maxx, maxy); + ring.AddPoint_2D(maxx, miny); + ring.AddPoint_2D(minx, miny); + ring.AddPoint_2D(minx, maxy); + + Geometry poly = new Geometry(ogr.wkbPolygon); + poly.AddGeometry(ring); + + return poly; + } + public static boolean createShp(String filePath, GeLayer geLayer) { Driver driver = null; DataSource dataSource = null; -- Gitblit v1.9.3