Comment connecter vos scripts Python à ArcGIS.

Python

Il est pratique de faire des scripts Python pour automatiser des tâches, mais il est encore plus pratique de les connecter à l’environnement d’ArcGIS. Le fait d’encapsuler nos scripts avec ArcGIS permet de profiter des outils disponibles pour créer une interface usager à notre script. Ces derniers pourront ainsi les utiliser d’une manière intuitive et efficace.

La première étape est de modifier notre script pour accepter les données des utilisateurs. Il y a 2 manières de faire. Soit utiliser les fonctions « SetParameterAsText » et « GetParameterAsText » du module ArcPy. Les avantages de cette option sont d’avoir les fonctions disponibles à l’intérieur du même module (ArcPy) et d’avoir une bonne documentation sur le site d’aide de Esri (voir les hyperliens).

Pour ma part, je préfère une autre option, soit l’utilisation du module « sys » de Pyhton et de la fonction « argv ». Pourquoi? Parce que je l’ai appris de cette manière et de plus il est possible d’utiliser cette option pour connecter nos paramètres à un script sans être obligé d’utiliser l’interface ARCGIS (je ferai peut-être un article sur mon blogue concernant ce sujet).

Bref, prenons la deuxième méthode. J’ai ici un script simple qui crée une géodatabase dans un dossier.  Dans celle-ci, il crée une classe d’entité et dans laquelle il ajoute un champ. J’aimerais que l’usager puisse choisir l’espace de travail, soit le répertoire de base, qu’il entre le nom de la géodatabase à créer, le nom et le type de la classe d’entités à créer et finalement les informations concernant les propriétés du champ à ajouter.

Pour ce faire, j’ai utilisé le module « sys » de Python. Pour chaque information que je veux demander à l’usager, je crée une variable associée à un argument en utilisant un identifiant unique.

Par exemple :

sys.argv[1] = envRepertoire

Indique que le premier paramètre de l’usager sera le répertoire de travail.

Pour rendre le script plus lisible, j’ai créé des variables pour chaque paramètre. Ces variables sont ensuite placées dans les paramètres des fonctions.

Voici le script complet.

import arcpy, sys

#Définition des paramètres de l'usager et ce dans le bon ordre.
envRepertoire =sys.argv[1]
nomGeodatabase = sys.argv[2]
nomClasseEnt = sys.argv[3]
typeClasseEnt = sys.argv[4]
nomChamp = sys.argv[5]
typeChamp = sys.argv[6]

#Répertoire de travail
arcpy.env.workspace = envRepertoire
#Création d'une géodatabase fichiers
arcpy.CreateFileGDB_management(arcpy.env.workspace, nomGeodatabase )
#Création d'une classe d'entités dans la géodatabase
arcpy.CreateFeatureclass_management(arcpy.env.workspace + "\\" + nomGeodatabase +".gdb", nomClasseEnt, typeClasseEnt)
#Ajout d'un champ
arcpy.AddField_management(arcpy.env.workspace + "\\" + nomGeodatabase +".gdb\\" + nomClasseEnt, nomChamp, typeChamp)

Par la suite, il faut ouvrir ArcMap et y accrocher notre script. Il suffit de connecter les paramètres du script avec les paramètres de l’outil, et ce dans le même ordre. Voici une vidéo pour mieux comprendre.

Voilà

Martin

Étiqueté , , , , , ,