2016-07-15 15 views
3

gdal 2.1でgdal.Rasterizeを使用する場合、データタイプ(Byte、Float32)を設定できますか?現在、私はgdal.Translateを使ってByteに変換していますが、これは非効率的です。gdal 2.1ラスタライズ

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

は、私は

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

を使用することが可能であることを承知していますが、私は可能であればこれを避けることを好むだろう。何か案は?

+1

限りtifftemp' 'として - あなたがラスタライズされたデータセットに正しいタイプに設定されていれば、うまくいくはずです。 – Benjamin

+0

gdal.RasterizeOptions(outputType = gdal.GDT_Byte)は、TypeErrorを発生させます:RasterizeOptions()は、予期しないキーワード引数 'outputType' –

答えて

2

あなたはGDAL 2.1.2である場合は、コマンドラインでそれを使用していたかのように、)(gdal.RasterizeOptionsを使用します。

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

これはGDAL 2.1.3で修正されています。以前は、データ型はハードコードされていて、Pythonバインディングで公開されていませんでした。 https://trac.osgeo.org/gdal/ticket/6710を参照してください。

関連する問題