按属性选择图层 (数据管理)

描述

用于基于属性查询添加、更新或移除选择内容。

使用方法

  • 如果输入为要素类或数据集路径,则此工具将自动创建并返回应用了该工具结果的新图层。

  • 如果输入的数据源是要素服务,建议基础 ArcGIS Server 使用标准 SQL 查询

  • 如果输入上存在定义查询,则只会在选择中使用与定义查询相匹配的要素或行。

  • 在使用高于均值低于均值查询时,AVG 函数将始终在源数据上执行,即使输入图层为源数据子集的情况下也是如此。

  • 所选记录的数量将在参数 > 计数下的地理处理历史中列出。此外,获取计数工具也可以用于计算所选记录的数量。在 Python 中,也可以通过工具的 Result 对象访问所选记录的数量。

语法

arcpy.management.SelectLayerByAttribute(in_layer_or_view, {selection_type}, {where_clause}, {invert_where_clause})
参数说明数据类型
in_layer_or_view

将应用所选内容的数据。

Table View; Raster Layer; Mosaic Layer
selection_type
(可选)

指定如何应用所选内容以及如果已存在已选内容要执行的操作。

  • NEW_SELECTION生成的选择内容将替换当前选择内容。这是默认设置。
  • ADD_TO_SELECTION当存在一个选择内容时,会将生成的选择内容添加到当前选择内容中。如果不存在选择内容,该选项的作用与新选择内容选项的作用相同。
  • REMOVE_FROM_SELECTION将生成的选择内容从当前选择内容中移除。如果不存在选择内容,该选项不起作用。
  • SUBSET_SELECTION将生成的选择内容与当前选择内容进行组合。只有两者共同的记录才会被选取。
  • SWITCH_SELECTION选择内容将被切换。将所选的所有记录从当前选择内容中移除,将未选取的所有记录添加到当前选择内容中。当指定该选项时,系统将忽略表达式参数(Python 中的 where_clause)。
  • CLEAR_SELECTION选择将被清除或移除。当指定该选项时,系统将忽略表达式参数(Python 中的 where_clause)。
String
where_clause
(可选)

用于选择记录子集的 SQL 表达式。有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

SQL Expression
invert_where_clause
(可选)

指定是按原样使用表达式,还是使用与表达式相反的表达式。

  • NON_INVERT将按原样使用查询。这是默认设置。
  • INVERT将反转查询。如果使用 selection_type 参数,则将先反转选择,然后再将其与现有选择组合。
Boolean

派生输出

名称说明数据类型
out_layer_or_view

已应用选择的已更新输入。

表视图;栅格图层;要素图层
count

所选记录的数量。

Long

代码示例

SelectLayerByAttribute 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 SelectLayerByAttribute 函数。

import arcpy
arcpy.SelectLayerByAttribute_management("states", "NEW_SELECTION", 
                                        "[NAME] = 'California'")
SelectLayerByAttribute 示例 2(独立脚本)

以下独立脚本显示了如何在工作流中使用 SelectLayerByAttribute 函数,以便根据位置和属性查询提取要素并将其导入一个新要素类中。

# Name: ExtractFeaturesByLocationAndAttribute.py
# Description: Extract features to a new feature class based on a spatial 
# relationships to another layer, and an attribute query
# Import system modules
import arcpy
# Set the workspace
arcpy.env.workspace = 'c:/data/mexico.gdb'
# Select all cities that overlap the chihuahua polygon
chihuahua_cities = arcpy.SelectLayerByLocation_management('cities', 'INTERSECT', 
                                                          'chihuahua', 0, 
                                                          'NEW_SELECTION')
# Within selected features, further select only those cities with a 
# population > 10,000   
arcpy.SelectLayerByAttribute_management(chihuahua_cities, 'SUBSET_SELECTION', 
                                        '"population" > 10000')
# Write the selected features to a new feature class
arcpy.CopyFeatures_management(chihuahua_cities, 'chihuahua_10000plus')

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题