Le blog francophone consacré
aux technologies Esri

ArcGIS 10.1 - Développer des Toolboxes en Python



La semaine dernière nous avons abordé un point important de la version 10.1 avec la capacité de développer des Add-Ins entièrement en Python. Une autre évolution, toute aussi intéressante, c'est la possibilité désormais de développer des boîtes à outils (Toolboxes) en écrivant un seul et unique fichier Python. Même si l'utilisateur pouvait déjà, dans les versions précédentes, créer des boîtes à outils personnalisées, cette évolution simplifie considérablement leur création et leur déploiement en proposant de gérer dans un seul et même fichier Python l'ensemble des informations concernant la boîte à outils et les différents outils qu'elle contient.

Comparaison entre boîtes à outils personnalisées (pre-10.1) et boîtes à outils Python (10.1)

Il est tout d'abord important de comprendre que les deux types de boîtes à outils que peut créer l'utilisateur ArcGIS en 10.1 offrent chacun des avantages différents.

Les boîtes à outils personnalisées permettent à l'utilisateur de définir interactivement le contenu de sa boîte en ajoutant ses scripts Python, ses modèles ou même des outils système. Il doit en revanche spécifier et documenter lui-même les paramètres de chaque script Python et s'assurer de la maintenance de ces scripts individuellement en plus du fichier de la boîte à outils (fichier *.tbx).

Les boîtes à outils Python sont entièrement packagées par le développeur et distribuées sous la forme d'un fichier Python unique (fichier *.pyt) prêt à utilisés sans autre paramétrage. Elles sont similaires aux boîtes à outils standard d'ArcGIS dans le sens où elles ne peuvent pas être personnalisées (ajout d'autres outils, scripts ou modèle impossible).  Les boîtes à outils Python ne sont modifiables qu'en éditant leur code Python.
Pour mieux comprendre les différences entre ces deux méthodes de création de boîte à outils, j'ai fait une extraction de l'aide en ligne d'ArcGIS 10.1:



Comment créer une boîte à outils Python ?

La création d'une boîte à outils Python se fait par un simple clic-droit dans votre catalogue à l'emplacement souhaité.  



Une fois la commande exécutée, un fichier *.pyt est créé. Ce fichier Python contient l'ensemble des informations concernant la boîte à outils mais également les différents outils qu'elle contient. Par défaut, ArcGIS génère un fichier Python décrivant la structure d'une boîte à outils Python contenant un seul outil. Vous y trouverez 2 classes Python décrivant respectivement la boîte à outils (Toolbox) et le premier outil (Tool). Ce fichier est bien entendu modifiable en ajoutant d'autres classes pour insérer d'autres outils dans votre boîte à outils.



Vous devez ensuite saisir le code python des différentes méthodes de ces classes d'objets. Pour la classe Tool (qui peut d'ailleurs être renommée), vpus pourrez saisir les informations sur l'outil (label, description, …) via la méthode "__init__". Vous devrez également compléter la métode "getParameterInfo" pour spécifier les paramètres entrant et sortant de votre outil.


Vous noterez également la présence d'une méthode "isLicensed" pour gérer éventuellement des conditions de verrouillage de votre outil. Enfin, la méthode "execute" vous permet d'insérer le code faisant fonctionner votre outil, il sera identique au script Python que vous écriviez dans les versions précédente d'ArcGIS. 



Toutes les instructions habituelles permettant l'interaction avec le document courant et son contenu (couches, tables, carte, ...) sont utilisables comme dans n'importe quel script Python. De la même manière, les instructions permettant d'afficher des messages dans l'interface des géotraitements sont également disponibles. On peut aussi souligner que les outils d'une boîte à outils Python peuvent être utilisés dans des modèles de géotraitements. Ils peuvent être exécutés (ou pas) en arrière plan en fonction de la valeur indiquée par le  développeur pour la propriété "canRunInBackground" de l'outil.

Une fois que votre code Python finalisé dans le fichier *.pyt, la boîte à outil est directement exploitable dans ArcGIS qui l'interprète et construit l'interface utilisateur correspondante.




Si vous souhaitez découvrir par vous-même cette notion de boîte à outils Python, je vous propose cet exemple que j'ai développé pour la rédaction de cet article. Cette boîte à outil Python contient un outil permettant d'exporter une table ArcGIS en un tableau dans un fichier HTML. La partie concernant la définition des paramètres est intéressante car elle illustre plusieurs capacités avancées (dépendances entre différents paramètres, paramètres à valeurs multiples, définition d'une valeur par défaut pour un paramètre, spécification d'une liste de valeurs,… ). Cet exemple fonctionne sur la version anglaise d'ArcGIS 10.1 et n'a pas été testé sur la version française (non encore finalisée à la date de cet article).

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article:

3 comments :

Anonyme a dit…

Bonjour,

Le lien "cet exemple" génère une erreur 404.

Cdlt

Gaëtan Lavenu a dit…

Bonjour,

Merci pour votre retour, le lien est désormais corrigé, vous devriez pouvoir télécharger cette boite à outil ArcGIS.

Grégoire a dit…

Bonjour,

Par contre pour moi cet exemple est une boîte à outils traditionnelle .tbx et non une boîte à outils python .pyt. Est-ce voulu?