按位置选择图层 (数据管理)
用法
-
输入必须是要素图层;不可以是要素类。
-
此工具的有效输入为 ArcMap、ArcGlobe 或 ArcScene 内容列表中的图层,以及创建要素图层工具在 ArcCatalog 或脚本中创建的图层。
-
用来评估空间关系的坐标系可能会对结果产生影响。在一个坐标系中相交的要素在另一个坐标系中可能相交,也可能不相交。将在输入要素图层的数据源的坐标系中评估空间关系。如果设置输出坐标系环境,则会在指定的坐标系中评估空间关系。ArcMap、ArcScene 和 ArcGlobe 的“选择”菜单中的“按位置选择”功能在执行操作时所用的坐标系与应用程序视图的坐标系相同。要将地理处理的坐标系与应用程序视图相匹配,请将输出坐标系设置为“与显示相同”。
-
可使用该工具根据要素与同一图层内其他要素的空间关系来选择要素。要获取相关示例,请参阅:在图层内按位置选择
-
获取计数工具可用于获取“按位置选择图层”工具所选择的要素的数量。作为自动化工作流的一部分(即脚本或模型),此工具可用于在继续做进一步分析之前确定是否有要素与目标空间关系匹配。
-
有关使用三维空间关系(INTERSECT_3D 和 WITHIN_A_DISTANCE_3D)的详细信息,请参阅按 3D 位置关系选择。
语法
参数 | 说明 | 数据类型 |
in_layer |
包含根据“选择要素”进行评估的要素的图层。选择将应用于该图层。输入可以是 ArcMap 内容列表中的图层,也可以是使用“创建要素图层”工具在 ArcCatalog 或脚本中创建的图层。输入不能为磁盘上某个要素类的路径。 | Feature Layer; Mosaic Layer; Raster Catalog Layer |
overlap_type (可选) |
要评估的空间关系。
| String |
select_features (可选) |
输入要素图层中的要素将根据它们与此图层或要素类中要素的关系进行选择。 | Feature Layer |
search_distance (可选) |
仅当“关系”参数被设置为以下其中一项时,该参数才有效:WITHIN_A_DISTANCE、WITHIN_A_DISTANCE_3D、INTERSECT、INTERSECT_3D、HAVE_THEIR_CENTER_IN、CONTAINS 或 WITHIN。 | Linear unit |
selection_type (可选) |
确定如何将选择内容应用于输入,以及如何同现有选择内容进行组合。注意:此处没有用于清除现有选择内容的选项。要清除选择内容,请使用“按属性选择图层”工具上的 CLEAR_SELECTION 选项。
| String |
代码示例
以下 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 函数,以便根据位置和属性查询提取要素并将其导入一个新要素类中。
# 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 criterias write them to a new feature class matchcount = int(arcpy.GetCount_management('cities_lyr').getOutput(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 criterias written to {0}'.format( matchcount, chihuahua_10000plus))