Zelf de inkleuring van een WMS definieren

Wat?

Een Styled Layer Descriptor (SLD) is een XML bestand dat de inkleuring van een kaartlaag beschrijft.
SLD’s worden onder meer gebruikt om een laag in een WMS service in te kleuren.
Gedetailleerde informatie over de standaard vind je in "OGC Styled Layer Descriptor Implementation Specification, Version 1.0.0".
Met behulp van de SLD of de SLD_BODY parameter kan een gebruiker (of beter een ontwikkelaar) een GetMap request aanpassen zodat een kaartlaag ingekleurd wordt zoals gewenst.

Hoe?

Er zijn meerdere manieren om dit te doen, maar voor de duidelijkheid werken we hier met 1 case.
Dit demonstreren we aan de hand van een voorbeeld:
https://geoservices.informatievlaanderen.be/raadpleegdiensten/administratieve_eenheden/wms?LAYERS=RefgemGrens&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:31370&BBOX=79000,150000,136000,207000&WIDTH=256&HEIGHT=256
Hier bevragen we de laag RefgemGrens zonder een style te specifieren, met andere woorden we vragen de default style.
Willen we nu de laag in een andere kleur verkrijgen, dan maken we eerst en vooral een SLD aan.

Het is belangrijk hier de naam van de laag te specifieren (RefgemGrens) en de stijl een naam te geven (MijnKleur).

De GetMap request vraagt dan twee wijzigingen

  • de style moet gespecifieerd worden (STYLES=MijnKleur)
  • de SLD moet meegegeven worden, en dit kan op twee manieren
  1. De SLD opslaan in een bestand en over http beschikbaar stellen; in dit geval moet SLD=PadNaarSLD meegegeven worden.
  2. De SLD url-encoderen en de parameter SLD_BODY=GeëncodeerdeSLD meegeven (zie hieronder).

https://geoservices.informatievlaanderen.be/raadpleegdiensten/administratieve_eenheden/wms?LAYERS=RefgemGrens&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=MijnKleur&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:31370&BBOX=79000,150000,136000,207000&WIDTH=256&HEIGHT=256&SLD_BODY=<%3Fxml%20version%3D"1.0"%20encoding%3D"utf-8"%3F> <StyledLayerDescriptor%20version%3D"1.0.0"%20xsi%3AschemaLocation%3D"http%3A%2F%2Fwww.opengis.net%2Fsld%20StyledLayerDescriptor.xsd"%20xmlns%3D"http%3A%2F%2Fwww.opengis.net%2Fsld"%20xmlns%3Aogc%3D"http%3A%2F%2Fwww.opengis.net%2Fogc"%20xmlns%3Axlink%3D"http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink"%20xmlns%3Axsi%3D"http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance"> <NamedLayer> <Name>RefgemGrens<%2FName> <UserStyle> <Name>MijnKleur<%2FName> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Stroke> <CssParameter%20name%3D"stroke">%230000ff<%2FCssParameter> <CssParameter%20name%3D"stroke-width">5<%2FCssParameter> <%2FStroke> <%2FPolygonSymbolizer> <%2FRule> <%2FFeatureTypeStyle> <%2FUserStyle> <%2FNamedLayer> <%2FStyledLayerDescriptor>

En de grenzen verschijnen in het blauw.

Klaar?

Eens je hiermee aan de slag gaat moet er uiteraard veel geprobeerd en getest worden. SLD’s laten inkleuringen toe, maar ook labeling en zelfs filtering.

Het is belangrijk te weten dat voor de GRB WMS en voor de WMS’sen met INSPIRE geharmonizeerde data de naam van de NamedLayer ook een prefix moet hebben.
Dat betekent dat het stuk tussen ‘raadpleegdiensten/’ en ‘/wms’ (zoals in geoservices.informatievlaanderen.be/raadpleegdiensten/GRB/wms) voor de naam geplaatst moet worden.
Voor de kadastrale percelen wordt dat dus <Name>GRB:GRB_ADP</Name>
Dit komt door architectuurkeuzes die in het verleden gemaakt werden.

Nog enkele voorbeelden met de SLD parameter ipv SLD_BODY

Zelfde voorbeeld als hierboven:
https://geoservices.informatievlaanderen.be/raadpleegdiensten/administratieve_eenheden/wms?LAYERS=RefgemGrens&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=MijnKleur&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:31370&BBOX=79000,150000,136000,207000&WIDTH=256&HEIGHT=256&SLD=http://pagsserveraiv.blob.core.windows.net/slds/forum/blauwegemeentegrenzen.xml

Een gemeente in een andere kleur.
https://geoservices.informatievlaanderen.be/raadpleegdiensten/administratieve_eenheden/wms?LAYERS=RefgemGrens&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=MijnKleur&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&CRS=EPSG:31370&BBOX=79000,150000,136000,207000&WIDTH=256&HEIGHT=256&SLD=http://pagsserveraiv.blob.core.windows.net/slds/forum/highlightMelle.xml

Een combinatie van 2 lagen waarbij 1 laag anders ingekleurd wordt, en labels krijgt.
https://geoservices.informatievlaanderen.be/raadpleegdiensten/ofw/wms?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=,labels&VERSION=1.3.0&LAYERS=OFW,OFW_vdc&WIDTH=1920&HEIGHT=815&CRS=EPSG:3857&BBOX=370861.17431411985,6583927.19780062,407550.9478909557,6599501.242313704&SLD=http://pagsserveraiv.blob.core.windows.net/slds/forum/sldvdcnofill.xml