想利用python对一张二值图进行矢量化,但是通过调用,发现并没有结果。请问一下各位大神,是不是哪里出问题了?输入图片保证为二值图,输出应该是shp文件。哪里出错了呢?感谢各位大神
#import gdal, ogr, osr
from osgeo import gdal
from osgeo import ogr
from osgeo import osr
import os
def raster2poly(raster, outshp):
inraster = gdal.Open(dist_on_skel.png) # 读取路径中的栅格数据
inband = inraster.GetRasterBand(1) # 这个波段就是最后想要转为矢量的波段,如果是单波段数据的话那就都是1
prj = osr.SpatialReference()
prj.ImportFromWkt(inraster.GetProjection()) # 读取栅格数据的投影信息,用来为后面生成的矢量做准备
drv = ogr.GetDriverByName("ESRI Shapefile")
if os.path.exists(outshp): # 若文件已经存在,则删除它继续重新做一遍
drv.DeleteDataSource(outshp)
Polygon = drv.CreateDataSource(outshp) # 创建一个目标文件
Poly_layer = Polygon.CreateLayer(raster[:-4], srs=prj, geom_type=ogr.wkbMultiPolygon) # 对shp文件创建一个图层,定义为多个面类
newField = ogr.FieldDefn('value', ogr.OFTReal) # 给目标shp文件添加一个字段,用来存储原始栅格的pixel value
Poly_layer.CreateField(newField)
gdal.FPolygonize(inband, None, Poly_layer, 0) # 核心函数,执行的就是栅格转矢量操作
Polygon.SyncToDisk()
Polygon = None