Tutoriel "QGIS map renderer"

Objectif : comprendre le “portrayal model” ogo13:portrayalogc.png par l'utilisation du moteur de rendu cartographique de QGIS3 avec sa console Python et les classes QgsMapRendererSequentialJob et QgsMapSettings.

Pour les utilisateur de QGIS2, voici le tutoriel QgsMapRenderer 2015.

Prérequis pour ce tutoriel sur QGIS3

les données g4districts98 disponible dans le dossier https://drive.switch.ch/index.php/s/jHcUvhFSRwEneES

Découverte du "map renderer"

pour une couche chargée et sélectionnée dans la table des couches, ouvrir la console Python :

# we work with the selected layer
layer = iface.activeLayer()
# we want to know the current map settings
canvas = iface.mapCanvas()
mapset = canvas.mapSettings()
# we display the mandatory settings to build a map
print(mapset.layerIds())
print(mapset.extent().asWktPolygon())
print(mapset.outputSize())

Contrôle du "map renderer"

pour prendre le contrôle et exporter dans un fichier image le résultat du rendu cartographique, on ajoute :

# set layer(s)
mapset.setLayers([layer])
# set extent
mapset.setExtent(QgsRectangle(530000,180000,550000,200000))
# set output size
mapset.setOutputSize(QSize(800,800))
# set background color
mapset.setBackgroundColor(QColor(0,0,0,0))
job = QgsMapRendererSequentialJob(mapset)
job.start()
job.waitForFinished()
img = job.renderedImage()
img.save('/home/olivier/tmp/render.png', 'png') # adapt the path properly