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) spécifié répond aux critères définis, l’entité en entrée est sélectionnée.
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 consulter des exemples, reportez-vous à Sélectionner selon l’emplacement : sélectionner en fonction d’une relation spatiale dans 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 Intersection 3D et 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. Vous devez prendre en compte un certain nombre de considérations lorsque vous utilisez cette relation spatiale :
- La configuration ci-dessous est nécessaire pour exécuter l’opération dans le SGBD :
- Les entités en entrée (Input Features) et la sélection d’entité (Selecting Features) proviennent de l’espace de travail de la même géodatabase d’entreprise.
- Le SGBD sous-jacent est IBM Db2, Oracle, PostgreSQL, SAP HANA ou Microsoft SQL Server.
- Les options Input Features (Entité en entrée) et Selecting Features (Sélection d’entités) doivent posséder le même type de stockage de géométries.
- 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 existant avant l’exécution de l’outil ont été réalisées par le biais d’un ensemble de définition d’une couche et non via 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ù la 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’avoir un impact sur 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
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 au paramètre select_features. La sélection sera appliquée à ces entités. | Feature Layer; Raster Layer; Mosaic Layer |
overlap_type (Facultatif) | 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 l'une des valeurs suivantes : 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 sera inversé ou utilisé tel quel. Par exemple, ce paramètre peut servir à obtenir rapidement la liste des entités qui ne s’intersectent pas ou ne se trouvent pas à une distance donnée 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
# 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 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"
# Parameter order : in_layer, overlap_type, select_features, search_distance
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, then the
# distance 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,
# then the distance value 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 ?