Evaluación condicional (Spatial Analyst)
Resumen
Realiza una evaluación condicional if/else en cada una de las celdas de entrada de un ráster de entrada.
Más información sobre cómo realizar una evaluación condicional mediante Evaluación condicional
Ilustración
Uso
-
Si el ráster verdadero o el ráster falso opcional son de punto flotante, el ráster de salida será de punto flotante. Si la expresión verdadera y el ráster falso opcional son enteros, el ráster de salida será entero.
-
Si la evaluación de la expresión es distinta de cero, se trata como Verdadera.
-
Si no se especifica ningún ráster falso ni constante de entrada, se asigna NoData a las celdas que no dan como resultado Verdadero en la expresión.
-
Si NoData no cumple con la expresión, no recibe el valor del ráster falso de entrada sino que permanece como NoData.
En Python, puede evitar usar una {where_clause} que especifica el campo Valor en lugar de usar la expresión Álgebra de mapa como Ráster condicional de entrada.
Por ejemplo, la siguiente expresión:
- Con("elev", 0, 1, "valor > 1000")
- Con(Ráster("elev") > 1000, 0, 1)
Para obtener más información, consulte las muestras de código siguientes o Crear declaraciones complejas.
Para usar una {where_clause} en Python, se debe encerrar entre comillas. Por ejemplo, " Población > 5000" . Puede consultar la ayuda para obtener más información sobre especificar una consulta en Python.
-
La longitud máxima de la expresión lógica es de 4.096 caracteres.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_conditional_raster | Ráster de entrada que representa el resultado verdadero o falso de la condición deseada. Puede ser de tipo entero o punto flotante. | Raster Layer |
in_true_raster_or_constant |
La entrada cuyos valores se utilizan como valores de la celda de salida si la condición es verdadera. Puede ser un ráster de punto flotante o entero, o un valor constante. | Raster Layer | Constant |
in_false_raster_or_constant (Opcional) |
La entrada cuyos valores se utilizan como valores de la celda de salida si la condición es falsa. Puede ser un ráster de punto flotante o entero, o un valor constante. | Raster Layer | Constant |
where_clause (Opcional) | La expresión lógica que determina cuáles de las celdas de entrada deben ser verdaderas o falsas. La expresión sigue la forma general de una expresión SQL. Consulte la documentación si desea obtener más información acerca de la referencia SQL para expresiones de consulta utilizadas en ArcGIS y acerca de la especificación de consultas en Python. | SQL Expression |
Valor de retorno
Nombre | Explicación | Tipo de datos |
out_raster |
El ráster de salida. | Raster |
Ejemplo de código
En este ejemplo, la salida mantendrá el valor original cuando el ráster condicional de entrada sea mayor que un valor de 2000, y un valor de NoData cuando no lo sea.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con("elevation", "elevation", "", "VALUE > 2000")
outCon.save("C:/sapyexamples/output/outcon.img")
# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(Raster("elevation") > 2000, "elevation")
outCon2.save("C:/sapyexamples/output/outcon2")
En este ejemplo el valor original se retendrá en la salida excepto para Nodata, que se reemplazará con el valor de 0.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con(IsNull("elevation"),0, "elevation")
outCon.save("C:/sapyexamples/output/outcon")
En este ejemplo dos rásteres diferentes se usan para crear el ráster condicional.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
inRaster1 = Raster("landuse")
inRaster2 = Raster("landuse2")
outCon = Con(((inRaster1 == 1) & (inRaster2 == 5)), inRaster1 + inRaster2, 99)
outCon.save("C:/sapyexamples/output/outcon")
En este ejemplo se usan varias herramientas Conde un Con.
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension = "Spatial"
env.workspace = "C:/sapyexamples/data"
inRas1 = Raster("inRaster")
outCon = Con(inRas1 < 45,1, Con((inRas1 >= 45) & (inRas1 < 47),2, Con((inRas1 >= 47) & (inRas1 < 49),3, Con(inRas1 >= 49,4))))
outCon.save("C:/sapyexamples/output/outcon")
En este ejemplo, cuando el valor del ráster condicional de entrada sea mayor o igual que 1500, el valor de salida será 1 y cuando sea menor que 1500, el valor de salida será 0.
# Name: Con_Ex_02.py
# Description: Performs a conditional if/else evaluation
# on each cell of an input raster.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = Raster("elevation")
inTrueRaster = 1
inFalseConstant = 0
whereClause = "VALUE >= 1500"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Con
outCon = Con(inRaster, inTrueRaster, inFalseConstant, whereClause)
# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(inRaster >= 1500, inTrueRaster, inFalseConstant)
# Save the outputs
outCon.save("C:/sapyexamples/output/outcon")
outCon2.save("C:/sapyexamples/output/outcon2")