ArcGis et Python :avant de faire vos premiers pas

Débuter avec Python sur ArcGIS est plus facile qu’il n’y paraît. Il n’est pas nécessaire de maîtriser Python pour l’utiliser de manière basique dans notre travail avec ArcGIS.
Tout d’abord il faut savoir qu’il existe plusieurs options pour exécuter nos processus avec un code Python. Nous allons donc commencer par voir les différentes options et comment les choisir en fonction de nos besoins, que ce soit simplement tester une ligne de code ou un morceau de script ou bien l’exécution complète d’un script.

La différence entre exécuter une ligne de code ou exécuter un script, en termes de programmation, c’est que pour la première on fera appel à un INTERPRÉTEUR et que pour le deuxième on fera appel à un COMPILATEUR.

Un interpréteur va exécuter le code instruction par instruction, tandis que le compilateur traduit le code complet du script dans le code machine du système pour créer un fichier exécutable. On pourra exécuter un programme compilé directement sur la machine, tandis que le code non compilé il faudra l’exécuter à l’intérieur d’une autre application possédant l’interpréteur.

Pour voir comment fonctionnent les différentes options nous allons prendre un exemple simple: nous avons une couche de polygones avec les communes du Finistère et nous voulons obtenir une couche de polylignes. Les outils de géotraitement d’ArcGis ont une fonction, FeatureToLine_management, qui fait cette opération.

1- Pyton interprété

Il y a trois moyens d’utiliser Python à travers un interpréteur:

  • A partir de Python lui-même, en mode ligne de commande
  • A partir de la console Python d’ArcGis
  • A partir de la console d’un autre Environnement de Développement Intégré (IDE) comme PyScripter, PythonWin, …

1-A: Ligne de commande Python

Sans ouvrir ArcGis ni un autre logiciel, il suffit d’ouvrir une fenêtre de commande (Dans le lancement de programmes Windows, exécuter -> cmd)

ouverture d'une fenêtre de commande

Vous lancez Python en tapant simplement

python

lancement de Python dans la fenêtre de commande

les trois chevrons (>>>) indiquent que vous pouvez entrer votre commande Python.

La première commande sert à charger dans Python les fonctions d’ArcGis. Tapez

import arcpy

exécution de la commande import arcpy

C’est tout ce qu’il faut pour pouvoir exécuter notre commande qui transformera nos polygones en polylignes. On rentre alors la commande :

arcpy.FeatureToLine_management (« C:\ArcGis\com29.shp », « C:\ArcGis\com29_lignes.shp »)

exécution de la commande de transformation de polygone en polyligne

La ligne <Result… nous indique que l’opération a été effectuée avec succès et que la nouvelle couche a été créée.

Si on ouvre ArcMap et on affiche cette couche résultante on a:

résultat de la transformation dans arcmap

Remarquez que nous venons de faire un géotraitement d’ArcGis sans avoir ouvert ArcGis et en 5 à 10 fois moins de temps que celui qu’ArcMap met à démarrer…
Bien sûr, il faut connaître la syntaxe et les endroits où sont les fichiers. Bien sûr c’est austère. Mais ce n’est pas quand même si hermétique que ce que vous pensiez.

Passons maintenant un cran au dessus.

1-B: Exécuter la ligne de commande dans la console Python d’ArcMap

On ouvre la console Python en cliquant,dans la fenêtre ArcMap,  sur le bouton correspondant

ouverture de la console python d'arcmap

On rentre la ligne de commande pour importer la bibliothèque ArcGis (import arcpy) et on commence à rentrer la deuxième ligne de commande

arcpy.FeatureToLine_management (« C:\ArcGis\com29.shp », « C:\ArcGis\com29_lignes.shp »)

Ici, contrairement à la fenêtre de commande précédente, nous avons une saisie prédictive disponible. Quand vous commencez à taper une fonction, la liste des fonctions s’affiche et vous pouvez simplement cliquer sur celle que vous cherchez:

aide à la syntaxe de la console python d'arcmap

Quand on commence à rentrer les paramètres de la fonction, une aide descriptive des paramètres s’affiche automatiquement dans la fenêtre de droite:

aide au paramétrage de la console python d'arcmap

Si vous avez chargé les couches correspondant aux paramètres dans ArcMap, vous aurez la liste déroulante des couches vous évitant de taper le nom entier.

Quand on exécute la commande, en plus du message <Result… vous observerez qu’un détail des processus est affiché dans la fenêtre de droite.

affichage de l'exécution de la commande dans la console python d'arcmap

1-C: A partir de la console d’un autre IDE

Les différents environnements intégrés de développement sont, en principe, destinés à faire des exécutables. Mais, bien sûr, ils possèdent des consoles d’interprétation équivalentes à la console Python d’ArcMap.

Par exemple, PyScripter, vous permet de rentrer et exécuter les deux lignes de commande. La différence se situe sur l’aide à l’écriture des commandes:

aide à la syntaxe dans un ide: pyscripterEn général vous aurez plus de fonctionnalités offertes par un IDE que par la console Python d’ArcMap. Mais si vous restez à l’utilisation de la ligne de commande les deux sont assez équivalents. La différence essentielle est que l’IDE vous permet d’écrire, tester et debugger des scripts Python complets.

2- Phyton compilé et exécuté

Dans les trois exemples précédents, nous entrons une à une les lignes de commande. Chaque commande est interprétée et exécutée.
Mais nous pouvons créer un fichier, contenant toutes les commandes à exécuter, puis nous pouvons demander à une application de le compiler et de l’exécuter. C’est ce que nous appellerons un script.
Nous allons donc créer un fichier texte, avec une extension .py contenant nos deux lignes de commande:

exemple de fichier python

Nous appellerons ce fichier exemple.py

Nous avons quatre possibilités pour exécuter un script Python:

  • l’exécuter avec Python
  • l’exécuter avec un IDE
  • l’exécuter en tant qu’outil dans la toolbox d’ArcGis
  • l’exécuter comme bouton de commande d’ArcMap

2-A : Compiler et exécuter avec Python

Si nous ouvrons une fenêtre de commande nous pouvons exécuter le fichier exemple.py directement dans Python, en tapant simplement

python.exe c:\ArcGis\exemple.py

exécution d'un script python avec python.exe

Python compile et exécute les commandes. Aucun message n’est affiché sur le déroulement et la finalisation des fonctions, mais s’il y avait eu une erreur nous aurions eu l’affichage des messages d’erreur.

Cette option est idéale si vous souhaitez exécuter certaines tâches à partir du programmateur de tâches Windows.

2-B : Compiler et exécuter avec un IDE

Bien sûr que l’on peut exécuter un script à partir d’un environnement de développement intégré.
Normalement, on exécute un script Python à partir de l’IDE tant qu’on est en train de le développer. Ceci permet d’utiliser la console pour tester certaines fonctions, ainsi que d’utiliser l’exécution pas à pas pour le débogage, le suivi des valeurs des variables tout au long du processus, etc.

exécution d'un script à partir d'un IDE

2-C : Créer un outil de la toolbox ArcGis

Une fois créé le script et validé avec votre IDE, vous disposez d’un fichier de script qui peut être stocké et exécuté en tant qu’outil de la Toolbox d’ArcGis.

Pour cela, cliquez-droit sur une de vos toolboxes personnelles, sélectionnez Ajouter -> Script

py18

La fenêtre d’ajout de script s’ouvre:

création d'un outil de la toolbox avec le script python

Donnez un nom (sans espaces ou caractères spéciaux) et une étiquette (vous êtes libre du contenu).

Cliquez sur suivant pour pointer sur le fichier du script.

rédérence du script python dans l'outil de la toolbox

La troisième fenêtre permet de gérer les paramètres du script. Dans notre cas il n’y a pas de paramètres.

Votre script est maintenant disponibles comme outil dans votre boîte à outils et peu têtre exécuté de la même manière que tous les autres outils.

 

exécution de l'outil dans arcmap

La fenêtre « Résultats » permet de vérifier la bonne exécution du script.

résultat de l'exécution de l'outil de la toolbox

2-D : Créer un bouton ou une barre d’outils pour ArcMap avec un Addin Python

Nous ne suivrons pas l’exemple de création d’AddIn Python car c’est plus compliqué que les précédents exemples. Le but de créer un bouton est de pouvoir interagir avec le contenu d’ArcMap, avec d’autres scripts ou outils, de gérer des formulaires, etc.. Notre exemple est bien loin de ce que les boutons sont censés faire.
En tout cas, la démarche est la suivante :
Vous utiliserez l’assistant de création d’addins python (téléchargeable ici)

assistant de créatrion de addins python

Une fois complétée la définition de l’addin, vous allez créer le fichier d’addin.

Dans le dossier de travail, exécutez le script makeaddin.py en double-cliquant sur ce script. Tous les fichiers et dossiers nécessaires au complément sont copiés dans un fichier de complément compressé dans le dossier de travail. Le nom du fichier est composé du nom du dossier de travail et d’une extension .esriaddin.

Il vous reste à installer l’addin:

Double-cliquez sur le nouveau fichier de complément pour lancer l’utilitaire d’installation des compléments ESRI ArcGIS. Lorsque cet utilitaire est appelé, il analyse le fichier config.xml du fichier de complément, les paramètres de projet saisis lors de la création du complément, et si le complément contient une signature numérique fiable, comme illustré ci-après.

installation d'un addin python dans arcgis

Vous êtes maintenant prêt à utiliser la personnalisation dans l’application ArcGIS for Desktop pour laquelle elle a été conçue. Démarrez l’application bureautique (ArcMap). La barre d’outils ou le menu personnalisé est peut-être déjà visible et prêt à être testé. Dans le cas contraire, dans le menu Personnaliser, cliquez sur Gestionnaire de compléments. La boîte de dialogue Gestionnaire de compléments répertorie les compléments installés qui ciblent l’application en cours. Les informations relatives au complément, comme le nom, la description et l’image, saisies dans les paramètres de projet, doivent s’afficher.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *