Suite

Soustraire des rasters à l'aide de la commande gdal_calculate ?


Comment soustraire deux rasters à l'aide de la commande gdal_calculate ?

Notez que gdal_calc est différent de gdal_calculate.py.

Les rasters que j'utilise ont des dimensions différentes.


Je viens de découvrir comment faire cela avec gdal_calc.py - pour résoudre les problèmes avec les fichiers de différentes dimensions (et résolutions), vous pouvez utiliser un VRT.

gdalbuildvrt -separate combine.vrt dem1.tif dem2.tif gdal_calc.py -A combine.vrt -A_band=1 -B combine.vrt -B_band=2 --calc="A-B" --outfile diff.tif

La syntaxe de base est similaire àgdal_calc.py

c'est à dire.

gdal_calculate -a a.tif -b b.tif --calc="a - b" --outfile c.tif

Si vos rasters d'entrée ne sont pas signés (c'est-à-dire Byte ou UInt16, etc.) et que le résultat peut contenir des valeurs négatives, vous devez spécifiquement convertir en un type signé :

gdal_calculate -a a.tif -b b.tif --calc="Int16(a) - b" --outfile c.tif

Si vos rasters sont multicanaux, vous devez spécifier la bande (sauf si vous souhaitez une sortie multicanal)

gdal_calculate -a a.tif -b b.tif --calc="Int16(a[0]) - b[0]" --outfile c.tif

Si vos rasters ont défini des valeurs NoData, utilisez le--pas de donnéesdrapeau. Vous n'avez pas besoin de spécifier les valeurs NoData car le script les déterminera à partir des rasters :

gdal_calculate --nodata -a a.tif -b b.tif --calc="Int16(a) - b" --outfile c.tif

Sur la page d'aide, un exemple est donné :

gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"

C'est une addition, mais la soustraction est tout aussi simple :

gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="A-B"