Pour conserver le code Python, créez des fichiers Python (.py). Ces fichiers sont des fichiers ASCII qui contiennent des instructions Python.
- Dans l'environnement de développement intégré (IDE) Python de votre choix, créez un script et ajoutez les lignes suivantes en haut du script :
- Un espace de travail en entrée définissant l'ensemble de classes d'entités à traiter
- Une classe d'entité utilisée par l'outil Découper comme zone à découper à partir de la classe d'entités en entrée
- Un espace de travail en sortie où s'affichent les résultats de l'outil Découper
- Une tolérance XY utilisée par l'outil Découper
- Ajoutez le code suivant à votre script pour définir des variables basées sur des valeurs spécifiées par l'utilisateur transmises au script lors de l'exécution :
- Ajoutez dans la fenêtre de script l'instruction de gestion des erreurs et la fonction ListFeatureClasses() :
- Ajoutez le code suivant :
- Ajoutez les lignes suivantes pour terminer le script :
- Ajoutez l'en-tête suivant au début de votre script :
- Enregistrez le script.
# Import ArcPy site-package and os modules
import arcpy
import os
Ce code importe le site-package ArcPy et le module système d'exploitation os dans le script. Le module os offre un accès rapide aux outils fondamentaux du système d'exploitation. Certaines méthodes de gestion des noms de fichiers du module os sont utilisées dans ce script.
Ce script contient les quatre arguments suivants pour pouvoir être utilisé d'une façon générique :
# Set the input workspace
arcpy.env.workspace = arcpy.GetParameterAsText(0)
# Set the clip featureclass
clipFeatures = arcpy.GetParameterAsText(1)
# Set the output workspace
outWorkspace = arcpy.GetParameterAsText(2)
# Set the XY tolerance
clusterTolerance = arcpy.GetParameterAsText(3)
try:
# Get a list of the featureclasses in the input folder
fcs = arcpy.ListFeatureClasses()
Python applique une indentation du code après certaines instructions sous forme d'une construction de langage. L'instruction try définit le début d'un bloc de code géré par son gestionnaire d'exceptions associé ou l'instruction except. La totalité du code de ce bloc doit être indentée. Python utilise les blocs try/except pour gérer les erreurs inattendues survenues lors de l'exécution. Les gestionnaires d'exceptions définissent l'action du programme lorsqu'une exception est signalée par le système ou le script. La gestion des exceptions permet de fermer correctement le script et de renvoyer des messages d'information au lieu de provoquer une erreur système.
La fonction ListFeatureClasses() renvoie une liste des noms de classes d'entités de l'espace de travail en cours. L'espace de travail définit l'emplacement de vos données et l'emplacement où toutes les nouvelles données sont créées, sauf si un chemin complet est spécifié. L'espace de travail a déjà été défini selon la valeur du premier argument. Une boucle for permet de parcourir chaque classe d'entités contenue dans la liste.
for fc in fcs:
# Validate the new feature class name for the output workspace.
featureClassName = arcpy.ValidateTableName(fc, outWorkspace)
outFeatureClass = os.path.join(outWorkspace, featureClassName)
# Clip each feature class in the list with the clip feature class.
# Do not clip the clipFeatures, it may be in the same workspace.
if fc != os.path.basename(clipFeatures):
arcpy.Clip_analysis(fc, clipFeatures, outFeatureClass,
clusterTolerance)
Lorsqu'il n'y a plus de noms dans la liste, la boucle for se termine. La fonction ValidateTableName() permet de s'assurer que le nom en sortie est correct pour l'espace de travail en sortie. Certains caractères, tels que les points ou les tirets, ne sont pas autorisés dans les géodatabases. Cette méthode renvoie donc un nom contenant des caractères valides à la place de ceux qui ne le sont pas. Elle renvoie également un nom unique afin qu'aucune donnée existante ne soit remplacée.
La méthode os.path.basename sert à gérer le chemin des classes d'entités de découpage. Ainsi, seul le nom de la classe d'entités est évalué dans une expression et non pas le chemin complet. L'outil Découper est exécuté comme une fonction ArcPy, en utilisant différentes variables de chaîne comme valeurs de paramètres.
except Exception as err:
arcpy.AddError(err)
print err
L'instruction except est requise par l'instruction try précédente pour éviter qu'une erreur de syntaxe se produise. Si une erreur survient lors de l'exécution, le code du bloc except est exécuté. Tout message d'erreur est ajouté avec la fonction AddError() au cas où le script est exécuté à partir d'un outil de script. Tous les messages d'erreur s'affichent également dans la sortie standard si le script est exécuté à l'extérieur d'un outil.
"""-----------------------------------------------------------------------------
Script Name: Clip Multiple Feature Classes
Description: Clips one or more shapefiles
from a folder and places the clipped
feature classes into a geodatabase.
Created By: Insert name here.
Date: Insert date here.
-----------------------------------------------------------------------------"""
Script terminé :
"""-----------------------------------------------------------------------------
Script Name: Clip Multiple Feature Classes
Description: Clips one or more shapefiles
from a folder and places the clipped
feature classes into a geodatabase.
Created By: Insert name here.
Date: Insert date here.
-----------------------------------------------------------------------------"""
# Import ArcPy site-package and os modules
import arcpy
import os
# Set the input workspace
arcpy.env.workspace = arcpy.GetParameterAsText(0)
# Set the clip featureclass
clipFeatures = arcpy.GetParameterAsText(1)
# Set the output workspace
outWorkspace = arcpy.GetParameterAsText(2)
# Set the XY tolerance
clusterTolerance = arcpy.GetParameterAsText(3)
try:
# Get a list of the featureclasses in the input folder
fcs = arcpy.ListFeatureClasses()
for fc in fcs:
# Validate the new feature class name for the output workspace.
featureClassName = arcpy.ValidateTableName(fc, outWorkspace)
outFeatureClass = os.path.join(outWorkspace, featureClassName)
# Clip each feature class in the list with the clip feature class.
# Do not clip the clipFeatures, it may be in the same workspace.
if fc != os.path.basename(clipFeatures):
arcpy.Clip_analysis(fc, clipFeatures, outFeatureClass,
clusterTolerance)
except Exception as err:
arcpy.AddError(err)
print err