虽然利用arcpy.PolygonToRaster_conversion可以将矢量文件转为栅格,但是arcpy的速度令人堪忧,有没有更快更好的办法呢?对于经常用python处理数据的人来说,会优先考虑用python来解决。百度一下“python 将矢量转栅格”,会有别人分享的一些代码,但是有些代码我自己使用后,发现一些bug。于是在他们的基础上,我对代码进行了优化和修改,封装成一个函数,经过自己数据的测试没问题,分享给大家。
import gdal
import ogr
import gdalconst
def Rasterize(input_shp,input_tif,output_tif,field,filed_type,NoValue=-9999):
"""
input_shp:需要转为栅格的矢量文件(矢量文件路径)
input_tif:模板栅格,用于读取地理变换信息、栅格大小,将其应用于新的栅格上
output_tif:输出栅格文件(栅格文件路径)
field:字符串,栅格值的字段
filed_type:栅格值类型,一般选择gdal.GDT_Int16,gdal.GDT_Int32,gdal.GDT_Float32,gdal.GDT_Float64等几种类型
NoValue:整型或浮点型,矢量空白区转换后的值
"""
data = gdal.Open(input_tif, gdalconst.GA_ReadOnly)
geo_transform = data.GetGeoTransform()
proj=data.GetProjection()
open_shp = ogr.Open(input_shp)
shp_ly = ope