Select Layer By Location

Title  Select Layer By Location

Summary

Geoprocessing tool that selects features in a layer based on a spatial relationship to features in another layer.


Usage


Syntax

ParameterExplanation
overlap_type (Optional)

The spatial relationship to be evaluated.

  • INTERSECT—The features in the input layer will be selected if they intersect a selecting feature. This is the default.
  • INTERSECT_3D —The features in the input layer will be selected if they intersect a selecting feature in three-dimensional space (x, y, and z).
  • WITHIN_A_DISTANCE—The features in the input layer will be selected if they are within a specified distance of a selecting feature. Specify a distance in the Search Distance parameter.
  • WITHIN_A_DISTANCE_3D—The features in the input layer will be selected if they are within a specified distance of a selecting feature in three-dimensional space. Specify a distance in the Search Distance parameter.
  • WITHIN_A_DISTANCE_GEODESIC—The features in the input layer will be selected if they are within a specified distance of a selecting feature. Distance between features will be calculated using a geodesic method which takes into account the curvature of the earth and correctly deals with data near and across the dateline and poles.
  • CONTAINS—The features in the input layer will be selected if they contain a selecting feature.
  • COMPLETELY_CONTAINS—The features in the input layer will be selected if they completely contain a selecting feature.
  • CONTAINS_CLEMENTINI—This spatial relationship yields the same results as COMPLETELY_CONTAINS with the following exception: if the selecting feature is entirely on the boundary of the input feature (no part is properly inside or outside), the feature will not be selected. Clementini defines the boundary polygon as the line separating inside and outside, the boundary of a line is defined as its end points, and the boundary of a point is always empty.
  • WITHIN—The features in the input layer will be selected if they are within a selecting feature.
  • COMPLETELY_WITHIN—The features in the input layer will be selected if they are completely within or contained by a selecting feature.
  • WITHIN_CLEMENTINI—The result will be identical to WITHIN with the exception that if the entirety of the feature in the input layer is on the boundary of the feature in the selecting layer, the feature will not be selected. Clementini defines the boundary polygon as the line separating inside and outside, the boundary of a line is defined as its end points, and the boundary of a point is always empty.
  • ARE_IDENTICAL_TO—The features in the input layer will be selected if they are identical (in geometry) to a selecting feature.
  • BOUNDARY_TOUCHES—The features in the input layer will be selected if they have a boundary that touches a selecting feature. When the inputs features are lines or polygons, the boundary of the input feature can only touch the boundary of the selecting feature, and no part of the input feature can cross the boundary of the selecting feature.
  • SHARE_A_LINE_SEGMENT_WITH—The features in the input layer will be selected if they share a line segment with a selecting feature. The input and selecting features must be line or polygon.
  • CROSSED_BY_THE_OUTLINE_OF—The features in the input layer will be selected if they are crossed by the outline of a selecting feature. The input and selecting features must be lines or polygons. If polygons are used for the input or selecting layer, the polygon's boundary (line) will be used. Lines that cross at a point will be selected, not lines that share a line segment.
  • HAVE_THEIR_CENTER_IN—The features in the input layer will be selected if their center falls within a selecting feature. The center of the feature is calculated as follows: for polygon and multipoint, the geometry's centroid is used, and for line input, the geometry's midpoint is used.
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.

search_distance (Optional)

This parameter is only valid if the Relationship 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.

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.

  • NEW_SELECTION—The resulting selection replaces any existing selection. This is the default.
  • ADD_TO_SELECTION—The resulting selection is added to an existing selection, if one exists. If no selection exists, this is the same as the NEW_SELECTION option.
  • REMOVE_FROM_SELECTION—The resulting selection is removed from an existing selection. If no selection exists, the operation will have no effect.
  • SUBSET_SELECTION—The resulting selection is combined with the existing selection. Only records that are common to both remain selected.
  • SWITCH_SELECTION—Switches the selection. All records that were selected are removed from the selection, and all records that were not selected are added to the selection. The Selecting Features and Relationship parameters are ignored when this option is selected.
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.

  • Unchecked—The result of the query will not be inverted. This is the default.
  • Checked—The result of the query will be inverted. The inversion occurs before the selection is combined with existing selections.

Code Samples

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))


                    

Tags

Credits

Use limitations