Générer une couche (Gestion des données)
Récapitulatif
Crée une couche d'entités à partir d'un fichier de couches ou d'une classe d'entités en entrée. La couche créée par l'outil est temporaire et disparaît à la fin de la session si la couche n'est pas enregistrée sur le disque ou si le document cartographique n'est pas enregistré.
Utilisation
-
La couche d'entités temporaire peut être enregistrée en tant que fichier de couches à l'aide de l'outil Save_To_Layer_File ou enregistrée en tant que nouvelle classe d'entités à l'aide de l'outil Copy_Features.
-
Les classes d'entités complexes telles que les annotations et les dimensions ne sont pas prises en charge par cet outil.
-
Les couches créées dans ArcCatalog ne peuvent pas être utilisées dans ArcMap à moins de les enregistrer dans un fichier de couche à l'aide de l'outil Save_To_Layer_File.
Si une expression SQL est utilisée mais ne retourne rien, la sortie correspondante est vide.
Un nouveau nom peut être donné aux noms de champ à l'aide du contrôle Informations de champ. La deuxième colonne sur le contrôle répertorie les noms de champ existants de l'entrée. Pour renommer un champ, cliquez sur son nom et saisissez un nouveau nom.
Les nouveaux noms de champ définis dans le contrôle Informations de champ seront respectés dans les outils suivants. Toutefois, si cet outil est le dernier outil dans un modèle, les noms de champ seront obtenus à partir des données source sur le disque. Pour conserver les nouveaux noms de champ, la nouvelle couche doit être écrite dans de nouvelles données à l'aide des outils Copier des enregistrements ou Copier des entités.
Les noms de champ sont validés en spécifiant un espace de travail en entrée. Ainsi, si les données en entrée correspondent à une classe d'entités de géodatabase et que l'espace de travail en sortie est un dossier, les noms des champs peuvent être tronqués, car les noms des attributs des fichiers de formes ne peuvent pas comporter plus de dix caractères. Les nouveaux noms peuvent être révisés et modifiés à l'aide du contrôle Informations de champ.
Un sous-ensemble de champs peut devenir indisponible dans la nouvelle couche à l'aide de la propriété visible du contrôle Informations de champ. La troisième colonne dans le contrôle fournit une option déroulante pour spécifier si un champ sera visible ou masqué dans la nouvelle couche. La valeur par défaut est TRUE. La sélection de FALSE masquera ce champ. Vous ne pouvez pas utiliser les champs masqués dans un workflow si la couche récemment créée est entrée pour un outil ou un processus suivant. Si la sortie est enregistrée sur disque, seuls les champs répertoriés comme visibles apparaîtront dans les nouvelles données.
-
Une règle de division peut être définie à l'aide de l'option Règle de division de la commande Informations de champ. La règle de division prend effet chaque fois que la couche d'entités est utilisée en tant qu'entrée dans un outil et qu'une géométrie de couche d'entités en entrée est fractionnée au cours du traitement. Lorsque la géométrie fractionnée est envoyée à la sortie, un ratio de la valeur attributaire en entrée est calculé pour la valeur attributaire en sortie. Lorsque l'option Règle de division est activée, chaque fois qu'une entité est fractionnée dans une opération de superposition, les attributs des entités résultantes sont égaux à un quotient de la valeur attributaire de l'entité en entrée. La valeur en sortie dépend du quotient de division de la géométrie d'entité en entrée. Par exemple, si la géométrie en entrée a été divisée en parties égales, la moitié de la valeur attributaire de l'entité en entrée est affectée à la valeur attributaire de chaque nouvelle entité. L'option Règle de division s'applique uniquement aux champs de type numérique.
Cette option est désactivée par défaut (NONE). Cela signifie que l'attribut des deux entités résultantes hérite d'une copie de la valeur attributaire de l'objet de départ.
Attention :Les outils de géotraitement ne respectent pas les règles de fractionnement de champ des classes d'entités ou des tables de géodatabase.
-
Lorsque vous utilisez ModelBuilder pour créer un outil, vous devez vérifier que la variable de données en entrée dans cet outil n'est pas marquée comme intermédiaire. Si c'est le cas, elle sera supprimée à l'issue de l'exécution du modèle depuis sa boîte de dialogue et la couche en sortie ne sera pas ajoutée à l'affichage.
Syntaxe
Paramètre | Explication | Type de données |
in_features |
La couche ou la classe d'entités en entrée utilisée génère la nouvelle couche. Les classes d'entités complexes telles que les annotations et les dimensions ne sont pas des entrées valides pour cet outil. | Feature Layer |
out_layer |
Nom de la couche d'entités à créer. La nouvelle couche d'entités créée peut être utilisée comme entrée de tout outil de géotraitement acceptant une couche d'entités comme entrée. | Feature Layer |
where_clause (Facultatif) |
Expression SQL permettant de sélectionner un sous-ensemble d'entités. 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 ou des couvertures, 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 |
workspace (Facultatif) | Espace de travail en entrée utilisé pour valider les noms des champs. Si l'entrée est une table de géodatabase et que l'espace de travail en sortie est une table dBASE, les noms de champs peuvent être tronqués car les champs dBASE ne doivent pas comporter plus de 10 caractères. Les nouveaux noms peuvent être révisés et modifiés à l'aide du contrôle des informations de champ. | Workspace;Feature Dataset |
field_info (Facultatif) | Peut être utilisé pour examiner et modifier les noms de champ et masquer un sous-ensemble de champs dans la couche en sortie. Une règle de division peut être spécifiée. Pour en savoir plus, reportez-vous aux conseils d'utilisation. | Field Info |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction MakeFeatureLayer en mode immédiat.
import arcpy
arcpy.env.workspace = "C:/data/input"
arcpy.MakeFeatureLayer_management("parcels.shp", "parcels_lyr")
Le script autonome suivant montre comment utiliser l'outil MakeFeatureLayer pour créer une couche qui peut être utilisée par les outils SelectLayerByLocation et SelectLayerByAttribute.
# Name: ExtractFeaturesByLocationAndAttribute.py
# Description: Extracts features to a new feature class based on a location and an attribute query.
# Import system modules
import arcpy
from arcpy import env
# Set overwrite option
arcpy.env.overwriteOutput = True
# Put in error trapping in case an error occurs when running tool
try:
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("C:/data/mexico.gdb/cities","cities_lyr")
# Select all cities that overlap the chihuahua polygon
arcpy.SelectLayerByLocation_management("cities_lyr", "INTERSECT", "c:/data/mexico.gdb/chihuahua", "", "NEW_SELECTION")
# Within the selection (done above) further select only those cities that have a population >10,000
arcpy.SelectLayerByAttribute_management("cities_lyr", "SUBSET_SELECTION", "POPULATION > 10000")
# Write the selected features to a new featureclass
arcpy.CopyFeatures_management("cities_lyr", "c:/data/mexico.gdb/chihuahua_10000plus")
except:
print arcpy.GetMessages()