gdal 2.1 Rasterize

非 Y 不嫁゛ 提交于 2019-12-19 21:04:43

问题


Is it possible to set the data type (Byte, Float32) when using gdal.Rasterize in gdal 2.1? Currently, I use gdal.Translate to convert to Byte, but this is inefficient.

tif = my/target.tif
shp = my/source.shp
tiftemp = my/temp/solution.tif
rasterizeOptions = gdal.RasterizeOptions(xRes=20, yRes=20, allTouched=True etc.)
gdal.Rasterize(tiftemp, shp, options=rasterizeOptions)
#translate to Byte data type (not supported by Rasterize?)
gdal.Translate(tif, tiftemp, outputType=gdal.GDT_Byte,
                       creationOptions=['COMPRESS=PACKBITS')

I am aware that it is possible to use

subprocess.check_call('gdal_rasterize', '-ot', 'byte' ...)

but I would prefer to avoid this if possible. Any ideas?


回答1:


This has been fixed in GDAL 2.1.3. Previously the data type was hard-coded and not exposed in the Python bindings. See https://trac.osgeo.org/gdal/ticket/6710.




回答2:


If you are in gdal 2.1.2, use gdal.RasterizeOptions() as if you were using it on the command line:

opts_str = '-ot Byte'
rast_opts = gdal.RasterizeOptions(options=opts_str)


来源:https://stackoverflow.com/questions/38399632/gdal-2-1-rasterize

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!