Sélectionner une couche par emplacement (Gestion des données)

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.

Exemples graphiques 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 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.

Syntaxe

SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
ParamètreExplicationType 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.

  • INTERSECTLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche de sélection. Il s’agit de l’option par défaut.
  • INTERSECT_3DLes entités dans la couche en entrée sont sélectionnées si elles intersectent une entité de la couche de sélection dans un espace tridimensionnel (x, y et z).
  • INTERSECT_DBMSLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche de sélection. Cette option s’applique uniquement aux géodatabases d’entreprise. La sélection sera traitée dans le SGBD de géodatabase d’entreprise et non sur le client lorsque toutes les conditions sont remplies (reportez-vous aux remarques sur l’utilisation de l’outil). Cette option peut offrir de meilleures performances que la sélection sur le client.
  • WITHIN_A_DISTANCELes entités de la couche en entrée sont sélectionnées si elles se trouvent à la distance spécifiée (distance euclidienne) d'une entité de la couche de sélection. Utilisez le paramètre search_distance pour spécifier la distance.
  • WITHIN_A_DISTANCE_3DLes entités de la couche en entrée sont sélectionnées si elles se trouvent à une distance donnée d'une entité de la couche de sélection dans un espace tridimensionnel. Utilisez le paramètre search_distance pour spécifier la distance.
  • WITHIN_A_DISTANCE_GEODESICLes entités de la couche en entrée sont sélectionnées si elles se trouvent à une distance donnée d'une entité de la couche de sélection. La distance entre les entités est calculée à l’aide d’une formule géodésique qui tient compte de la courbure de la sphéroïde et gère correctement les données situées près de la ligne de changement de jour et des pôles. Utilisez le paramètre search_distance pour spécifier la distance.
  • CONTAINSLes entités de la couche en entrée sont sélectionnées si elles contiennent une entité de la couche de sélection.
  • COMPLETELY_CONTAINSLes entités de la couche en entrée sont sélectionnées si elles contiennent complètement une entité de la couche de sélection.
  • CONTAINS_CLEMENTINICette relation spatiale renvoie les mêmes résultats que COMPLETELY_CONTAINS, mais si la couche de sélection se trouve entièrement à la limite de l’entité en entrée (sans aucune partie véritablement à l’intérieur ou à l’extérieur), l’entité n’est pas sélectionnée. CLEMENTINI définit le polygone de limite comme la ligne qui sépare l'intérieur et l'extérieur ; la limite d'une ligne est définie par ses extrémités et la limite d'un point est toujours vide.
  • WITHINLes entités de la couche en entrée sont sélectionnées si elles se trouvent dans une entité de la couche de sélection.
  • COMPLETELY_WITHINLes entités de la couche en entrée sont sélectionnées si elles se trouvent complètement dans ou sont contenues par les entités de la couche de sélection.
  • WITHIN_CLEMENTINILe résultat est identique à celui obtenu avec WITHIN, mais si la totalité de l'entité dans la couche en entrée est à la limite de l'entité dans la couche de sélection, l'entité n'est pas sélectionnée. CLEMENTINI définit le polygone de limite comme la ligne qui sépare l'intérieur et l'extérieur ; la limite d'une ligne est définie par ses extrémités et la limite d'un point est toujours vide.
  • ARE_IDENTICAL_TOLes entités de la ou des couches en entrée sont sélectionnées si elles sont identiques (en géométrie) à une entité de la couche de sélection.
  • BOUNDARY_TOUCHESLes entités de la couche en entrée sont sélectionnées si une de leurs limites touche une entité de la couche de sélection. Lorsque les entités en entrée sont des lignes ou des polygones, la limite de l'entité en entrée peut uniquement toucher la limite de l'entité sélectionnée, et aucune partie de l'entité en entrée ne peut traverser la limite de l'entité sélectionnée.
  • SHARE_A_LINE_SEGMENT_WITHLes entités de la couche en entrée sont sélectionnées si elles partagent un segment de ligne avec une entité de la couche de sélection. Les entités de la couche en entrée et de la couche de sélection doivent être des lignes ou des polygones.
  • CROSSED_BY_THE_OUTLINE_OFLes entités de la ou des couches en entrée sont sélectionnées si elles sont croisées par le contour d'une entité de la couche de sélection. Les entrées et les entités de la couche de sélection doivent être des lignes ou des polygones. Si des polygones sont utilisés pour la couche en entrée ou la couche de sélection, la limite (ligne) du polygone sera utilisée. Les lignes qui se croisent au niveau d'un point sont sélectionnées, contrairement à celles qui partagent un segment de ligne.
  • HAVE_THEIR_CENTER_INLes entités de la couche en entrée sont sélectionnées si leur centre se trouve dans une entité de la couche de sélection. Le centre de l’entité est calculé comme suit : pour les polygones et multi-points, c’est le centroïde de la géométrie qui est utilisé et pour les lignes en entrée, le centre de la géométrie.
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).

  • NEW_SELECTIONLa sélection obtenue remplace toute sélection existante. Il s’agit de l’option par défaut.
  • ADD_TO_SELECTIONLa sélection obtenue est ajoutée à une sélection existante. L'absence de sélection revient à l'utilisation de l'option NEW_SELECTION.
  • REMOVE_FROM_SELECTIONLa sélection obtenue est supprimée d'une sélection existante. Si aucune sélection n'existe, l'opération n'aura aucun effet.
  • SUBSET_SELECTIONLa sélection obtenue est associée à la sélection existante. Seuls les enregistrements communs aux deux restent sélectionnés.
  • SWITCH_SELECTIONLa sélection est inversée. Tous les enregistrements qui étaient sélectionnés sont supprimés de la sélection. Tous les enregistrements qui n'étaient pas sélectionnés sont ajoutés à la sélection. Les paramètres select_features et overlap_type sont ignorés lorsque cette option est sélectionnée.
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.

  • NOT_INVERTLe résultat de la requête ne sera pas inversé. Il s’agit de l’option par défaut.
  • INVERTLe résultat de la requête sera inversé. Si le paramètre selection_type est sélectionné, l’inversion se produit avant que la sélection ne soit associée aux sélections existantes.
Boolean

Sortie dérivée

NomExplicationType 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

Exemple 1 d'utilisation de l'outil SelectLayerByLocation (fenêtre Python)

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")
Exemple 2 d'utilisation de l'outil SelectLayerByLocation (script autonome)

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))
Exemple 3 d’utilisation de l’outil SelectLayerByLocation (script autonome)

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

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes