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


geoinf15:qgsmaprenderer

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” portrayalogc.png)

Etape 2

  • Créer un fichier singleSymbol.sld avec la description de style ci-dessous qui utilise un PolygonSymbolizer
    <?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>kartenblatt_region</se:Name>
            <UserStyle>
                <se:Name>kartenblatt_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>
  • 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 la description de style pour distinguer les cartes combinées des cartes standards (utiliser une règle filtrée - Rule Filter)
geoinf15/qgsmaprenderer.txt · Last modified: 2018/05/16 10:05 (external edit)