Me pregunto si existe un método para realizar una función similar a la herramienta Con de Arc, utilizando opciones de código abierto en python. Tengo dos rásters, uno que muestra ubicaciones de nubes y el otro es sólo una banda landsat. Si un valor es >x en el raster de nubes, quiero tomar el pixel de la banda landsat, y si es
Respuestas
¿Demasiados anuncios?Con es un cálculo raster condicional, por lo tanto podría hacerse como una serie de pasos o directamente con una calculadora raster/funciones que soporten condicionales. Hay varias opciones ya cubiertas en otras preguntas aquí en SE. Esto puede ser en realidad un duplicado de uno, pero voy a enlazarlos ya que usted está pidiendo cualquier opción de código abierto basado en python y estos son específico a QGIS, SAGA y R:
- ¿Cuál es el equivalente de arcpy "Con" en QGIS y/o R raster-package?
- Sustitución de valores raster en un raster por otro raster en QGIS ... ¿cómo?
- Sintaxis del calculador raster de QGIS
Como se menciona en algunas de esas respuestas, QGIS con el RasterCalc plugin ( no la calculadora de trama por defecto) admite sentencias condicionales.
Además de QGIS, también puede utilizar OTB que implementa la muParser y pueden envolverse en Python. Es muy eficiente.
#!/usr/bin/python
# Import the otb applications package
import otbApplication
# The following line creates an instance of the BandMath application
BandMath = otbApplication.Registry.CreateApplication("BandMath")
# The following lines set all the application parameters:
BandMath.SetParameterStringList("il", ['cloud_r.tif', 'landsat_nir.tif'])
BandMath.SetParameterString("out", "apTvUtBandMathOutput.tif")
BandMath.SetParameterString("exp", "(im1b1>1)?(im2b1):(0)")
# The following line execute the application
BandMath.ExecuteAndWriteOutput()
Otra alternativa es gdal_calc.py que puede utilizarse como aquí (se puede lanzar con subprocess.call() desde Python )
gdal_calc.py -A cloud.tif -B landsat_NIR.tif --outfile=out_NIR.tif --calc="B*(A>1)"
nota: Asumo aquí que tu "x" es 1 , pero puedes cambiar el valor