我在python中使用Polygonize函数遇到麻烦。可以在此处找到此食谱的示例。
我的代码的相关部分是:
sourceRaster = gdal.Open('myraster.tif')
band = sourceRaster.GetRasterBand(1)
bandArray = band.ReadAsArray()
outShapefile = "polygonized"
driver = ogr.GetDriverByName("ESRI Shapefile")
if os.path.exists(outShapefile+".shp"):
driver.DeleteDataSource(outShapefile+".shp")
outDatasource = driver.CreateDataSource(outShapefile+ ".shp")
outLayer = outDatasource.CreateLayer("polygonized", srs=None)
gdal.Polygonize( band, None, outLayer, -1, [], callback=None )
outDatasource.Destroy()
sourceRaster = None
我知道乐队有相关信息,这是一个片段bandArray
:
array([[ 4., 4., 3., 3., 3., 2., 2., 2., 2., 3., 3., 3., 3.,
3., 3., 3., 3., 4., 4., 4., 4., 4., 4., 4., 4., 4.,
4., 4., 4., 4.],
当我在QGIS中打开属性表时,它是空的:
编辑:
使用Raster-> Conversion-> Polygonize工具,该转换在QGIS中工作正常
栅格化的屏幕截图:
以及来自QGIS工具的最终转换的屏幕截图:
我正在Windows 7 GDAL 1.10.0-3版上使用Enthought发行版
问题是我无法使用GDAL和Cookbook示例在python中对栅格进行多边形处理,我可以在QGIS GUI中对同一栅格进行多边形处理而没有问题
您的栅格看起来像什么?它真的包含多边形吗?如果改用gdal_polygonize.py可以工作吗?
—
BradHards 2014年
编辑以添加QGIS中工作流程的屏幕截图
—
camdenl 2014年
这里的实际问题是什么?
—
Fezter
添加了特定的问题
—
camdenl 2014年
我有一个类似的问题(正在创建空白shapefile),并且创建字段没有帮助。我做错的是,在调用多边形之前,我没有关闭代码中的shapefile。您确实在示例中将其关闭,我只是将其发布以供他人参考。
—
斯蒂芬妮2015年