==== Tutoriel "QGIS map renderer" ==== **Objectif** : comprendre le "portrayal model" {{:ogo13:portrayalogc.png?linkonly|}} par l'utilisation du **moteur de rendu cartographique** de **QGIS3** avec sa console Python et les classes [[https://qgis.org/pyqgis/master/core/Map/QgsMapRendererSequentialJob.html|QgsMapRendererSequentialJob]] et [[https://qgis.org/pyqgis/master/core/Map/QgsMapSettings.html|QgsMapSettings]]. {{:ogo13:portrayalogc.png?direct&400|}} Pour les utilisateur de **QGIS2**, voici le tutoriel [[geoinf15:qgsmaprenderer|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)) # close to Yverdon # set output size mapset.setOutputSize(QSize(800,800)) # even more, 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 {{:geoinf18:render.png?nolink&200|}}