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")