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

Récapitulatif

Sélectionne des entités dans une couche en fonction de leur relation spatiale avec les entités d'une autre couche.

Chaque entité de la Couche d'entités en entrée est évaluée par rapport aux entités de la Couche de sélection ou de la classe d'entités ; si la Relation répond aux critères définis, l'entité en entrée est sélectionnée.

Exemples graphiques de relations

Utilisation

Syntaxe

SelectLayerByLocation_management (in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type})
ParamètreExplicationType de données
in_layer

Couche qui contient les entités qui seront évaluées par rapport à la Couche de sélection. La sélection sera appliquée à cette couche. L'entrée peut être une couche dans la table des matières d'ArcMap ou une couche créée dans ArcCatalog ou dans des scripts à l'aide de l'outil Générer une couche. L'entrée ne peut pas être le chemin d'accès à une classe d'entités sur le disque.

Feature Layer; Mosaic Layer; Raster Catalog 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 du paramétrage 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).
  • WITHIN_A_DISTANCELes 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. Indiquez une distance dans le paramètre Distance de recherche.
  • 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. Indiquez une distance dans le paramètre Distance de recherche.
  • CONTAINSLes entités de la couche en entrée sont sélectionnées si elles contiennent une entité de la couche de sélection. Les entités en entrée doivent être des polygones.
  • 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. Les entités en entrée doivent être des polygones.
  • CONTAINS_CLEMENTINICette relation spatiale présente les mêmes résultats que COMPLETELY_CONTAINS avec une exception. Si l'entité de sélection se trouve entièrement sur la limite de l'entité en entrée (aucune partie n'est à l'intérieur de ou à l'extérieur), l'entité ne sera 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. Les entités de la couche de sélection doivent être des polygones.
  • 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. Les entités de la couche de sélection doivent être des polygones.
  • WITHIN_CLEMENTINILe résultat est identique à celui obtenu avec WITHIN, 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.
  • 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. Les entrées et les entités de la couche de sélection doivent être des lignes ou des polygones. En outre, l'entité dans la couche en entrée doit se trouver entièrement à l'intérieur ou à l'extérieur du polygone 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 entrées et les entités 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.
  • CONTAINED_BYRenvoie le même résultat que WITHIN. CONTAINED_BY est conservé pour prendre en charge la compatibilité avec les versions précédentes des modèles et des scripts construits dans les versions antérieures à ArcGIS 9.3.
String
select_features
(Facultatif)

Les entités de la couche d'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)

Ce paramètre est valide uniquement si le paramètre Relation est défini sur l'une des valeurs suivantes : WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_3D, INTERSECT, INTERSECT_3D, HAVE_THEIR_CENTER_IN, CONTAINS ou WITHIN.

Linear unit
selection_type
(Facultatif)

Détermine comment la sélection sera appliquée à l'entrée et comment la combiner avec une sélection existante. Notez qu'aucune option n'est disponible ici pour désactiver une sélection existante. Pour désactiver une sélection, utilisez l'option CLEAR_SELECTION de l'outil Sélectionner une couche par attributs.

  • NEW_SELECTIONLa sélection obtenue remplace toute sélection existante. Il s'agit du paramétrage par défaut.
  • ADD_TO_SELECTIONLa sélection obtenue est ajoutée à l'éventuelle 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 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_SELECTIONInverse la sélection. 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

Exemple de code

Exemple 1 d'utilisation de l'outil Sélectionner une couche par emplacement (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction SelectLayerByLocation en mode immédiat.

import arcpy

# First, make a layer from the feature class
arcpy.MakeFeatureLayer_management("c:/kamsack.gdb/parcel", "parcel_lyr")

# Then 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 Sélectionner une couche par emplacement (script autonome)

Le script autonome suivant indique comment utiliser la fonction SelectLayerByLocation dans un workflow permettant d'extraire des entités vers une nouvelle classe d'entités en fonction d'un emplacement et une requête attributaire.

# Name: ExtactFeaturesByLocationAndAttribute.py
# 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 which overlap the chihuahua polygon
arcpy.MakeFeatureLayer_management('cities', 'cities_lyr') 
arcpy.SelectLayerByLocation_management('cities_lyr', 'intersect', 'chihuahua')
 
# Within the previous selection sub-select cities which have population > 10,000
arcpy.SelectLayerByAttribute_management('cities_lyr', 
                                        'SUBSET_SELECTION', '"population" > 10000')

# If features matched criterias write them to a new feature class
matchcount = int(arcpy.GetCount_management('cities_lyr').getOutput(0)) 
if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.CopyFeatures_management('cities_lyr', 'chihuahua_10000plus')
    print('{0} cities that matched criterias written to {0}'.format(
                                                  matchcount, chihuahua_10000plus))

Environnements

Rubriques connexes

Informations de licence

ArcView : Oui
ArcEditor : Oui
ArcInfo : Oui

7/10/2012