Reclasificación de ráster con GDAL?

Respuestas:

8

gdal_calc Se puede utilizar para una reclasificación de muchas clases.

Por ejemplo, puede cambiar los valores por debajo (e iguales) de 12 a 10, los valores de 20, 30, 40, 50 permanecen igual y los valores entre 50 y 62 se cambian a 60:

  python gdal_calc.py -A input.tif --outfile=output.file --calc="10*(A<=12)+20*(A==20)+30*(A==30)+40*(A==40)+50*(A==50)+60*((A>50)*(A<=62))" --NoDataValue=0
Jot eN
fuente
Tenga en cuenta que la documentación de GDAL ( gdal.org/gdal_calc.html ) implica que gdal_calc.py funcionará con múltiples rásteres, ya que puede elegir cualquier letra mayúscula del alfabeto. No pude hacerlo funcionar con más de dos entradas a la vez. Aceptó más entradas sin producir un error, pero mis pruebas mostraron que solo se usaron las dos primeras.
David A
7

gdal_reclassify es una herramienta no oficial de Python, basada en enlaces GDAL de Python, capaz de reclasificar de acuerdo con varias clases de valores.

Requisitos:

python
numpy
gdal binaries
python-gdal bindings

Ejemplo:

python gdal_reclassify.py source_dataset.tif destination_dataset.tif -c "<30, <50, <80, ==130, <210" -r "1, 2, 3, 4, 5" -d 0 -n true -p "COMPRESS=LZW"
Antonio Falciano
fuente
3

Si está trabajando en un script de Python, use el .ReadAsArraymétodo Luego puedes reclasificar usando numpy.

import numpy as np
sample = np.random.randint(low = 0, high = 9, size =(5,5))
print(sample)
sample[sample == 4] = 40
sample[sample <= 2] = -20
print(sample)
RoperMaps
fuente
1
La desventaja de esto es que todo el ráster tiene que caber en la memoria. Con gdal_calc.py, la lectura del ráster en fragmentos más pequeños se maneja por usted.
Iamlukesky