Sélectionner une couche par attributs (Gestion des données)
Récapitulatif
Ajoute, met à jour ou supprime une sélection sur une couche ou une vue tabulaire en fonction d'une requête attributaire.
Utilisation
-
L'entrée doit être couche d'entités ou une vue tabulaire. Il ne peut pas s'agit d'une classe d'entités ou d'une table.
-
Cet outil fonctionne sur les couches ou les vues tabulaires dans la table des matières ArcMap ainsi que sur les couches ou les vues tabulaires créées dans un script à l'aide des outils Générer une couche ou Générer une vue tabulaire.
-
Si un environnement d'étendue est spécifié ou si un ensemble de définitions est présente dans la Couche en entrée ou la Vue tabulaire, seules les entités ou les lignes dans l'étendue ou correspondant à l'ensemble de définitions peuvent être sélectionnées.
-
L'outil Compter permet de déterminer le nombre d'entités ou de lignes sélectionnées. Cela peut être particulièrement utile dans un script ou un modèle pour déterminer si un traitement supplémentaire est souhaité.
Syntaxe
Paramètre | Explication | Type de données |
in_layer_or_view |
Couche d'entités ou vue tabulaire à laquelle la sélection s'applique. L'entrée peut être une couche ou une vue tabulaire dans la table des matières ArcMap, ou une couche ou une vue tabulaire créée dans ArcCatalog ou dans des scripts à l'aide des outils Générer une couche ou Générer une vue tabulaire. | Table View; Raster Layer; Mosaic Layer |
selection_type (Facultatif) |
Détermine la manière dont la sélection doit être exécutée et ce qu'il faut faire si une sélection existe déjà.
| String |
where_clause (Facultatif) |
Expression SQL permettant de sélectionner un sous-ensemble d'enregistrements. La syntaxe de l'expression diffère légèrement en fonction de la source des données. Par exemple, lorsque vous interrogez des géodatabases fichier ou ArcSDE, des fichiers de formes, des couvertures, ou des tables dBase ou INFO, placez le nom des champs entre guillemets doubles : "MY_FIELD" Si vous interrogez des géodatabases personnelles, placez les champs entre crochets : [MON_CHAMP] Dans Python, les chaînes se trouvent entre guillemets simples ou doubles. Pour créer une chaîne contenant des guillemets (comme c'est souvent le cas pour les clauses WHERE dans les expressions SQL), vous pouvez désactiver les guillemets (à l'aide d'une barre oblique inverse) ou placer la chaîne entre guillemets triples. Par exemple, si la clause WHERE souhaitée est "CITY_NAME" = 'Chicago' vous pouvez mettre la chaîne entière entre guillemets doubles, puis désactiver les guillemets doubles intérieurs de la manière suivante : " \"CITY_NAME\" = 'Chicago' " Ou vous pouvez mettre la chaîne entière entre guillemets simples, puis désactiver les guillemets simples intérieurs de la manière suivante : ' "CITY_NAME" = \'Chicago\' ' Ou vous pouvez mettre la chaîne entière entre guillemets triples sans désactiver les guillemets : """ "CITY_NAME" = 'Chicago' """ Pour en savoir plus sur la syntaxe SQL et sur ses différences selon les sources de données, reportez-vous à la rubrique d'aide Référence SQL pour les expressions de requête utilisées dans ArcGIS. | SQL Expression |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction SelectLayerByAttribute en mode immédiat.
import arcpy
arcpy.MakeFeatureLayer_management ("C:/data/data.mdb/states", "stateslyr")
arcpy.SelectLayerByAttribute_management ("stateslyr", "NEW_SELECTION", " [NAME] = 'California' ")
Le script autonome suivant indique comment utiliser la fonction SelectLayerByAttribute dans un workflow permettant d'extraire des entités vers une nouvelle classe d'entités selon un emplacement et une requête attributaire.
# Name: ExtactFeaturesByLocationAndAttribute.py
# Description: Extract features to a new feature class based on a spatial relationships to another layer AND an attribute query
# Author: ESRI
# Import system modules
import arcpy
# Set the workspace
env.workspace = "c:/data/mexico.gdb"
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("cities", "lyr")
# Select all cities which overlap the chihuahua polygon
arcpy.SelectLayerByLocation_management("lyr", "intersect", "chihuahua", 0, "new_selection")
# Within selected features, further select only those cities which have a population > 10,000
arcpy.SelectLayerByAttribute_management("lyr", "SUBSET_SELECTION", ' "population" > 10000 ')
# Write the selected features to a new featureclass
arcpy.CopyFeatures_management("lyr", "chihuahua_10000plus")