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

摘要

基于属性查询在图层或表视图中添加、更新或移除选择内容。

用法

语法

SelectLayerByAttribute_management (in_layer_or_view, {selection_type}, {where_clause})
参数说明数据类型
in_layer_or_view

将应用选择的要素图层或表视图。

输入可以是 ArcMap 内容列表中的图层或表视图,也可以是在 ArcCatalog 或脚本中使用“创建要素图层”或“创建表视图”工具创建的图层或表视图。

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

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

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

用于选择记录子集的 SQL 表达式。表达式的语法会因数据源的不同而稍有不同。例如,如果要查询文件或 ArcSDE 地理数据库、shapefile、coverage、dBASE 或 INFO 表,需将字段名用双引号括起:

"MY_FIELD"

如果要查询个人地理数据库,需将字段用方括号括起:

[MY_FIELD]

在 Python 中,字符串用成对的单引号或双引号括起。要创建含有引号的字符串(常见于 SQL 表达式中的 WHERE 子句),可以对引号进行转义(使用反斜线)或对字符串使用三重引号。例如,如果所需的 WHERE 子句为

"CITY_NAME" = 'Chicago'

可以将整个字符串用双引号括起,然后如下所示对内部双引号进行转义:

" \"CITY_NAME\" = 'Chicago' "

或者可以将整个字符串用单引号括起,然后如下所示对内部单引号进行转义:

' "CITY_NAME" = \'Chicago\' '

或者不进行转义,而将整个字符串用三重引号括起:

""" "CITY_NAME" = 'Chicago' """

有关 SQL 语法及其在不同数据源中的差异的详细信息,请参阅帮助主题在 ArcGIS 中使用查询表达式的 SQL 参考

SQL Expression

代码示例

按属性选择图层示例(Python 窗口)

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

import arcpy
arcpy.MakeFeatureLayer_management ("C:/data/data.mdb/states", "stateslyr")
arcpy.SelectLayerByAttribute_management ("stateslyr", "NEW_SELECTION", " [NAME] = 'California' ")
按属性选择图层示例 2(独立脚本)

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

# Name: ExtactFeaturesByLocationAndAttribute.py
# Description: Extract features to a new feature class based on a spatial relationships to another layer AND an attribute query
# Author: ESRI
 
# Import system modules
import arcpy

# Set the workspace
env.workspace = "c:/data/mexico.gdb"

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("cities", "lyr") 
 
# Select all cities which overlap the chihuahua polygon
arcpy.SelectLayerByLocation_management("lyr", "intersect", "chihuahua", 0, "new_selection")

# Within selected features, further select only those cities which have a population > 10,000   
arcpy.SelectLayerByAttribute_management("lyr", "SUBSET_SELECTION", ' "population" > 10000 ')
 
# Write the selected features to a new featureclass
arcpy.CopyFeatures_management("lyr", "chihuahua_10000plus")
 

环境

相关主题

许可信息

ArcView: 是
ArcEditor: 是
ArcInfo: 是

7/10/2012