1 Utiliser la console python

Un premier moyen d’utiliser Python dans QGIS est la console Python.

1.1 Lancer la console

Pour lancer la console Python dans QGIS, il est possible soit de passer par Extension -> Console Python soit en cliquant directement sur le bouton dédié.

Lancer la console Python

Lancer la console Python

La console apparait alors en bas de la fenêtre QGIS.

Position de la console Python

Position de la console Python

Détail de la console Python

Détail de la console Python

1.2 Charger une couche

Pour charger une couche, il faut utiliser la méthode addVectorLayer fournie par l’interface iface.

  • uri : variable contenant le chemin vers la source de données, utilisée pour plus de lisibilité
  • arrondissements : variable pointant vers la couche qui sera créée.
Charger une couche

Charger une couche

En regardant plus dans le détail, on s’aperçoit que l’aide de QGIS fournit des informations sur les arguments attendus: 3 QString.

les `Qstring` sont des chaines de caractères que Qt 
(qui gère l'interface graphique de QGIS) transmettra 
à l'application.

En allant voir la documentation officielle de pyQGIS, nous pouvons voir la définition suivante:

addVectorLayer(self, vectorLayerPath: str, baseName: str, providerKey: str) → QgsVectorLayer

  • self réfère à l’interface, c’est un argument par défaut il peut être ignorer
  • vectorLayerPath: str: chemin vers la couche, sous forme de chaine de caractère
  • baseName: str: nom de la couche à l’insertion
  • providerKey: str: outil qui va permettre l’accès aux données : ici le composant ogr issu de GDAL
  • → QgsVectorLayer: création d’un nouvel objet de type QgsVectorLayer qui sera retourné par la méthode

La liste des providers est disponible soit depuis la fenêtre About de QGIS soit à travers la console Python :

Providers

Providers

1.3 Visualiser les données

Plusieurs méthodes permettent de voir le contenu de la couche.

  • soit appeler et afficher la table attributaire
  • soit parcourir les données à l’aide de boucles et les afficher dans la console

1.3.1 Afficher la table attributaire

Afficher la table attributaire

Afficher la table attributaire

1.3.2 Afficher le nom des champs

Pour pouvoir explorer un jeu de données, il faut connaitre les champs qu’il contient. Avec Python, une boucle permet rapidement de les afficher. Il nous faut recourir à deux méthodes :

  • .fields() : méthode de la couche qui retourne un tableau contenant les champs
  • .name() : méthode du champ qui retourne le nom de ce dernier
Affichage du nom des champs

Affichage du nom des champs

La couche contient les champs suivants :

  • nom
  • nomreduit
  • insee
  • libofficie
  • gid

Voyons quel est le libellé officiel (libofficie) de ces arrondissements.

1.3.3 Afficher des données

Là encore une boucle for va permettre de parcourir les entités de la couche et d’afficher le contenu du champ libofficie.

La méthode .getFeatures() retourne les entités de la couche. Une boucle sur ces dernières permet d’afficher leur contenu.

Afficher le contenu d’un champ

Afficher le contenu d’un champ

1.4 Exercice

  • Chargez les autres couches à l’aide de la console et visualisez leur contenu.
  • Suivant les recommandations d’Anita Graser, reproduisez l’affichage suivant :
Code INSEE de Lyon 1er Arrondissement : 69381
Code INSEE de Lyon 3e Arrondissement : 69383
Code INSEE de Lyon 5e Arrondissement : 69385
Code INSEE de Lyon 2e Arrondissement : 69382
Code INSEE de Lyon 4e Arrondissement : 69384
Code INSEE de Lyon 7e Arrondissement : 69387
Code INSEE de Lyon 9e Arrondissement : 69389
Code INSEE de Lyon 8e Arrondissement : 69388
Code INSEE de Lyon 6e Arrondissement : 69386

1.5 Réaliser un géotraitement

Voyons tout d’abord comment réaliser un géotraitement en utilisant l’interface graphique.

Si nous voulons exécuter un géotraitement, nous pouvons utiliser les outils proposés par le menu Vecteur -> Outils de géométrie -> Centroïdes. Ou passer par la boite à outils de traitements.

Boite à outils de traitements

Boite à outils de traitements

Dans la boite de dialogue de l’algorithme, paramétrez la couche arrondissements en entrée et cliquez sur Exécuter.

iBoite de dialogue du géotraitement Centroides

iBoite de dialogue du géotraitement Centroides

La boite de dialogue bascule sur l’onglet Journal et exécute l’algorithme.

Journal d’exécution

Journal d’exécution

L’opération s’est bien déroulée et une nouvelle couche temporaire Centroïdes a été créée.

Nouvelle couche Centroides

Nouvelle couche Centroides

Nous pouvons remarquer qu’une icone en forme de puce mémoire est à droite du nom de la couche. Cela indique une couche stockée en mémoire. En regardant dans le journal, il est possible de voir le mot-clé memory:.

1.6 Historique des traitements

Nous pouvons aussi consulter l’historique des traitements effectués.

Allez dans Traitement -> Historique

Cliquez sur le traitement pour avoir plus d’informations sur la commande exécutée:

Historique des traitements

Historique des traitements

Analysons cette partie:

  • processing.run() : commande de lancement d’un traitement
  • native:centroids : Algorithme de calcul des centroids fourni par QGIS (natif)
  • INPUT : chemin vers les données en entrée
  • ALL_PARTS : paramètre spécifique à l’algorithme
  • OUTPUT : où vont les données en sortie.

Attention: pour les sorties temporaires, le paramètre OUTPUT pourra prendre la valeur memory: ou TEMPORARY_OUTPUT selon la version de QGIS.

1.7 Exercices

  • Essayez d’autres algorithmes issus de QGIS, GRASS ou SAGA et examinez les différences.
  • Faites varier les sorties vers shapefile et GeoPackage et observez les différences
  • Essayer de copier/coller la commande processing.run() dans la console. Que se passe-t-il ?

1.8 Récupérer la sortie

Lors de la commande précédente, le traitement a été effectué mais n’est pas apparu. En effet, le résultat est stocké dans result['OUTPUT'] et nous devons le charger dans le projet QGIS.

Cette commande peut parfois ne pas fonctionner.

Pour ne pas avoir à recourir à deux étapes pour charger la nouvelle couche dans le projet, il est possible de recourir à la méthode processing.runAndLoadResults():

processing.runAndLoadResults("native:centroids", 
    {'INPUT':'/home/niko/Téléchargements/lyon/arrondissements.shp',
    'ALL_PARTS':False,
    'OUTPUT':'memory:'
    })

1.9 Exercice

Essayez de créer de fusionner les géométries des arrondissements de Lyon et de créer un buffer de 5 km autour de Lyon.

1.10 Conclusion sur l’utilisation de la console Python de QGIS

Effectuer quelques opérations dans la console peut être intéressant pour de l’exploration mais stocker les différentes étapes dans un script permet de les réexécuter simplement.