Summary
Selects features in a layer based on a spatial relationship to features in another layer.
Each feature in the Input Feature Layer is evaluated against the features in the Selecting Features layer or feature class; if the specified Relationship is met, the input feature is selected.
Usage
The input must be a feature layer; it cannot be a feature class.
This tool works on layers in ArcMap, ArcGlobe, or ArcScene and also on layers created in models and scripts using the Make Feature Layer tool.
-
The coordinate system in which the spatial relationship is evaluated may affect the result. Features that intersect in one coordinate system may or may not intersect in another.
- This tool evaluates a spatial relationship in the coordinate system of the Input Feature Layer data source (the feature class on disk). Set the output coordinate system environment to evaluate the spatial relationship in a different coordinate system.
This tool can be used to select features based on their spatial relationships to other features within the same layer. For some examples, see Select by location within a layer.
The Get Count tool can be used to find the number of features selected by the Select Layer By Location tool. This can be useful for determining if any features matched the desired spatial relationship before proceeding to further analysis as part of an automated workflow (that is, script or model).
For more information about using the three-dimensional spatial relationships INTERSECT_3D and WITHIN_A_DISTANCE_3D, see Select by location 3D relationships.
Syntax
SelectLayerByLocation_management (in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
Parameter | Explanation | Data Type |
in_layer | The layer containing the features that will be evaluated against the select_features. The selection will be applied to this layer. The input cannot be the path to a feature class on disk. | Feature Layer; Mosaic Layer; Raster Catalog Layer |
overlap_type (Optional) | The spatial relationship to be evaluated.
| String |
select_features (Optional) | The features in the input feature layer will be selected based on their relationship to the features from this layer or feature class. | Feature Layer |
search_distance (Optional) | This parameter is only valid if the overlap_type parameter is set to one of the following: WITHIN_A_DISTANCE_GEODESIC, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN, CONTAINS, or WITHIN. If the WITHIN_A_DISTANCE_GEODESIC option is used, a linear unit such as Kilometers or Miles should be used. | Linear unit |
selection_type (Optional) | Determines how the selection will be applied to the input and how to combine with an existing selection. Note that there is no option here to clear an existing selection. To clear a selection, use the CLEAR_SELECTION option on the Select Layer By Attribute tool.
| String |
invert_spatial_relationship (Optional) | After the spatial relationship is evaluated, this option determines if the result should be used as is, or inverted. For example, this option can be used to quickly get a list of features that do not intersect or are not within a distance of features in another dataset.
| Boolean |
Code sample
SelectLayerByLocation example 1 (Python window)
The following Python window script demonstrates how to use the SelectLayerByLocation function in immediate mode.
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 example 2 (stand-alone script)
The following stand-alone script shows how to use the SelectLayerByLocation function in a workflow to extract features to a new feature class based on location and an attribute query.
# 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))
Environments
Licensing information
- ArcGIS for Desktop Basic: Yes
- ArcGIS for Desktop Standard: Yes
- ArcGIS for Desktop Advanced: Yes