Aide-mémoire QGIS Python

J’ai décidé de commencer à regarder ce qu’on peut faire dans QGIS avec Python.

Cet article a pour but d’être un aide-mémoire des choses simples qu’on peut faire en Python, avec ou sans QGIS.

Choses spécifiques à QGIS :

Manipuler les couches :

layers = self.iface.legendInterface().layers()

Ou, depuis la console :

layers = qgis.utils.iface.legendInterface().layers()

Exemple de for et d’affichage du nom (affiche le nom de toutes les couches, et met dans une variable la couche dont le nom est « routes ») :

for layer in layers:
        print layer.name()
        if layer.name() == "route":
        monlayer = layer

print monlayer.name()

Manipuler des fichiers :

Affiche le nom (chemin inclus) du fichier contenant le projet courant :

from qgis.core import *
projectpath = QgsProject.instance().fileName()

Ouvrir et afficher une couche vecteur :

centroidespath = dirpath + "/centroides_cagb.shp"
centroides = QgsVectorLayer(centroidespath, "centroides", "ogr")
QgsMapLayerRegistry.instance().addMapLayer(centroidd)

Autre solution, plus simple :

qgis.utils.iface.addVectorLayer(centroidespath, "centroides", "ogr")

Afficher des attributs :

Afficher le nom de toutes les entités d’une couche :

# On met notre couche dans une variable.
layer = qgis.utils.iface.mapCanvas().currentLayer()
# On recupere la position du champ NOM dans la table d'attributs.
idx = layer.fieldNameIndex('NOM')
# On accede aux donnees de la couche.
provider = layer.dataProvider()
# Pour chaque entite, on affiche le nom.
for toto in provider.getFeatures():
       print toto.attributes()[idx]

Choses non spécifiques à QGIS :

Expressions rationnelles :

import re
dirpath = re.sub(r'/[^/]+$', '', projectpath.rstrip())

Met le chemin du projet dans dirpath. Si projectpath contenait /home/adrien/qgis/projet.qgs, dirpath contiendra /home/adrien/qgis.

Cette expression signifie : un slash (/) suivi par un ou plusieurs (+) caractères autres que slash ([^/]) à la fin de la chaîne ($).

Liens :

Un tuto ici (en anglais) mais dont certaines commandes ne fonctionnent pas chez moi (obsolètes ?).

Ce contenu a été publié dans Astuces, Informatique. Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>