摘要
根据与另一个图层中的要素的空间关系来选择本图层中的要素。
将根据选择要素图层或要素类中的要素评估输入要素图层中的各个要素;如果满足指定的关系,输入要素即会被选择。
用法
输入必须是要素图层;不可以是要素类。
该工具可用于 ArcMap、ArcGlobe 或 ArcScene 中的图层或使用创建要素图层工具在模型和脚本中创建的图层。
-
用来评估空间关系的坐标系可能会对结果产生影响。在一个坐标系中相交的要素在另一个坐标系中可能相交,也可能不相交。
- 此工具可在输入要素图层数据源(磁盘上的要素类)的坐标系中评估空间关系。将输出坐标系环境设置为在不同坐标系中评估空间关系。
可使用该工具根据要素与同一图层内其他要素的空间关系来选择要素。欲获取相关示例,请参阅在图层内按位置选择。
获取计数工具可用于获取按位置选择图层工具所选择的要素的数量。作为自动化工作流的一部分(即脚本或模型),此工具可用于在继续做进一步分析之前确定是否有要素与目标空间关系匹配。
有关使用三维空间关系 INTERSECT_3D 和 WITHIN_A_DISTANCE_3D 的详细信息,请参阅按 3D 位置关系选择。
语法
SelectLayerByLocation_management (in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
参数 | 说明 | 数据类型 |
in_layer | 包含将根据 select_features 进行评估的要素的图层。选择将应用于该图层。输入不能为磁盘上某个要素类的路径。 | Feature Layer; Mosaic Layer; Raster Catalog Layer |
overlap_type (可选) | 要评估的空间关系。
| String |
select_features (可选) | 输入要素图层中的要素将根据它们与此图层或要素类中要素的关系进行选择。 | Feature Layer |
search_distance (可选) | 仅当 overlap_type 参数被设置为以下其中一项时,该参数才有效:WITHIN_A_DISTANCE_GEODESIC, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN, CONTAINS, 或 WITHIN。 如果使用了 WITHIN_A_DISTANCE_GEODESIC 选项,则应使用线性单位(如公里或英里)。 | Linear unit |
selection_type (可选) | 确定如何将选择内容应用于输入,以及如何同现有选择内容进行组合。注意:此处没有用于清除现有选择内容的选项。要清除选择内容,请使用按属性选择图层工具上的 CLEAR_SELECTION 选项。
| String |
invert_spatial_relationship (可选) | 评估空间关系后,此选项可用于确定按原样使用结果还是反向使用结果。例如,可使用此选项快速获取不相交或与另一数据集中的要素不在一定距离范围内的要素的列表。
| Boolean |
代码实例
SelectLayerByLocation 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 SelectLayerByLocation 函数。
import arcpy
# First, make a layer from the feature class
arcpy.MakeFeatureLayer_management("c:/kamsack.gdb/parcel", "parcel_lyr")
# Then add a selection to the layer based on location to features in another feature class
arcpy.SelectLayerByLocation_management ("parcel_lyr", "have_their_center_in", "c:/kamsack.gdb/city_limits")
SelectLayerByLocation 示例 2(独立脚本)
以下独立脚本显示了如何在工作流中使用 SelectLayerByLocation 函数,以便根据位置和属性查询提取要素并将其导入一个新要素类中。
# Name: ExtactFeaturesByLocationAndAttribute.py
# Description: Extract features to a new feature class based on a Location and an attribute query
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = "c:/data/mexico.gdb"
# Make a layer and select cities which overlap the chihuahua polygon
arcpy.MakeFeatureLayer_management('cities', 'cities_lyr')
arcpy.SelectLayerByLocation_management('cities_lyr', 'intersect', 'chihuahua')
# Within the previous selection sub-select cities which have population > 10,000
arcpy.SelectLayerByAttribute_management('cities_lyr',
'SUBSET_SELECTION',
'"population" > 10000')
# If features matched criteria write them to a new feature class
matchcount = int(arcpy.GetCount_management('cities_lyr')[0])
if matchcount == 0:
print('no features matched spatial and attribute criteria')
else:
arcpy.CopyFeatures_management('cities_lyr', 'chihuahua_10000plus')
print('{0} cities that matched criteria written to {0}'.format(
matchcount, chihuahua_10000plus))