Reclasificación de ráster con GDAL?


8

Estoy buscando una herramienta del GDAL que pueda reclasificar un ráster que contenga múltiples valores discretos. Hasta ahora, he encontrado Reclasificar rásteres usando GDAL y Python ; sin embargo, parece que solo se pueden manejar valores únicos aquí.

¿Hay algo así como una herramienta nativa de la suite?

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

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"

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)

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.