Saltar al contenido

Sintaxis de calculadora ráster gdal_calc para operadores lógicos y otras funciones

Este post fue probado por nuestros expertos para asegurar la veracidad de esta división.

Solución:

En la fuente de gdal_calc.py, el cálculo se realiza directamente usando eval:

myResult = eval(opts.calc, global_namespace, local_namespace)

Eso sugeriría que cualquier expresión bien formada que también se evalúe en la línea de comando funcionará. De acuerdo con la documentación, puede usar la sintaxis gdalnumeric con +-/*y/o numpy funciones Puede probar sus funciones usando pequeñas matrices ficticias en el shell interactivo, luego use las mismas llamadas en gdal_calc.

Tenga en cuenta que encadenar varios numpy Es probable que las funciones produzcan matrices temporales en memoria que pueden aumentar sustancialmente el uso de la memoria, especialmente cuando se trata de imágenes grandes.

Puede consultar la documentación numpy para obtener una lista de todas las funciones: rutinas. Los que busca probablemente estén aquí: matemáticas o aquí: rutinas.lógica.

Aquí es de donde provienen funciones como mínimo, es solo que el espacio de nombres ya está importado. Realmente, es numpy.minimum, etc.

Siguiendo con la respuesta de Benjamin, puede usar logical_or() o logical_and(). Consulte 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 no data.

gdal_calc.py -A input.tif --outfile=output.tif --calc="A*logical_or(A<=177,A>=185)" --NoDataValue=0

Si te ha sido útil este artículo, te agradeceríamos que lo compartas con el resto entusiastas de la programación de este modo contrubuyes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *