条件函数 (空间分析)

摘要

针对输入栅格的每个输入像元执行 if/else 条件评估。

了解有关使用条件函数工具执行条件评估的详细信息

插图

Con illustration
OutRas = Con(InRas1, 40, 30, "Value >= 2")

用法

语法

Con (in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
参数说明数据类型
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

代码示例

Con 示例 1(Python 窗口)

在本例中,输出中将保留在输入条件栅格数据值大于 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")
Con 示例 2(Python 窗口)

在此例中,原始值将被保留在除 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")
Con 示例 3(Python 窗口)

在此例中,两个不同的栅格用于创建条件栅格。

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 示例 4(Python 窗口)

在本例中,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")
Con 示例 5(独立脚本)

在本例中,如果输入条件栅格数据值大于或等于 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")

环境

相关主题

许可信息

ArcView: 需要 Spatial Analyst
ArcEditor: 需要 Spatial Analyst
ArcInfo: 需要 Spatial Analyst

7/10/2012