您可以使用Python中的gdal_polygonize
函数来为每个栅格创建多边形,无论其值如何。以下是一个示例代码:
import gdal
import ogr
import osr
# 输入栅格图像路径
input_raster = 'input.tif'
# 打开栅格图像
ds = gdal.Open(input_raster)
if ds is None:
print('无法打开栅格图像!')
sys.exit(1)
# 获取栅格图像的波段
band = ds.GetRasterBand(1)
# 获取栅格图像的驱动程序
driver = ogr.GetDriverByName('ESRI Shapefile')
# 创建输出多边形图层
output_shapefile = 'output.shp'
data_source = driver.CreateDataSource(output_shapefile)
srs = osr.SpatialReference()
srs.ImportFromWkt(ds.GetProjection())
layer = data_source.CreateLayer('polygonized', srs, ogr.wkbPolygon)
# 定义输出多边形图层的字段
field_defn = ogr.FieldDefn('DN', ogr.OFTInteger)
layer.CreateField(field_defn)
# 使用gdal_polygonize函数进行多边形化处理
gdal.Polygonize(band, None, layer, 0, [], callback=None)
# 释放资源
band = None
ds = None
data_source = None
在上述代码中,input_raster
是输入栅格图像的路径,output_shapefile
是输出多边形图层的路径。gdal.Open
函数用于打开栅格图像,GetRasterBand
方法用于获取栅格图像的波段。ogr.GetDriverByName
函数用于获取输出多边形图层的驱动程序,CreateDataSource
方法用于创建输出多边形图层,CreateLayer
方法用于创建图层。FieldDefn
方法用于定义输出多边形图层的字段,CreateField
方法用于创建字段。最后,使用gdal.Polygonize
函数进行多边形化处理。
请确保您已经安装了GDAL库,并且将输入栅格图像替换为您自己的图像路径。