XI. Automatisation de traitements
XI.4 Comprendre et lancer un script Python
- Lancer une commande Python dans QGIS
- Ouvrir un script Python
- Paramétrer le script
- Lancer et éditer un script
Chaque manipulation que nous faisons dans QGIS via l'interface graphique (ajouter une couche, découper une couche etc.) peut également être faite sous forme d'une ligne de commande dans le langage Python.
Par exemple, pour ajouter la couche SAINTE_RADEGONDE.shp, située dans le dossier /mnt/travail/temp, vous pouvez soit l'ajouter comme nous l'avons fait jusqu'ici, soit taper la commande Python suivante :
qgis.utils.iface.addVectorLayer("/mnt/travail/temp/SAINTE_RADEGONDE.shp", "SAINTE_RADEGONDE", "ogr")
Ce qui revient à lancer l'outil d'ajout de couche vecteur addVectorLayer de QGIS, avec 3 paramètres :
- l'emplacement de la couche : /mnt/travail/temp/SAINTE_RADEGONDE.shp (ce chemin va bien sûr varier)
- le nom avec lequel la couche sera affichée dans QGIS : SAINTE_RADEGONDE
- le nom du fournisseur de données : ogr car QGIS utilise en interne une bibliothèque nommée ogr pour accéder aux shapefiles
Quel est l'intérêt ? D'abord, mieux comprendre comment fonctionne le logiciel. Ensuite, créer exactement l'outil dont vous avez besoin, avec plus de souplesse et de possibilités qu'un modèle ! Bien sûr, on peut parfaitement utiliser QGIS sans jamais lire une ligne de Python. Il s'agit d'un autre mode d'utilisation de QGIS.
Qu'allons-nous voir dans ce chapitre ? Il ne s'agit pas ici d'apprendre à coder en Python, mais simplement d'ouvrir un script Python existant, voir comment est constitué ce script, comment le paramétrer et le lancer. En quelque sorte une introduction à cette face cachée de QGIS !
Lancer une commande Python dans QGIS
Rendez-vous dans le menu Extension → Console Python.
La console s'ouvre en bas de la fenêtre de QGIS. Dans cette console, vous pouvez taper des commandes Python qui seront exécutées une à une.
Tapez print ('hello !') en bas de la console :
Puis appuyez sur la touche entrée. Vous devriez voir votre commande, suivie du résultat, en haut de la console :
Vous venez d’utiliser la commande Print, qui permet d'afficher du texte dans la console. Vous pouvez également tester la commande citée plus haut pour ajouter une couche vecteur :
qgis.utils.iface.addVectorLayer("/mnt/travail/temp/SAINTE_RADEGONDE.shp", "SAINTE_RADEGONDE", "ogr")
Il faut remplacer le chemin ("/mnt/travail/temp/SAINTE_RADEGONDE.shp") par le chemin vers la couche sur votre ordinateur.
Sur Windows, les chemins seront de la forme 'C:/…' par exemple.
Il est possible de travailler uniquement en lançant ainsi des commandes une à une ; seulement, les commandes utilisées ne seront pas sauvegardées et ne pourront donc être réutilisées sans tout retaper à la main (même s'il est possible de faire défiler les dernières commandes utilisées en appuyant sur la touche flèche haut du clavier).
Ouvrir un script Python
Pour sauvegarder et réutiliser facilement votre travail, le plus simple est d'utiliser ce qu'on appelle un script. Il s'agit simplement d'un fichier texte comportant une suite de commandes, et qui porte l'extension PY puisqu'il s'agit d'un script Python.
Ce tutoriel n'étant pas un tutoriel Python, nous nous contenterons d'ouvrir un script existant plutôt que d'en créer un nous-mêmes.
Pour ouvrir un script : cliquez sur l'icône Afficher l'éditeur de la console : l'éditeur de script s'ouvre.
Redimensionnez éventuellement la fenêtre, pour que la partie éditeur, à droite, soit suffisamment large, et que la hauteur soit suffisante.
Dans l'éditeur, cliquez sur l'icône Ouvrir le script... et allez chercher le script clip_and_reproject.py situé dans TutoQGIS_11_Automatisation/scripts.
Lisez le contenu du script. Les lignes commençant par un # sont des commentaires : leur contenu ne sera pas pris en compte, ils sont uniquement utiles pour mieux comprendre le script.
L'objectif n'est pas de comprendre dans le détail tout ce que fait ce script, mais de comprendre globalement ce qui s'y passe, notamment au moyen des commentaires. Il s'agit ici d'un script faisant le même travail que le modèle que vous avez réalisé en précédemment, à savoir découper plusieurs couches par une même couche et reprojeter les couches obtenues en WGS84.
Paramétrer le script
Au début du script (ligne 15), vous trouverez ces lignes :
Il s'agit des paramètres en entrée et sortie du script :
- dossier_entree : le dossier où sont situées les couches à découper
- couche_masque : la couche qui servira de masque de découpe
- dossier_sortie : le dossier où seront enregistrées les couches créées (ce dossier doit déjà exister)
A vous de modifier ces paramètres suivant l'emplacement des données sur votre ordinateur ! Attention à ce que le dossier en entrée ne comporte que les couches à découper.
Attention à bien écrire les chemins exacts dans le script, une erreur d'une seule lettre vous renverra un message d'erreur quand vous voudrez l'exécuter.
Lancer et éditer un script
Pour savoir comment appeler un outil en python, une astuce est de d'abord le lancer « normalement » puis d'aller dans le menu Traitement → Historique et cliquer sur la ligne correspondante. En bas de la fenêtre, vous aurez la commande Python qui a été exécutée cette fois-là :
Comme indiqué ici, l'historique est aussi très utile pour relancer rapidement un outil avec exactement les mêmes paramètres que la fois précédente, il suffit de double-cliquer sur la ligne correspondante !
Pour lancer le script, cliquez sur l'icône Lancer le script en haut de l'éditeur. Vérifiez que tout ait bien fonctionné.
Quelles modifications apporter au script pour que :
Ligne 64, remplacer 'EPSG:4326' par 'EPSG:27572'. Vous pouvez également remplacer ligne 62 '_wgs84.shp' par '_ntfl2.shp' (il s'agit du suffixe qui sera ajouté au nom de la nouvelle couche).
Ligne 46 remplacez native:clip par ce nom : native:intersection. Pour en savoir plus, vous pouvez voir ici.
Pour en savoir plus sur le sujet, vous pouvez lire par exemple ici.
chapitre précédent
haut de page