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

Synthèse

Sélectionne des entités en fonction d’une relation spatiale avec les entités du même jeu de données ou d’un autre jeu de données.

Chaque entité du paramètre Entités en entrée est évaluée par rapport aux entités du paramètre Couche de sélection. Si la valeur spécifiée pour le paramètre Relation est respectée, l’entité en entrée est sélectionnée.

En savoir plus sur la sélection par localisation avec des exemples illustrés de relations

Utilisation

  • Si l’entrée est un chemin d’accès à une classe d’entités ou à un jeu de données, cet outil crée et renvoie automatiquement une nouvelle couche avec les résultats de l’outil.

  • Le système de coordonnées dans lequel la relation spatiale est évaluée peut impacter le résultat. Les entités qui s’intersectent dans un système de coordonnées peuvent ne pas s’intersecter dans un autre.

    • Cet outil évalue une relation spatiale dans le système de coordonnées de la source de données Entités en entrée. Définissez l’environnement Système de coordonnées en sortie sur Carte actuelle [Couches] pour utiliser le même système de coordonnées que l’affichage actuel.

  • Pour sélectionner des entités en fonction de leurs relations spatiales avec d’autres entités dans la même couche, reportez-vous aux exemples de 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. Cliquez sur Paramètres > Total pour y accéder. En outre, l’outil 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 la localisation : relations 3D.

  • Pour le paramètre Relation, l’option Intersection (SGBD) peut offrir de meilleures performances que l’option Intersection si vous utilisez des données de géodatabase d’entreprise. En revanche, cette option n’est prise en charge que sous 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 la géodatabase d’entreprise et non sur le client. Considérez ce qui suit lorsque vous utilisez cette option de relation spatiale :

    • La configuration ci-dessous est nécessaire pour exécuter l’opération dans le SGBD :
      • Les valeurs des paramètres Entités en entrée et 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.
      • L’utilisateur se connectant à la géodatabase doit disposer des privilèges requis pour créer une vue dans la base de données dans laquelle les classes d’entités sont stockées.
      • Les types de stockage de géométrie pris en charge pour cette option sont ST_Geometry (IBM Db2, Oracle, PostgreSQL et SAP HANA), PostGIS (PostgreSQL), SDO_GEOMETRY (Oracle) et Geometry et Geography (Microsoft 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 à la rubrique Gestion des géodatabases. 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 restrictions en matière de stockage susceptibles d’impacter les performances et l’évolutivité lors de l’exécution d’opérations spatiales.
      • Si les classes d’entités dans Oracle utilisent ST_Geometry pour stocker des données spatiales, vous devez configurer le processus Oracle extproc pour accéder à ST_Geometry. Pour plus d’informations, consultez la rubrique Configurer le processus extproc dans Oracle.
      • Le paramètre Distance de recherche n’est pas défini.
      • La valeur du paramètre Type de sélection est 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. Des sélections légèrement différentes 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.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Entités qui sont évaluées à l’aide des valeurs du paramètre Couche de sélection. La sélection sera appliquée à ces entités.

Feature Layer; Raster Layer; Mosaic Layer
Relation
(Facultatif)

Spécifie la relation spatiale à évaluer.

  • IntersectionLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche sélection. Il s’agit de l’option par défaut.
  • Intersection 3DLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche de sélection dans l’espace tridimensionnel (x, y et z).
  • Intersection (SGBD)Les entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche sélection.Cette option s’applique uniquement aux géodatabases d’entreprise. La sélection sera traitée dans le SGBD de la 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.
  • Dans une distanceLes entités de la couche en entrée sont sélectionnées si elles se trouvent à la distance spécifiée (distance euclidienne) par rapport à une entité de la couche de sélection. Utilisez le paramètre Distance de recherche pour spécifier la distance.
  • Dans une distance géodésiqueLes entités de la couche en entrée sont sélectionnées si elles se trouvent à une distance donnée par rapport à 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 du sphéroïde et gère correctement les données situées près de la ligne de changement de date et des pôles. Utilisez le paramètre Distance de recherche pour spécifier la distance.
  • Dans une distance 3DLes entités de la couche en entrée sont sélectionnées si elles se trouvent à une distance donnée par rapport à une entité de la couche de sélection dans l’espace tridimensionnel. Utilisez le paramètre Distance de recherche pour spécifier la distance.
  • ContientLes entités de la couche en entrée sont sélectionnées si elles contiennent une entité de la couche de sélection.
  • Contient complètementLes 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.
  • Contient ClementiniCette relation spatiale renvoie les mêmes résultats que l’option Contient, mais si l’entité de 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.
  • DansLes 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.
  • Complètement dansLes entités de la couche en entrée sont sélectionnées si elles se trouvent complètement dans une entité de la couche de sélection ou si elles sont contenues par une entité de la couche de sélection.
  • Dans ClementiniLe résultat est identique à celui obtenu avec l’option Dans, à ceci près que si la totalité de l’entité de la couche en entrée se trouve sur la limite de l’entité de 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.
  • Sont identiques àLes entités de la couche en entrée sont sélectionnées si elles sont identiques (en géométrie) à une entité de la couche de sélection.
  • La limite toucheLes 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é de la couche de sélection, et aucune partie de l’entité en entrée ne peut traverser la limite de l’entité de la couche de sélection.
  • Partagent un segment de ligne avecLes 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 en entrée et de la couche de sélection doivent être des lignes ou des polygones.
  • Traversé par le contour deLes entités de la couche en entrée sont sélectionnées si elles sont traversées par le contour d’une entité de la couche de sélection. Les entités en entrée et 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 est utilisée. Les lignes qui se croisent au niveau d’un point sont sélectionnées, contrairement à celles qui partagent un segment de ligne.
  • Ont leur centre dansLes 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, le centroïde de la géométrie est utilisé. Pour les lignes en entrée, le centre de la géométrie est utilisé.
String
Couche de sélection
(Facultatif)

Les entités du paramètre 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
Distance de recherche
(Facultatif)

Distance dans laquelle effectuer la recherche. Ce paramètre est valide uniquement si le paramètre Relation est défini sur Dans une distance, Dans une distance géodésique, Dans une distance 3D, Intersection, Intersection 3D, Ont leur centre dans ou Contient.

Si l’option Dans une distance géodésique est sélectionnée, utilisez une unité linéaire, telle que le kilomètre ou le mile.

Linear Unit
Type de sélection
(Facultatif)

Spécifie la façon dont la sélection est appliquée à l’entrée et dont elle est combinée à une sélection existante. Cet outil n’inclut pas d’option permettant d’effacer une sélection existante. Pour cela, utilisez l’outil Sélectionner une couche par attribut avec le paramètre Type de sélection défini sur Effacer la sélection actuelle.

  • Nouvelle sélectionLa sélection obtenue remplace toute sélection existante. Il s’agit de l’option par défaut.
  • Ajouter à la sélection actuelleLa sélection obtenue est ajoutée à la sélection existante. S’il n’existe aucune sélection, cette option a le même effet que l’option Nouvelle sélection.
  • Supprimer de la sélection actuelleLa sélection obtenue est supprimée de la sélection existante. S’il n’existe aucune sélection, l’opération n’a aucun effet.
  • Sélectionner un sous-ensemble de la sélection actuelleLa sélection obtenue est associée à la sélection existante. Seuls les enregistrements communs aux deux restent sélectionnés.
  • Inverser la sélection actuelleLa 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 Couche de sélection et Relation sont ignorés lorsque cette option est sélectionnée.
String
Inverser la relation spatiale
(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.

  • Désactivé : le résultat de la requête est utilisé. Il s’agit de l’option par défaut.
  • Activé : le résultat opposé de la requête est utilisé. Si le paramètre Type de sélection est défini, l’inversion de la sélection se produit avant qu’elle ne soit associée aux sélections existantes.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Couche avec sélection

Première entrée avec application de la sélection.

Feature Layer; Mosaic Layer
Noms de couche en sortie

Paramètre à valeurs multiples comprenant toutes les entrées avec sélections appliquées.

Utilisez ce paramètre en sortie dans un modèle pour vous connecter à un outil avec une entrée à plusieurs valeurs comme l’outil Combiner.

Feature Layer; Mosaic Layer
Total

Nombre d’enregistrements sélectionnés.

Si plusieurs valeurs de paramètre Entités en entrée sont présentes, les totaux seront dans le même ordre que les entrées.

Long

arcpy.management.SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
NomExplicationType de données
in_layer
[in_layer,...]

Entités qui sont évaluées à l’aide des 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.

  • INTERSECTLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche sélection. Il s’agit de l’option par défaut.
  • INTERSECT_3DLes entités de la couche en entrée sont sélectionnées si elles intersectent une entité de la couche de sélection dans l’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 sélection.Cette option s’applique uniquement aux géodatabases d’entreprise. La sélection sera traitée dans le SGBD de la 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) par rapport à 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 par rapport à une entité de la couche de sélection dans l’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 par rapport à 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 du sphéroïde et gère correctement les données situées près de la ligne de changement de date 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 l’option CONTAINS, mais si l’entité de 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 une entité de la couche de sélection ou si elles sont contenues par une entité de la couche de sélection.
  • WITHIN_CLEMENTINILe résultat est identique à celui obtenu avec l’option WITHIN, à ceci près que si la totalité de l’entité de la couche en entrée se trouve sur la limite de l’entité de 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 couche 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é de la couche de sélection, et aucune partie de l’entité en entrée ne peut traverser la limite de l’entité de la couche de sélection.
  • 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 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 couche en entrée sont sélectionnées si elles sont traversées par le contour d’une entité de la couche de sélection. Les entités en entrée et 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 est 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, le centroïde de la géométrie est utilisé. Pour les lignes en entrée, le centre de la géométrie est utilisé.
String
select_features
(Facultatif)

Les entités du paramètre 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)

Distance dans laquelle effectuer la recherche. Ce paramètre n’est valide que 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 la façon dont la sélection est appliquée à l’entrée et dont elle est combinée à une sélection existante. Cet outil n’inclut pas d’option permettant d’effacer une sélection existante. Pour cela, utilisez l’outil Sélectionner une couche par attribut avec le paramètre selection_type défini sur CLEAR_SELECTION.

  • 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 à la sélection existante. S’il n’existe aucune sélection, cette option a le même effet que l’option NEW_SELECTION.
  • REMOVE_FROM_SELECTIONLa sélection obtenue est supprimée de la sélection existante. S’il n’existe aucune sélection, l’opération n’a 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 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.

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

Sortie obtenue

NomExplicationType de données
out_layer_or_view

Première entrée avec application de la sélection.

Feature Layer; Mosaic Layer
out_layers_or_views

Paramètre à valeurs multiples comprenant toutes les entrées avec sélections appliquées.

Utilisez ce paramètre en sortie dans un modèle pour vous connecter à un outil avec une entrée à plusieurs valeurs comme l’outil Combiner.

Feature Layer; Mosaic Layer
count

Nombre d’enregistrements sélectionnés.

Si plusieurs valeurs de paramètre in_features sont présentes, les totaux seront dans le même ordre que les entrées.

Long

Exemple de code

Exemple 1 d’utilisation de la fonction SelectLayerByLocation (fenêtre Python)

Le script ci-dessous pour la fenêtre Python montre comment utiliser la fonction SelectLayerByLocation en mode immédiat.

import arcpy
arcpy.management.SelectLayerByLocation("parcel_lyr", "have_their_center_in", 
                                       "c:/kamsack.gdb/city_limits")
Exemple 2 d’utilisation de la fonction SelectLayerByLocation (script autonome)

Le script autonome suivant indique comment utiliser la fonction SelectLayerByLocation dans un processus visant à extraire des entités vers une nouvelle classe d’entités en fonction d’une localisation 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.management.SelectLayerByLocation('cities', 'INTERSECT', 
                                                          'chihuahua')

# From the previous selection, select a subset of cities that have 
# population > 10,000
arcpy.management.SelectLayerByAttribute(chihuahua_cities, 
                                        'SUBSET_SELECTION', 
                                        '"population" > 10000')

# If features matched criteria, write them to a new feature class
matchcount = int(arcpy.management.GetCount(chihuahua_cities)[0]) 

if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.management.CopyFeatures(chihuahua_cities, 'chihuahua_10000plus')
    print('{0} cities that matched criteria written to {0}'.format(
        matchcount, chihuahua_10000plus))
Exemple 3 d’utilisation de la fonction SelectLayerByLocation (script autonome)

Le script autonome ci-après illustre diverses utilisations des options WITHIN_A_DISTANCE et WITHIN_A_DISTANCE_GEODESIC du paramètre overlap_type 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.management.SelectLayerByLocation('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '1.5 Miles')
arcpy.management.SelectLayerByLocation('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.management.SelectLayerByLocation('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.management.SelectLayerByLocation('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200')