Sélectionner une couche par emplacement (Gestion des données)
Récapitulatif
Sélectionne des entités dans une couche en fonction de leur relation spatiale avec les entités d'une autre couche.
Chaque entité de la Couche d'entités en entrée est évaluée par rapport aux entités de la Couche de sélection ou de la classe d'entités ; si la Relation répond aux critères définis, l'entité en entrée est sélectionnée.
Utilisation
-
L'entrée doit être un couche d'entités ; il ne peut s'agit d'une classe d'entités.
-
Les entrées valides pour cet outil fonctionne sont des couches dans la table des matières ArcMap, ArcGlobe ou ArcScene, mais aussi des couches créées dans ArcCatalog ou dans les scripts à l'aide de l'outil Générer une couche.
-
Le système de coordonnées dans lequel la relation spatiale est évaluée peut affecter le résultat. Les entités qui intersectent dans un système de coordonnées peuvent ou non intersecter une autre.
- Cet outil permet d'évaluer la relation spatiale dans le système de coordonnées de la source de données de la Couche d'entités en entrée (classe d'entités sur le disque). Définissez l'environnement du système de coordonnées en sortie pour évaluer la relation spatiale dans un autre système de coordonnées.
- Les outils Sélectionner selon l'emplacement disponibles dans le menu Sélection d'ArcMap, ArcScene et ArcGlobe, évaluent la relation spatiale dans le système de coordonnées de l'affichage de cette application (bloc de données actuel). Pour que l'outil de géotraitement s'adapte à ce comportement (et obtienne des résultats identiques), paramétrez l'environnement du système de coordonnées en sortie sur Identique à l'affichage.
-
Cet outil permet de sélectionner des entités en fonction de leurs relations spatiales avec d'autres entités dans la même couche. Pour consulter des exemples, reportez-vous à la rubrique Sélectionner selon l'emplacement : sélectionner en fonction d'une relation spatiale dans la couche.
-
L'outil Compter permet de recherche le nombre d'entités sélectionnées par l'outil Sélectionner une couche par emplacement. Cela peut être utile pour déterminer si des entités correspondent à la relation spatiale souhaitée avant de procéder à une analyse supplémentaire dans le cadre d'un workflow automatisé (c'est-à-dire, un script ou un modèle).
-
Pour plus d'informations sur l'utilisation des relations spatiales tridimensionnelles (INTERSECT_3D et WITHIN_A_DISTANCE_3D), reportez-vous à la rubrique Relations 3D et Sélectionner selon l'emplacement.
Syntaxe
Paramètre | Explication | Type de données |
in_layer |
Couche qui contient les entités qui seront évaluées par rapport à la Couche de sélection. La sélection sera appliquée à cette couche. L'entrée peut être une couche dans la table des matières d'ArcMap ou une couche créée dans ArcCatalog ou dans des scripts à l'aide de l'outil Générer une couche. L'entrée ne peut pas être le chemin d'accès à une classe d'entités sur le disque. | Feature Layer; Mosaic Layer; Raster Catalog Layer |
overlap_type (Facultatif) |
Relation spatiale à évaluer.
| String |
select_features (Facultatif) |
Les entités de la couche d'entités en entrée sont sélectionnées en fonction de leur relation avec les entités de cette couche ou classe d'entités. | Feature Layer |
search_distance (Facultatif) |
Ce paramètre est valide uniquement si le paramètre Relation est défini sur l'une des valeurs suivantes : WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN, CONTAINS ou WITHIN. | Linear unit |
selection_type (Facultatif) |
Détermine comment la sélection sera appliquée à l'entrée et comment la combiner avec une sélection existante. Notez qu'aucune option n'est disponible ici pour désactiver une sélection existante. Pour désactiver une sélection, utilisez l'option CLEAR_SELECTION de l'outil Sélectionner une couche par attributs.
| String |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction SelectLayerByLocation en mode immédiat.
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")
Le script autonome suivant indique comment utiliser la fonction SelectLayerByLocation dans un workflow permettant d'extraire des entités vers une nouvelle classe d'entités en fonction d'un emplacement et une requête attributaire.
# 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').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 criteria written to {0}'.format(
matchcount, chihuahua_10000plus))