Moteur de rendu cartographique QgsMapRenderer

Etape 1

Lancer QGIS

Charger la couche de polygones suivante pk25_decoupage.zip

Dans la console Python de QGIS, ouvrir l'éditeur

Y insérer le code ci-dessous

Modifier la dernière ligne selon votre système de fichiers

Sauvegarder le script

Exécuter

from PyQt4.QtCore import *
from PyQt4.QtGui import *
aLayer = qgis.utils.iface.activeLayer()
img = QImage(QSize(800,600), QImage.Format_RGB32)
img.fill(QColor(255,255,255).rgb())
p = QPainter()
p.begin(img)
p.setRenderHint(QPainter.Antialiasing)
render = QgsMapRenderer()
render.setLayerSet([ aLayer.id() ])
rect = QgsRectangle(render.fullExtent())
render.setExtent(rect)
render.setOutputSize(img.size(), 96)
render.render(p)
p.end()
img.save("/tmp/render.png","png")

(compréhension du “portrayal model” ogo13:portrayalogc.png)

Etape 2

Créer un fichier singleSymbol.sld avec la description de style ci-dessous

Insérer au bon endroit l'instruction d'appel à la méthode loadSldStyle ci-après (en adaptant le chemin d'accès à votre fichier de style)

aLayer.loadSldStyle('/path/to/singleSymbol.sld')

Sauvegarder le script

Exécuter et voyez le résultat

Modifier encore la description de style PolygonSymbolizer à votre guise ...

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.1.0"
xmlns="http://www.opengis.net/sld"
xmlns:se="http://www.opengis.net/se"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd">
<NamedLayer>
<se:Name>CantonsCH_region</se:Name>
<UserStyle>
<se:Name>CantonsCH_region</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Single symbol</se:Name>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#f1f4c7</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#afb38a</se:SvgParameter>
<se:SvgParameter name="stroke-width">0.26</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>

Fichier de style : test.sld