QGIS est un logiciel de SIG distribué sous licence libre GNU GPL. C’est un projet officiel de la fondation OSGeo (Open Source Geospatial) qui permet de visualiser, gérer, éditer, analyser des données géospatiales et de composer des cartes. Les formats de données (vecteurs et rasters) qu’il supporte sont très nombreux et il permet également de se connecter à différents types de bases de données.
QGIS est développé en C++ (en utilisant notamment le framework Qt) et il est notamment compatible avec GNU/Linux, Max OS X et Windows.
Depuis QGIS 0.9 le logiciel dispose d’une API python permettant :
d’appeler l’API depuis la console Python de QGIS.
de créer des plugins pour QGIS.
de créer des applications externes appelant les fonctionnalités de QGIS.
Automatiser des actions répétitives
Faire tourner des scripts
Effectuer des traitements spécifiques
Développer ses propre plugins
Développer ses propres applications
Note
Ce TP a été conçu QGIS 3.
La documentation complète de l’API python qui va être utilisée est disponible en ligne : https://qgis.org/pyqgis/3.16/.
Avant la version 3 on ne trouve de documentation de ce type pour l’API PyQgis mais il est possible de se référer à la documentation complète de l’API QGIS en C++ dont est dérivée l’API Python : https://qgis.org/api/2.18/
QGIS dispose d’une puissante interface de programmation qui permet d’étendre ses fonctionnalités notamment en écrivant des scripts pour automatiser les traitements. Cette API Python est généralement désignée sous le nom de PyQgis.
Même en étant débutant, en apprenant un peu de python, l’interface de programmation de QGIS permet d’être plus productif (automatisation d’actions répétitives, chargement personnalisé au démarrage de l’application, contournement de limites imposées par l’interface graphique, etc.).
Ce tutoriel ne nécessite que peu de connaissances en programmation Python et a pour but de donner une introduction aux capacités de scripting dans QGIS avec PyQGIS.
Note
Dans les exercices suivants, faîtes l’effort d’écrire le code plutôt que de le copier-coller. Cela facilitera votre compréhension et vous évitera d’éventuelles erreurs de syntaxe.
QGIS fournit une console interactive python. Elle peut être ouverte depuis le
menu Extension > Console Python
, en pressant CTRL + ALT + P ou en appuyant
sur l’icône qui lui est dédiée.
Lors de l’utilisation de la console Python dans QGIS, une variable iface
est
déjà existante. Cette variable est une instance de QgisInterface
et elle
permet d’accéder au canevas de la carte, aux menus, barres d’outils et aux
autres parties de l’application QGIS ouverte.
De même lors du démarrage d’une session interactive dans cette console,
les imports suivants sont réalisés :
from qgis.core import *
import qgis.utils
Nous manipulerons des données vectorielles ainsi que des données raster dans cette série de TP.
Données vectorielles
Comme vous le savez, on parle généralement de couches (layers) de données vectorielles.
Chaque couche de données contient des entités (features).
Chaque entité contient généralement une géométrie (geometry) ainsi que valeurs attributaires (attributes).
Si ce modèle est simple, il est important de bien l’avoir en tête puisque la majorité des opérations que nous réaliserons feront directement appels à cette organisation (pour la couche XXX, parcourir ses entités et, pour chaque entité, appliquer l’opération YYY).