设为空函数 (空间分析)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

摘要

“设为空函数”根据指定条件将所识别的像元位置设置为 NoData。 如果条件评估为真,则返回 NoData;如果条件评估为假,则返回由另一个栅格指定的值。

了解有关使用“设为空函数”将像元值设置为 NoData 的详细信息

插图

“设为空”图示
OutRas = SetNull(InRas1, InRas2, "Value = 4")

使用情况

  • 如果 where 子句的评估结果为真,则为输出栅格上的像元位置赋予 NoData。 如果评估结果为假,则输出栅格将由假栅格数据或常量值进行定义。

  • 如果未指定 where 子句,则只要条件栅格不为 0,则输出栅格将具有NoData。

  • 输入条件栅格不会影响输出数据类型是整型还是浮点型。 如果输入条件为假时所取的栅格数据(或常量值)包含浮点值,则输出栅格数据将为浮点型。 如果它包含所有整数值,则输出将是整数栅格。

  • 如果输入条件栅格(Python 中的 in_conditional_raster)是单波段栅格,并且输入条件为假时所取的栅格数据或常量值(Python 中的 in_false_raster_or_constant)栅格是常量,输出将是单波段栅格。

  • 如果两个输入都是多波段栅格,则输出将是多波段栅格。 如果假栅格输入为常量,则输出栅格也将是多波段的。 每个多波段输入中的波段数必须相同。

  • 该工具将使用来自其他输入的相应波段在条件栅格的每个波段上执行操作。 如果条件输入是多波段栅格,并且假栅格输入是常量,则该工具将使用多波段输入中每个波段的常量值执行操作。

  • 表达式使用 SQL 查询。 有关创建查询的详细信息,请参阅以下主题:

  • 要在 Python 中使用 {where_clause},应以引号括起来。 例如,"Value > 5000”

    有关使用 Python 指定查询的详细信息,请参阅帮助。

  • 逻辑表达式的最大长度为 4,096 个字符。

参数

标注说明数据类型
输入条件栅格数据

此输入栅格表示所需条件的 true 或 false 结果。

可为整型或浮点型。

Raster Layer
输入条件为假时所取的栅格数据或常量值

条件为 false 时,值将作为输出像元值的输入。

它可以是整型栅格、浮点型栅格或常量值。

Raster Layer; Constant
表达式
(可选)

此逻辑表达式用于确定为 true 或 false 的输入像元。

Where 子句遵循 SQL 表达式的一般格式。 如果您单击编辑 SQL 模式按钮 SQL 查询,则可以直接输入,例如 VALUE > 100。 如果处于编辑子句模式 编辑子句 中,则可以通过单击添加子句模式按钮来开始构建表达式。

SQL Expression

返回值

标注说明数据类型
输出栅格

输出栅格。

如果条件评估为真,则返回 NoData。 如果为假,则将返回第二个输入栅格的值。

Raster

SetNull(in_conditional_raster, in_false_raster_or_constant, {where_clause})
名称说明数据类型
in_conditional_raster

此输入栅格表示所需条件的 true 或 false 结果。

可为整型或浮点型。

Raster Layer
in_false_raster_or_constant

条件为 false 时,值将作为输出像元值的输入。

它可以是整型栅格、浮点型栅格或常量值。

Raster Layer; Constant
where_clause
(可选)

此逻辑表达式用于确定为 true 或 false 的输入像元。

表达式遵循 SQL 表达式的一般格式。 where_clause 的示例为 "VALUE > 100"

SQL Expression

返回值

名称说明数据类型
out_raster

输出栅格。

如果条件评估为真,则返回 NoData。 如果为假,则将返回第二个输入栅格的值。

Raster

代码示例

SetNull 示例 1(Python 窗口)

在此示例中,任何值小于 0 的输入像元均将在输出栅格中被设置为 NoData,其余像元将保留其原始值。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outSetNull = SetNull("elevation", "elevation", "VALUE < 0")
outSetNull.save("C:/sapyexamples/output/outsetnull.img")
SetNull 示例 2(独立脚本)

在此示例中,任何值非 7 的输入像元将被设置为 NoData,而值为 7 的像元将在输出中被设置为值 1。

# Name: SetNull_Ex_02.py
# Description: Returns NoData if a conditional evaluation is 
#              true and returns the value specified by another
#              raster if it is false, on a cell-by-cell basis.
# 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 = "landclass"
inFalseRaster = 1
whereClause = "VALUE <> 7"

# Execute SetNull
outSetNull = SetNull(inRaster, inFalseRaster, whereClause)

# Save the output 
outSetNull.save("C:/sapyexamples/output/outsetnull")