条件函数 (空间分析)
插图
用法
-
如果真栅格数据或可选假栅格数据为浮点型,则输出栅格数据也将为浮点型。如果真表达式和可选假栅格数据均为整型,则输出栅格数据也将为整型。
-
如果表达式的评估结果非零,则将被视为 True。
-
如果未指定输入条件为假时所取的栅格数据或常量值,则将为表达式结果不为 True 的那些像元分配 NoData。
-
如果 NoData 不满足表达式,像元不会接收输入条件为假时所取的栅格数据值;像元值仍是 NoData。
在 Python 中,您可避免使用 {where_clause},其通过将“地图代数”表达式用作输入条件栅格数据来指定“值”字段。
例如,以下表达式:
- Con("elev", 0, 1, "value > 1000")
- Con(Raster("elev") > 1000, 0, 1)
有关详细信息,请参阅下列代码实例或构建复杂语句。
要在 Python 中使用 {where_clause},应以引号括起来。例如,"Population > 5000"。有关使用 Python 指定查询的详细信息,请参阅帮助。
-
逻辑表达式的最大长度为 4,096 个字符。
语法
参数 | 说明 | 数据类型 |
in_conditional_raster | 表示所需条件结果为真或假的输入栅格。 可以是整型或浮点型。 | Raster Layer |
in_true_raster_or_constant |
条件为真时,其值作为输出像元值的输入。 可为整型或浮点型栅格,或为常数值。 | Raster Layer | Constant |
in_false_raster_or_constant (可选) |
条件为假时,其值作为输出像元值的输入。 可为整型或浮点型栅格,或为常数值。 | Raster Layer | Constant |
where_clause (可选) | 决定输入像元为真或假的逻辑表达式。 表达式遵循 SQL 表达式的一般格式。 有关在 ArcGIS 中使用的查询表达式的 SQL 参考以及使用 Python 指定查询的详细信息,请查阅文档。 | SQL Expression |
返回值
名称 | 说明 | 数据类型 |
out_raster |
输出栅格。 | Raster |
代码示例
在本例中,输出中将保留在输入条件栅格数据值大于 2000 的原始值,在输入条件栅格数据值小于或等于 2000 的原始值将在输出中保存为 NoData。
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")
在此例中,原始值将被保留在除 Nodata 外的输出中,其将被用 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")
在此例中,两个不同的栅格用于创建条件栅格。
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")
在本例中,Con 中将使用多个 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")
在本例中,如果输入条件栅格数据值大于或等于 1500,则输出值将为 1;如果输入条件栅格数据值小于 1500,则输出值将为 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")