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 la valeur du paramètre Relationship (Relation) est respectée, 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 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 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-jacente 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 (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 à la rubrique Gestion des géodatabases.
      • Si vous utilisez Oracle ST_GEOMETRY, vous devez configurer le processus extproc de Oracle pour accéder à ST_Geometry. Pour plus d’informations, consultez la rubrique Configurer le processus extproc de Oracle.
      • 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.

Paramètres

ÉtiquetteExplicationType de données
Input Features (Entités en entrée)

Entités qui sont évaluées par rapport aux valeurs du paramètre Selecting Features (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.

  • IntersecterLes 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.
  • Intersection 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 (DBMS)Les 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 (pour plus d’informations, 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) d'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 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 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 d'une entité de la couche de sélection dans un 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 Completely contains (Contient complètement), mais si l’entité 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 ou sont contenues par les entités de la couche de sélection.
  • Dans ClementiniLe résultat est identique à celui obtenu avec Distance de recherche, excepté que si la totalité de l'entité dans la couche d'entités 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.
  • Sont identiques àLes 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.
  • 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é sélectionnée, et aucune partie de l’entité en entrée ne peut traverser la limite de l’entité sélectionnée.
  • 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 sélection doivent être des lignes ou des polygones.
  • Traversé par le contour deLes 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.
  • 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, 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
Couche de sélection
(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
Distance de recherche
(Facultatif)

Distance à rechercher. Ce paramètre est valide uniquement si le paramètre Relationship (Relation) est défini sur Within a distance (Dans une distance), Within a distance geodesic (Dans une distance géodésique), Within a distance 3D (Dans une distance 3D), Intersect (Intersection), Intersect 3D (Intersection 3D), Have their center in (Ont leur centre dans) ou Contains (Contient).

Si l’option Within a distance geodesic (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 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 permettant d’effacer une sélection existante ; utilisez l’option Clear the current selection (Effacer la sélection actuelle) de l’outil Sélectionner une couche par attributs pour cela.

  • Nouvelle sélectionLa sélection obtenue remplacera toute sélection existante. Il s’agit de l’option par défaut.
  • Ajouter à la sélection actuelleLa sélection obtenue sera ajoutée à une sélection existante. S'il n'existe aucune sélection, elle est identique à celle de l'option Nouvelle sélection.
  • Supprimer de la sélection actuelleLa sélection obtenue sera supprimée d’une sélection existante. Si aucune sélection n'existe, l'opération n'aura aucun effet.
  • Sélectionner un sous-ensemble à partir de la sélection actuelleLa sélection obtenue sera associée à la sélection existante. Seuls les enregistrements communs aux deux restent sélectionnés.
  • Inverser la sélection actuelleLa sélection sera inversée. Tous les enregistrements qui étaient sélectionnés seront 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 vous utilisez le paramètre Selection Type (Type de sélection), l’inversion de la sélection se produit avant qu’elle ne soit associée aux sélections existantes.
Boolean

Sortie dérivée

ÉtiquetteExplicationType de données
Couche avec sélection

Entrées mises à jour avec sélections appliquées.

Feature Layer; Mosaic Layer
Noms des couches en sortie

Noms des entrées mises à jour.

Feature Layer; Mosaic Layer
Effectif

Nombre d’enregistrements sélectionnés.

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

  • 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, sauf si l’entité 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). Dans ce cas, 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, sauf si la totalité de l’entité dans la couche en entrée est à la limite de l’entité dans la couche de sélection. Dans ce cas, 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 en entrée et 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)

Distance à rechercher. 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 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 permettant d’effacer une sélection existante ; utilisez l’option CLEAR_SELECTION de l’outil Sélectionner une couche par attributs pour cela.

  • NEW_SELECTIONLa sélection obtenue remplacera toute sélection existante. Il s’agit de l’option par défaut.
  • ADD_TO_SELECTIONLa sélection obtenue sera ajoutée à une sélection existante. S’il n’existe aucune sélection, elle est identique à celle de l’option NEW_SELECTION.
  • REMOVE_FROM_SELECTIONLa sélection obtenue sera 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 sera associée à la sélection existante. Seuls les enregistrements communs aux deux restent sélectionnés.
  • SWITCH_SELECTIONLa sélection sera inversée. Tous les enregistrements qui étaient sélectionnés seront 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 vous utilisez le paramètre selection_type, l’inversion de la sélection se produit avant qu’elle 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.

Feature Layer; Mosaic Layer
out_layers_or_views

Noms des entrées mises à jour.

Feature Layer; Mosaic Layer
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
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 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.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')

Informations de licence

  • Basic: Nécessite O
  • Standard: Nécessite O
  • Advanced: Nécessite O

Rubriques connexes