Résumé
Sélectionne des entités en fonction d’une relation spatiale avec les entités d’un autre jeu de données.
Chaque entité du paramètre Input Features (Entités en entrée) est évaluée par rapport aux entités du paramètre Selecting Features (Couche de sélection). Si le paramètre Relationship (Relation) est respecté, l’entité en entrée est sélectionnée.
En savoir plus sur la sélection par emplacement avec des exemples illustrés de relations
Utilisation
Si l’entrée est le chemin d’accès à une classe d’entités ou à un jeu de données, cet outil crée automatiquement une nouvelle couche en appliquant le résultat de l’outil.
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 ne pas intersecter dans un autre.
- Cet outil permet d’évaluer une relation spatiale dans le système de coordonnées de la source de données Input Features (Entités en entrée). Définissez l’environnement du système de coordonnées en sortie sur Current Map [Layers] (Carte actuelle [Couches]) pour utiliser le même système de coordonnées que l’affichage actuel.
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 obtenir des exemples, reportez-vous à la rubrique Effectuer une sélection d’après une relation spatiale au sein de la couche.
Le nombre d’enregistrements sélectionnés sera indiqué dans l’historique de géotraitement, sous Parameters (Paramètres) > Count (Total). En outre, l’outil Get Count (Compter) permet de compter le nombre d’enregistrements sélectionnés. Dans Python, vous pouvez également accéder au nombre d’enregistrements sélectionnés à partir de l’objet Result de l’outil.
Pour plus d’informations sur l’utilisation des relations spatiales tridimensionnelles Intersect 3D (Intersection 3D) et Within a distance 3D (Dans une distance 3D) (INTERSECT_3D et WITHIN_A_DISTANCE_3D dans Python), reportez-vous à la rubrique Sélectionner selon l’emplacement : relations 3D.
La relation spatiale Intersect (DBMS) (Intersection (SGBD)) (INTERSECT_DBMS dans Python) peut offrir de meilleures performances que la relation Intersect (Intersection) (INTERSECT dans Python) si vous utilisez des données de géodatabase d’entreprise. En revanche, elle n’est prise en charge que dans certaines conditions. Si toutes les conditions sont remplies, l’opération spatiale est effectuée dans le système de gestion de base de données (SGBD) de géodatabase d’entreprise et non sur le client. Considérez ce qui suit lorsque vous utilisez cette relation spatiale :
- La configuration ci-dessous est nécessaire pour exécuter l’opération dans le SGBD :
- Les valeurs des paramètres Input Features (Entités en entrée) et Selecting Features (Couche de sélection) proviennent du même espace de travail de géodatabase d’entreprise et doivent avoir la même référence spatiale et le même type de stockage de géométrie.
- Le SGBD sous-jacent est IBM Db2, Oracle, PostgreSQL, SAP HANA ou Microsoft SQL Server.
- Les types de stockage de géométrie pris en charge pour cette option sont ST_GEOMETRY (Db2, Oracle, PostgreSQL et SAP HANA), PostGIS (PostgreSQL), SDO_GEOMETRY (Oracle), MSSQLGeometry et MSSQLGeography (SQL Server). Pour plus d’informations sur l’installation et la configuration de votre SGBD et sur la configuration du type de stockage de géométrie de votre choix afin qu’il puisse être utilisé, reportez-vous à Gestion des géodatabases.
- Si vous utilisez Oracle ST_GEOMETRY, vous devez configurer Oracle extproc pour accéder à ST_Geometry. Consultez la rubrique Configurer le processus extproc d’Oracle pour accéder à la géodatabase avec SQL pour plus d’informations.
- Le paramètre Search Distance (Distance de recherche) n’est pas défini.
- La valeur du paramètre Selection Type (Type de sélection) est New selection (Nouvelle sélection).
- Les sélections existantes avant l’exécution de l’outil ont été effectuées à l’aide d’une requête de définition de couche et non d’un ensemble de sélection.
- L’opération spatiale s’effectue sans appliquer de tolérance x,y pendant le traitement. L’utilisation d’une tolérance x,y n’est pas prise en charge dans le SGBD. Différentes sections peuvent ainsi être renvoyées par rapport à l’exécution de l’analyse sur le client, où une tolérance x,y est appliquée. Reportez-vous à la rubrique Principes de base des classes d’entités pour plus d’informations sur l’application de la tolérance x,y au cours d’opérations côté client
- Les géodatabases d’entreprise dans Db2, Oracle, PostgreSQL, SAP HANA et SQL Server sont prises en charge. Chacune possède son propre type de stockage de géométrie qui est pris en charge par cette relation. Consultez la documentation du fournisseur propre à votre SGBD pour savoir à quoi vous attendre pour chaque type de stockage de géométrie. Vous pouvez rencontrer des limites de stockage susceptibles d’impacter les performances et l’évolutivité lors de l’exécution d’opérations spatiales.
- La configuration ci-dessous est nécessaire pour exécuter l’opération dans le SGBD :
Syntaxe
arcpy.management.SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
Paramètre | Explication | Type de données |
in_layer [in_layer,...] | Entités qui sont évaluées par rapport aux valeurs du paramètre select_features. La sélection sera appliquée à ces entités. | Feature Layer; Raster Layer; Mosaic Layer |
overlap_type (Facultatif) | Spécifie la relation spatiale à évaluer.
| String |
select_features (Facultatif) | Les entités du paramètre Input Features (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) | La distance spécifiée dans laquelle la recherche sera effectuée. Ce paramètre est valide uniquement si le paramètre overlap_type est défini sur WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN ou CONTAINS. Si l’option WITHIN_A_DISTANCE_GEODESIC est sélectionnée, utilisez une unité linéaire, telle que le kilomètre ou le mile. | Linear Unit |
selection_type (Facultatif) | Spécifie comment la sélection sera appliquée à l’entrée et comment elle sera combinée avec une sélection existante. Cet outil n’inclut pas d’option pour effacer une sélection existante ; utilisez l’option CLEAR_SELECTION de l’outil Select Layer By Attribute (Sélectionner une couche par attributs).
| String |
invert_spatial_relationship (Facultatif) | Spécifie si le résultat de l’évaluation de la relation spatiale est utilisé ou si le résultat opposé est utilisé. Par exemple, ce paramètre peut servir à obtenir la liste des entités qui ne s’intersectent pas ou ne se trouvent pas à une certaine distance des entités d’un autre jeu de données.
| Boolean |
Sortie dérivée
Nom | Explication | Type de données |
out_layer_or_view | Entrées mises à jour avec sélections appliquées. | Couche d’entités ; Couche de mosaïque |
out_layers_or_views | Noms des entrées mises à jour. | Couche d’entités ; Couche de mosaïque |
count | Nombre d’enregistrements sélectionnés. | Long |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction SelectLayerByLocation en mode immédiat.
import arcpy
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 pour extraire des entités vers une nouvelle classe d'entités en fonction d'un emplacement et d'une requête attributaire.
# 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 that overlap the chihuahua polygon
chihuahua_cities = arcpy.SelectLayerByLocation_management('cities', 'INTERSECT',
'chihuahua')
# From the previous selection, select a subset of cities that have
# population > 10,000
arcpy.SelectLayerByAttribute_management(chihuahua_cities,
'SUBSET_SELECTION',
'"population" > 10000')
# If features matched criteria, write them to a new feature class
matchcount = int(arcpy.GetCount_management(chihuahua_cities)[0])
if matchcount == 0:
print('no features matched spatial and attribute criteria')
else:
arcpy.CopyFeatures_management(chihuahua_cities, 'chihuahua_10000plus')
print('{0} cities that matched criteria written to {0}'.format(
matchcount, chihuahua_10000plus))
Le script autonome suivant propose diverses utilisation des options overlap_type et WITHIN_A_DISTANCE du paramètre WITHIN_A_DISTANCE_GEODESIC avec le paramètre search_distance.
# Description: Select features within a distance
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = r"c:\data\mexico.gdb"
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE',
'chihuahua', '1.5 Miles')
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC',
'chihuahua', '200 Kilometers')
# When using WITHIN_A_DISTANCE, if distance units are not specified, the
# distance value is assumed to be in the units of the input dataset's coordinate
# system
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE',
'chihuahua', '200')
# When using WITHIN_A_DISTANCE_GEODESIC, if distance units are not specified,
# the distance value is assumed to be in meters
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC',
'chihuahua', '200')
Environnements
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?