代码如下.......
def shapefile_create_buffer(
_input_shapefile, buffer_result_shapefile, buffer_distance):
"""
_input_shapefil需要缓冲的矢量文件
buffer_result_shapefile缓冲后的矢量文件
buffer_distance缓冲距离,单位:米
"""
input_ds = ogr.Open(_input_shapefile)
input_lyr = input_ds.GetLayer()
spatial = input_lyr.GetSpatialRef()
shp_driver = ogr.GetDriverByName('ESRI Shapefile')
if os.path.exists(buffer_result_shapefile):
shp_driver.DeleteDataSource(buffer_result_shapefile)
outputBufferds = shp_driver.CreateDataSource(buffer_result_shapefile)
buffer_result_shapefile_name = os.path.basename(
buffer_result_shapefile).split(".")[0]
bufferlyr = outputBufferds.CreateLayer(
buffer_result_shapefile_name, spatial, geom_type=ogr.wkbPolygon)
featureDefn = bufferlyr.GetLayerDefn()
for _feature in input_lyr:
ingeom = _feature.GetGeometryRef()
geomBuffer = ingeom.Buffer(buffer_distance)
outFeature = ogr.Feature(featureDefn)
outFeature.SetGeometry(geomBuffer)
bufferlyr.CreateFeature(outFeature)