Exportation d'un modèle vers un script Python
L'option d'exportation d'un modèle vers un script Python vous aide à apprendre comment les outils et les environnements sont utilisés dans Python, et peut souvent lancer votre développement. Une fois le script modifié et terminé, il peut être ajouté à une boîte à outils ou à un modèle en tant qu'outil de script et exécuté comme tout autre outil de géotraitement. Pour exporter un modèle vers un script, procédez comme suit :
![Legacy Legacy](rsrc/legacy.png)
La fonctionnalité permettant d'exporter des modèles vers JScript et VBScript a été supprimée de ModelBuilder à partir de la version 10.
- Dans le menu de ModelBuilder, pointez, puis cliquez sur Modèle > Exporter > Vers un script Python.
- Cliquez sur la flèche de liste déroulante Enregistrer dans, puis accédez à l'emplacement où vous voulez enregistrer le script.
- Tapez un nom de fichier pour le script.
- Cliquez sur Enregistrer.
Modification d'un script Python exporté
Dans certains cas, votre modèle exporté ne fonctionnera pas. Prenez les points suivants en considération lors de l'exportation d'un modèle dans un script :
- Si vous envisagez d'écraser des données, définissez la propriété arcpy.env.overwriteOutput sur True.
- Si votre modèle utilise des couches ou des vues tabulaires qui n'ont pas été créées dans le modèle d'origine, ces couches ou vues tabulaires devront être créées dans le script à l'aide d'outils tels que Make Feature Layer et Make Table View.
- Les éléments de données de votre modèle sont directement convertis en variables dans le script exporté. Evitez de nommer des éléments de données qui seront incompatibles dans Python (par exemple, class, global et return). Pour une liste complète des mots-clé réservés, utilisez le module de mots-clés de Python.
import keyword print keyword.kwlist
- Si votre modèle a utilisé la substitution de variables en ligne, telles que %workspace%, %scratchworkspace%, %n%, %i% ou %variable name%, ces variables devront être remplacées par la valeur appropriée.
- Si votre modèle a utilisé un itérateur, la logique de l'itération ne sera pas exportée et devra être remplacée par les instructions en boucle dans Python.
- Seule la première valeur d'une variable de liste est exportée.
- Si votre modèle a utilisé un jeu d'entités ou un jeu d'enregistrements, le code suivant sera créé lors de l'exportation.Le code tente d'empêcher les saisies nulles ou non valides en définissant la variable Feature_Set sur une classe d'entités in_memory. Comme la classe d'entités in_memory n'existera pas au moment de l'exécution, vous devez mettre à jour le chemin d'accès pour pointer sur une classe d'entité qui est connue pour exister pendant l'exécution. Vous pouvez également modifier la logique pour générer un message d'erreur et arrêter l'exécution si cela va davantage dans le sens de votre workflow.
Exporter à partir du modèle avec un paramètre de jeu d'entités
Feature_Set = arcpy.GetParameterAsText(0) if Feature_Set == '#' or not Feature_Set: Feature_Set = "in_memory\\{F15C6411-0F4F-4A68-9BAC-29D6E7874669}" # provide a default value if unspecified
- Si votre modèle a utilisé un outil de modèle uniquement, tel que Fusionner des branches, Recueillir des valeurs ou Calculer la valeur, ces outils ne fonctionneront pas dans Python. Si est nécessaire d'implémenter les fonctionnalités Python équivalentes que ces outils procurent Par exemple, vous devrez utiliser la logique "if/else" pour effectuer des raccordements dans votre script.
- Si votre modèle comprend des sous-modèles, le contenu de ces derniers ne sera pas exporté. En revanche, la boîte à outils devra être référencée et l'outil de modèle devra être appelé à l'intérieur du script.