Les plugins sont un excellent moyen d'étendre les fonctionnalités de QGIS et pour
automatiser les traitements cartographiques. Vous pouvez écrire des plugins à
l'aide du langage Python qui peut aller de l’affichage d’un simple texte au
développement d’une interface permettant de réaliser des traitements complexes.
Ce tutoriel décrira pour vous le processus de développement des plugins partant
de la configuration de votre environnement de développement, la conception de
l'interface utilisateur et l’écriture du code python pour interagir avec QGIS.
3. 3
AVANT-PROPOS _____________________________________________________________ 4
1. AVANT DE COMMENCER___________________________________________________ 4
1.1 Avertissement _______________________________________________________________________ 4
1.2 Description du plugin _________________________________________________________________ 4
1.3 Les outils indispensables_______________________________________________________________ 6
1.4 Les données de l’exemple______________________________________________________________ 7
1.5 Pré - requis__________________________________________________________________________ 7
2. PROCEDURE DE CREATION D’UN PLUGIN ______________________________________ 8
2.1 Développement de l’interface graphique _________________________________________________ 8
2.2 Ecriture du code python du plugin ______________________________________________________ 17
CONCLUSION ______________________________________________________________ 21
ANNEXES _________________________________________________________________ 22
Tableau des coordonnées____________________________________________________________________ 22
POUR ALLER PLUS LOIN ______________________________________________________ 23
4. 4
AVANT-PROPOS
Les plugins sont un excellent moyen d'étendre les fonctionnalités de QGIS et pour
automatiser les traitements cartographiques. Vous pouvez écrire des plugins à
l'aide du langage Python qui peut aller de l’affichage d’un simple texte au
développement d’une interface permettant de réaliser des traitements complexes.
Ce tutoriel décrira pour vous le processus de développement des plugins partant
de la configuration de votre environnement de développement, la conception de
l'interface utilisateur et l’écriture du code python pour interagir avec QGIS.
1. AVANT DE COMMENCER
1.1 Avertissement
Vous êtes libre de faire circuler ce guide à toute personne souhaitant développer
ses propres plugins. Les codes et les algorithmes de développement ne sont
optimisés volontairement car le souhait de l’auteur était de faire simple, court et
utile pour favoriser une meilleure compréhension.
1.2 Description du plugin
Dans ce tutoriel nous allons réaliser un plugin QGIS qui permet de créer des
polygones automatiquement connaissant les coordonnées des sommets. Cet outil
peut être intéressant lorsque vous avez à créer régulièrement dans le cadre de vos
tâches quotidiennes, un grand nombre de polygones.
6. 6
Notre but sera d’écrire un plugin qui permettra de créer des polygones ayant la même
étiquette.
1.3 Les outils indispensables
Pour pouvoir développer vos plugins avec python et QGIS, vous devez installer sur
votre ordinateur les outils suivants :
1.3.1 QGIS
C’est évident. Cependant compte tenu de nombreuses versions QGIS, nous
recommandons une version supérieure à la version 2.6. Vous pouvez télécharger la
dernière version 2.x (n’utilisez pas la version 3.0 pour suivre exécuter le code de
tutoriel) depuis le site du projet : https://www.qgis.org/fr/site/
1.3.2 Python
Lors de l’installation de QGIS, une version de python sera également installée par
défaut. Dans le cas contraire vous pouvez installer depuis le site de Python, la
version qui correspond à votre installation de QGIS ;
https://www.python.org/
1.3.3 Qt Designer
Qt Designer est l'outil Qt pour la conception et la construction d'interfaces
utilisateur graphiques (GUI) avec Qt Widgets. Vous pouvez composer et
personnaliser vos fenêtres ou vos boîtes de dialogues selon le concept WYSIWYG
(Ce que vous voyez, c’est ce que vous obtenez).
7. 7
1.3.4 Plugin Builder
Plugin Builder crée tous les fichiers nécessaires et le code de référence pour un
plugin. Pour installer Plugin Builder, rendez – vous dans le gestionnaires extensions.
Trouvez et installez Plugin Builder depuis le gestionnaire des extensions qgis.
1.3.5 Plugins Reloader
Il s'agit d'un autre plugin auxiliaire qui permet le développement itératif de
plugins. À l'aide de ce plugin, vous pouvez modifier le code de votre plugin et
l'afficher dans QGIS sans devoir redémarrer QGIS à chaque fois. Trouvez et
installez le plugin « Plugin Reloader ».
1.4 Les données de l’exemple
Vous trouverez en annexe le tableau de coordonnées des sommets des polygones
utilisés. Il vous appartiendra de créer une couche avec des points dans ce tableau.
1.5 Pré - requis
Il est nécessaire d’avoir des notions de QGIS et des bases de la syntaxe python
pour suivre avantageusement ce tutoriel.
8. 8
2. PROCEDURE DE CREATION D’UN PLUGIN
Le processus de création d’un plugin, tel qu’il sera présenté dans ce document est
divisé en deux étapes :
La première étape consiste à créer l’interface graphique du
plugin ;
La seconde étape consistera à écrire le code python qui réalise
l’objet du plugin ;
2.1 Développement de l’interface graphique
La création de l’interface graphique du plugin se fait grâce aux outils Plugin builder
et Qt Designer.
1. Commencez par lancer le plugin « Plugin Builder » : ExtensionPlugin builder ;
2. Une boîte de dialogue s’ouvre avec plusieurs formulaires accessibles via le
bouton suivant. Remplissez les champs de chaque formulaire.
Figure 2:Fenêtre Plugin Builder
9. 9
Tableau 1 : Description des champs des formulaires Plugin builder
CHAMP EXEMPLE DESCRIPTION
Class name PolygonAuto
Nom qui sera utilisé dans le code python pour définir la classe
principale de l’application
Plugin Name Polygon_Automatique
Il s’agit du titre de votre plugin. Il doit être explicite puisqu’il
sera affiché.
Description
Ce plugin permet de créer
des polygones
Il s’agit de la description de notre plugin. Elle doit être très
courte
Version number 1.0
Il s’agit de la version de votre plugin
Minimum Qgis
version
2.0
Il s’agit de la version de QGIS minimum qui pourra exécuter ce
le plugin
Author
/Company
Gildas / STT-GIS
Nom de l’auteur
Email address gildas@stt-gis.net
Adresse email de l’auteur
Bug tracker
Adresse vers un site répertoriant les bugs de l’application
(lorsque votre plugin est publié)
Home page
Page web de votre plugin
Repository
Adresse vers le répertoire de votre plugin (lorsque votre plugin
est publié)
Tags
Les tags sont une liste de mots-clés séparés par des virgules
décrivant la (les) fonction (s) de votre plugin.
Experimental
Cochez cette case si votre plugin est considéré comme
expérimental
3. Dans la suite, vous serez invité à choisir un répertoire pour votre plugin. Il
s’agit d’un emplacement réservé qui se trouve dans le dossier .qgis2 qui se
trouve dans votre répertoire personnel. L'emplacement de ce dossier dépend
du système d’exploitation :
Windows : c:Usersusername.qgis2pythonplugins
Mac : /Users/username/.qgis2/python/plugins
Linux : /home/username/.qgis2/python/plugins
10. 10
4. Naviguez jusque dans le dossier de votre plugin :
Plugin Builder a créé pour vous un ensemble de fichier. Ne vous inquiétez pas, seuls
quelques fichiers vont nous intéresser dans le cadre de ce tutoriel :
Tableau 2 : Description des fichiers crées par Plugin Builder
Fichiers Description
PolygonAuto.py C’est le fichier principal de notre plugin. Il contient la classe
principale du plugin qui donne les emplacements où doivent être
implantés les boutons et barres d'outils dans QGIS.
PolygonAuto_dialog_base.ui Il s’agit du dessin graphique de notre plugin
resources.qrc C’est le fichier qui fait le lien avec les ressources (fichiers,
icone, images..) utilisées dans notre plugin.
icon.png Il s’agit de l’icône de notre plugin. Plugin Builder créer un par
défaut, mais il est recommandé d’utiliser votre propre icône.
11. 11
5. Ne quittez pas le dossier de votre plugin. Remplacez l’icône par défaut par une
icône personnelle de 24*24 pixels en png comme par exemple :
6. Avant de pouvoir utiliser le plugin, nous devons compiler le fichier
resources.qrc contenu dans le dossier du plugin. Pour cela lancez OSGeo4W
Shell sur Windows ou un terminal sur Mac ou Linux.
Figure 3:Fenêtre OSGeo4W Shell
7. A l’aide de la commande DOS cd, rendez – vous dans le répertoire de votre
plugin :
cd c:Usersxxxxxx.qgis2pythonpluginsPolygonAuto
8. Dès que vous êtes dans le répertoire, exécuter la commande :
9. Maintenant, nous pouvons visualiser notre plugin. Fermez QGIS et lancez-le à
nouveau.
12. 12
10. Depuis le menu Extension [Gérer et installer les plugins], activez le
PolygoneAuto dans l'onglet Installé.
Figure 4 : Activation du Plugin
11. Vous remarquerez qu'il y a une nouvelle icône dans la barre d'outils et une
nouvelle entrée de menu Extension.
Figure 5: Aperçu nouvelle extension
13. 13
12. S vous cliquez sur l’outil, vous devez voir apparaître une fenêtre qui
ressemble à la fenêtre ci – dessous :
Figure 6:Fenêtre initiale du plugin
13. Nous allons maintenant personnaliser l’interface graphique de notre plugin.
C’est là qu’intervient l’outil Qt Designer. Lancez Qt Designer. Une fenêtre
s’ouvre, cliquez sur le bouton [ouvrir] :
14. Dans la fenêtre parcourir, rendez – vous dans le dossier de votre plugin et
sélectionnez le fichier PolygonAuto_dialog_base.ui.
Figure 7 : Ouverture de Qt Designer
14. 14
15. L’interface de Qt est très intuitive, elle ne requiert pas qu’on s’y attarde. On peut distinguer 4 parties essentielles :
15. 15
1. La barre de menu contient les fonctionnalités classiques et des outils
qui permettent de gérer l’affichage et les évènements ;
2. Ce bandeau vous donne la possibilité de sélectionner un widget à placer
sur la fenêtre principale ;
3. Au centre de Qt Designer, vous avez la fenêtre que vous êtes en train
de dessiner. Pour le moment celle-ci possède deux boutons.
4. lorsqu'un widget est sélectionné sur la fenêtre principale, vous pouvez
éditer ses propriétés. Vous noterez que les widgets possèdent en
général beaucoup de propriétés, et que celles-ci sont organisées en
fonction de la classe dans laquelle elles ont été définies. On peut ainsi
modifier toutes les propriétés dont un widget hérite, en plus des
propriétés qui lui sont propres.
16. Réorganisez votre fenêtre de façon à obtenir quelque chose comme ceci :
Figure 8:Interface du plugin revue
Pour l’instant, laisser les propriétés par défaut en dehors de la propriété text :
Figure 9: Fenêtre propriété
16. 16
17. Quand vous avez fini, retournez dans QGIS pour voir les modifications.
Lancez le plugin « Plugin Reloader » et sélectionnez le plugin à recharger :
Figure 10:Plugin reloader
18. Lancez maintenant votre plugin :
Figure 11:Plugin redessiné
19. Vous devez constater la liste déroulante est vide et que si vous cliquez sur
le bouton [lancer la création] vous n’aurez aucune action. Ce qui est normal
puisque il n’y a pas de code associé ni à la liste déroulante, ni au bouton [Lancer
la création].
Nous avons fini avec la première partie du développement de notre plugin.
17. 17
2.2 Ecriture du code python du plugin
Pour écrire le code de votre plugin, rendez- vous dans le répertoire du plugin et
ouvrez grâce à un éditeur de code le fichier PolygonAuto.py qui comprend la classe
principale de votre plugin. Dans ce fichier vous trouvez plusieurs fonctions
reconnaissables par le mot clé def. Les seules fonctions qui vont nous intéresser
sont les suivantes :
__init__ : qui donne accès à l’interface de QGIS ;
initGui () : qui initialise l’interface utilisateur de l’application ;
unload () : qui est appelée lorsque l’extension est déchargée ;
Run () : qui est appelée lorsque l’utilisateur clique sur le plugin ;
2.2.1 Import des modules et fonctions importantes :
Commençons par ajouter un autre module important pour ce que nous volons faire.
En dessous de ces lignes :
Rajoutez :
Il s’agit d’importer ici toutes les classes et méthodes nécessaires pour les
manipulations cartographiques avec QGIS comme créer ou charger un fichier.
2.2.2 Code pour la liste déroulante
Nous volons ajouter la liste des couches chargées dans Qgis au démarrage de
l’application dans la liste déroulante. Nous devons donc ajouter notre code dans la
fonction run (self). Repérez cette fonction et saisissez le code suivant :
18. 18
20. De retour dans QGIS, ajouter deux ou trois couches.
21. Après avoir rafraichi le plugin grâce à plugin reloader, lancez le plugin.
Figure 12:Couche chargée dans le plugin
Si tout s’est bien passé, vous devez avoir liste des couches chargées dans la liste
déroulante.
2.2.3 Code pour le bouton [Lancer la création]
22. Maintenant nous allons créer une fonction qui permet de réaliser l’objet de
notre script. Au-dessus de la fonction run (self), créez une fonction
creer_polygone.
20. 20
23. Lions le bouton [lancer la création] à la fonction [créer_polygone] de sorte
que lorsque le bouton est cliqué, la fonction s’exécute.
Repérez l’instruction :
Ajoutez en dessous le code suivant :
Cette instruction permet de connecter le bouton à la fonction creer_polygon.
24. Récupérez le tableau des coordonnées en annexe pour créer dans QGIS
une couche point. Cela peut se faire en créant un fichier csv à partir du tableau
que vous ajouterez dans QGIS en tant que couche de texte délimité.
25. De retour dans QGIS, rechargez le plugin avec Plugin loader et lancez le
plugin. Sélectionnez la couche contenant les sommets des polygones puis lancer
la création des polygones.
Figure 13:Exemple de création des polygones
21. 21
CONCLUSION
Le plugin créé est loin d’être optimal. Nous avons tout simplement voulu montrer le
processus de création. Il vous appartient maintenant de l’améliorer.