按属性提取 (空间分析)

需要 Spatial Analyst 许可。

摘要

基于逻辑查询提取栅格的像元。

插图

按属性提取图示
OutRas = ExtractByAttributes(InRas1, "Value > 0")

使用情况

  • 输入栅格中的其他属性(若有的话)将按照原样添加到输出栅格属性表。 根据所记录的属性,某些属性值可能需要重新计算。

  • 将多波段栅格指定为输入栅格(Python 中的 in_raster)值时,将使用所有波段。

    要处理一系列来自多波段栅格的波段,请首先使用波段合成工具创建由这些特定波段组成的栅格数据集。 然后将结果用作输入栅格(Python 中的 in_raster)值。

    默认输出格式为地理数据库栅格。 如果将 Esri 格网堆栈指定为输出格式,则堆栈的名称不能以数字开头、不能使用空格且长度不得超过九个字符。

  • 如果 Where 子句的求值结果是 True,则将为该像元位置返回初始输入值。 如果其求值结果是 False,则将为像元位置指定 NoData。

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

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

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

  • 如果在查询中指定了除输入栅格的 Value 以外的某一项,则将为此像元位置返回初始输入值。

  • 如果输入栅格为整型,那么输出栅格也为整型。 如果输入为浮点型,则输出也将为浮点型。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

参数

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

从中提取像元的输入栅格。

Raster Layer
Where 子句

用于选择栅格像元子集的逻辑表达式。

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

SQL Expression

返回值

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

包含从输入栅格中提取的像元值的输出栅格。

Raster

ExtractByAttributes(in_raster, where_clause)
名称说明数据类型
in_raster

从中提取像元的输入栅格。

Raster Layer
where_clause

用于选择栅格像元子集的逻辑表达式。

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

SQL Expression

返回值

名称说明数据类型
out_raster

包含从输入栅格中提取的像元值的输出栅格。

Raster

代码示例

按属性提取 (ExtractByAttributes) 示例 1(Python 窗口)

本示例将基于逻辑查询从栅格中提取像元,其中高程大于 1,000 米。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
attExtract = ExtractByAttributes("elevation", "VALUE > 1000") 
attExtract.save("c:/sapyexamples/output/attextract")
按属性提取 (ExtractByAttributes) 示例 2(独立脚本)

本示例将基于逻辑查询从栅格中提取像元,其中高程大于 1,000 米。

# Name: ExtractByAttributes_Ex_02.py
# Description: Extracts the cells of a raster based on a logical query. 
# 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 = "elevation"
inSQLClause = "VALUE > 1000"

# Execute ExtractByAttributes
attExtract = ExtractByAttributes(inRaster, inSQLClause) 

# Save the output 
attExtract.save("c:/sapyexamples/output/attextract02")