from osgeo import ogr import os # Get a Layer inShapefile = "states.shp" inDriver = ogr.GetDriverByName("ESRI Shapefile") inDataSource = inDriver.Open(inShapefile, 0) inLayer = inDataSource.GetLayer() # Collect all Geometry geomcol = ogr.Geometry(ogr.wkbGeometryCollection) for feature in inLayer: geomcol.AddGeometry(feature.GetGeometryRef()) # Calculate convex hull convexhull = geomcol.ConvexHull() # Save extent to a new Shapefile outShapefile = "states_convexhull.shp" outDriver = ogr.GetDriverByName("ESRI Shapefile") # Remove output shapefile if it already exists if os.path.exists(outShapefile): outDriver.DeleteDataSource(outShapefile) # Create the output shapefile outDataSource = outDriver.CreateDataSource(outShapefile) outLayer = outDataSource.CreateLayer("states_convexhull", geom_type=ogr.wkbPolygon) # Add an ID field idField = ogr.FieldDefn("id", ogr.OFTInteger) outLayer.CreateField(idField) # Create the feature and set values featureDefn = outLayer.GetLayerDefn() feature = ogr.Feature(featureDefn) feature.SetGeometry(convexhull) feature.SetField("id", 1) outLayer.CreateFeature(feature) # Close DataSource inDataSource.Destroy() outDataSource.Destroy()
保存所有几何体的凸壳从一个输入层到输出层
关注公众号
获取免费资源
Copyright © Since 2014.
开源地理空间基金会中文分会
吉ICP备05002032号
Powered by TorCMS