En la documentación de gdal_calc se indica Calculadora ráster de línea de comando con sintaxis numpy . Más adelante hay algunos ejemplos donde en uno de ellos:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - significa establecer valores de cero e inferiores a nulo
Lamentablemente, no hay ejemplos de operadores lógicos como:
--calc = "A * (A> 0 y A> B)" - significa mantener A si A mayor cero y mayor B y establecer el resto en nulo
Basado en las funciones lógicas de Numpy / Scipy , esperaría escribir operadores lógicos como:
--calc = "A * lógico_y (A> 0, A> B)"
Intenté esto y parece funcionar, pero me gustaría estar seguro de que es correcto.
De manera similar si desea un mínimo de A y B:
--calc = "A * (A <= B) + B * (A> B)"
Solo puedes escribir:
--calc = "mínimo (A, B)"
Mi problema es que no puedo encontrar ningún libro de cocina para asegurarme de hacerlo bien. ¿Hay algún buen libro de cocina con ejemplos avanzados de lo que es y no es posible con gdal_calc?
Siguiendo con la respuesta de Benjamin, puede usar logical_or () o logical_and (). Ver http://docs.scipy.org/doc/numpy/reference/routines.logic.html . El siguiente ejemplo funcionó muy bien para mí. Esto establece todos los valores entre 177 y 185 (inclusive) en 0, que luego se trata como nodata.
fuente
Tenía un ráster donde los valores oscilaban entre -1 y 3, donde cero es un número válido. Tuve algunos problemas para hacer una expresión gdal_calc, así que hice esta solución rápida y furiosa.
fuente