2016-07-15 1 views
3

Est-il possible de définir le type de données (Byte, Float32) lors de l'utilisation de gdal.Rasterize dans gdal 2.1? Actuellement, j'utilise gdal.Translate pour convertir en Byte, mais c'est inefficace.gdal 2.1 Rasteriser

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') 

Je suis conscient qu'il est possible d'utiliser

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

mais je préférerais éviter cela si possible. Des idées?

+1

Tant que 'tifftemp' - l'ensemble de données dans lequel vous pixellisation , est réglé sur le bon type, ça devrait aller. – Benjamin

+0

gdal.RasterizeOptions (outputType = gdal.GDT_Byte) déclenche TypeError: RasterizeOptions() a un argument de mot clé inattendu 'outputType' –

Répondre

2

Si vous êtes GDAL 2.1.2, utilisez gdal.RasterizeOptions() comme si vous utilisiez sur la ligne de commande:

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