| | |
| | | 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; |
| | |
| | | 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; |