TD 1 - Interaction avec l'interface¶
Dans ce TD nous allons découvrir comment utiliser PyQGIS pour interagir avec l'interface de QGIS en ligne de commande.
1. Manipuler l'interface¶
Créez un projet QGIS et sauvegardez-le à l'emplacement de votre choix sous le nom « td1.qgz ».
1.1 Ajouter des couches¶
Ajoutez la couche vectorielle « RPG » (fichier « RPG.gpkg ») à votre projet en utilisant iface, sélectionnez-là dans le panneau du projet puis récupérez-là dans une variable Python rpg en ligne de commande.
Tip
Le fournisseur de données à utiliser pour les couches vectorielles est "ogr".
Solution
# Ajouter la couche vectorielle
iface.addVectorLayer("/path/to/RPG.gpkg", "RPG", "ogr")
# Sélectionner la couche dans l'interface QGIS
rpg = iface.activeLayer()
1.2 Zoom¶
Sélectionnez des entités avec votre souris puis utilisez une action de iface pour zoomer sur la sélection.
Tip
Les méthodes qui déclenchent des actions contiennent le mot clef action.
Elles renvoient des objets de type QAction qui doivent être déclenchés avec la méthode trigger().
Solution
iface.actionZoomToSelected().trigger()
1.3 Canvas¶
Récupérez l'objet QgsMapCanvas depuis iface et affichez dans la console les éléments suivants:
- Les coordonnées du centre du canvas.
- L'étendue du canvas.
- La liste des couches visibles dans le canvas.
- Les dernières coordonnées de votre curseur de souris.
Solution
canvas = iface.mapCanvas()
canvas.center()
canvas.extent()
canvas.layers()
canvas.mouseLastXY()
1.4 Messages¶
Récupérez la classe QgsMessageBar depuis iface et servez-vous en pour afficher:
- Le message « Hello world! ».
- Une erreur de type « Layer error » avec le message « There is an error with layer XXXX ».
Solution
message_bar = iface.messageBar()
message_bar.pushMessage("Hello world!")
message_bar.pushCritical("Layer error", "There is an error with layer XXXX.")
2. Manipuler le projet QGIS¶
2.1 Métadonnées du projet¶
Récupérez le projet QGIS courant avec la classe QgsProject et affichez le titre du projet ainsi que son chemin (chemin du fichier .qgs). Ensuite changez le nom du projet en « TD 1 - Interaction avec l'interface ».
Solution
project = QgsProject.instance()
project.title()
project.fileName()
project.setTitle("TD1 - Interaction avec l'interface")
2.2 SCR du projet¶
Récupérez puis changez le SCR du projet en le mettant sur 4326 puis faites l'opération inverse pour remettre le projet sur le SCR d'origine.
Tip
La gestion des SCR en pyQGIS passe par la classe QgsCoordinateReferenceSystem.
Solution
origin_crs = project.crs()
new_crs = QgsCoordinateReferenceSystem(4326)
project.setCrs(new_crs)
project.crs()
project.setCrs(origin_crs)