2016-07-15 30 views
3

Ist es möglich, den Datentyp (Byte, Float32) bei Verwendung von gdal.Rasterize in gdal 2.1 zu setzen? Derzeit verwende ich gdal.Translate, um in Byte zu konvertieren, aber das ist ineffizient.gdal 2.1 Rasterize

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

Ich bin mir bewusst, dass es möglich

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

zu verwenden ist, aber ich würde es vorziehen, um dies zu vermeiden, wenn möglich. Irgendwelche Ideen?

+1

Solange 'tifftemp' - die Datenmenge in dem Sie Rastern , ist auf den richtigen Typ eingestellt, sollten Sie in Ordnung sein. – Benjamin

+0

gdal.RasterizeOptions (outputType = gdal.GDT_Byte) löst TypeError aus: RasterizeOptions() hat ein unerwartetes Schlüsselwortargument 'outputType' erhalten –

Antwort

2

Wenn Sie in gdal sind 2.1.2 verwenden gdal.RasterizeOptions(), als ob Sie es auf der Kommandozeile wurden:

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