GIS and Media fusion

"The explosive growth of the GeoWeb and geographic information has made GIS powerful media for the general public to communicate, but perhaps more importantly, GIS have also become media for constructive dialogs and interactions about social issues." - Sui & Goodchild

User Tools

Site Tools


geoinf18:qgsmaprendererjob

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
geoinf18:qgsmaprendererjob [2018/11/13 17:33]
oertz created
geoinf18:qgsmaprendererjob [2018/11/13 18:04] (current)
oertz
Line 1: Line 1:
 ==== Tutoriel "QGIS map renderer"​ ==== ==== Tutoriel "QGIS map renderer"​ ====
-Objectif : comprendre le "​portrayal model" {{:​ogo13:​portrayalogc.png?​linkonly|}} par l'​utilisation du **moteur de rendu cartographique** de QGIS3 avec [[https://​qgis.org/​pyqgis/​master/​core/​Map/​QgsMapRendererSequentialJob.html|QgsMapRendererSequentialJob]] et [[https://​qgis.org/​pyqgis/​master/​core/​Map/​QgsMapSettings.html|QgsMapSettings]]+**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]].
  
-Remarque ​pour les utilisateur de QGIS2, voici le tutoriel [[geoinf15:qgsmaprenderer|QgsMapRenderer 2015]].+{{: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 :
 +
 +<​code>​
 +# 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())
 +</​code>​
 +
 +=== Contrôle du "map renderer"​ ===
 +
 +  * pour prendre le contrôle et exporter dans un fichier image le résultat du rendu cartographique,​ on ajoute :
 +
 +<​code>​
 +# 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
 +</​code>​
 +
 +{{:​geoinf18:​render.png?​nolink&​200|}}
  
geoinf18/qgsmaprendererjob.1542126837.txt.gz · Last modified: 2018/11/13 17:33 by oertz