SLD: Tips en tricks

Vooraf

 

Hartelijk welkom bij deze korte workshop “SLD: Tips en tricks”.

 

Leerdoelen

Aan het eind van de training

  • Weet je welke tools gebruikt kunnen worden om de data in de database en Geoserver te importeren

  • Kun je zelf aan de slag met Bridge Tool en Style Viewer

  • Je kent de opbouw van een SLD

  • Je kent de mogelijkheden om de SLD’s aan te passen

  • Je kan mooie SLD’s maken voor WMS: o.a. Stacked Points en Chart 

  • SLD voor WFS in Onemap: je weet welke opties er beschikbaar zijn voor een SLD voor WFS (SLD library voor Onemap)

 

Let op:

Op de geoserver zijn de volgende Extensions geïnstalleerd:

  • Importer extension ==> om data en stijl met GeoCatBridge naar geoserver te publiceren

  • Chart extension ==> om charts in stijl te gebruiken

1. Inleiding

Om de lagen in Geoserver te stylen wordt meestal een xml SLD style document gebruikt. 

Voorbeeld van een basis style :

<?xml version="1.0" encoding="ISO-8859-1"?> <StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NamedLayer> <Name>Simple point</Name> <UserStyle> <Title>Geoserver SLD Cook Book: Simple point</Title> <FeatureTypeStyle> <Rule> <PointSymbolizer> <Graphic> <Mark> <WellKnownName>circle</WellKnownName> <Fill> <CssParameter name="fill">#FF0000</CssParameter> </Fill> </Mark> <Size>6</Size> </Graphic> </PointSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>

 

2. Oefeningen

2.1 Voorbereiding QGIS project en data

LET OP:

  • Wanneer de data met GeoCatBridge  naar Geoserver wordt gepubliceerd, wordt er altijd in Geoserver een nieuwe Omgeving en Bron aangemaakt. Namen van de Omgeving en Bron in Geoserver worden hetzelfde als de naam van jouw QGIS project. 

  • Bestaande Workspace, Bron en data/styles  ( met hetzelfde naam) worden ALTIJD  overgeschreven

  • Laag die bestaat in een Workspace/Bron maar niet meer in de QGIS project wordt verwijderd uit Geoserver maar de tabel blijft bestaan in database 

Voor selfstudie:

Download data: https://data.nieuwland.nl/index.php/s/MbRMgtb9Jwp4des

ww: slddata_workshop

Om de data in de database en op de Geoserver van andere cursisten niet te overschrijven ga je de QGIS project en de data opnieuw opslaan met een andere naam (voeg overal eigen naam erbij ) :

  • Open in QGIS een project : c://OpenDag_sld_workshop/Workshop_SLD_ori

  • Sla het project opnieuw als: c://OpenDag_sld_workshop/‘Workshop_sld_jouwnaam

 

 

  • Exporteer vervolgens alle lagen naar een locatie: (C:\OpenDag_SLD_workshop\workshop_x\Data\Originelebestandsnaam + jouwnaam)

  • en hernoem de lagen (rechter muisknop/Exporteren/ObjectenOpslaan). I.p.v.: _naam* gebruik _jouwnaam

 

 

  • Herhaal het voor alle lagen, behalve 'pastel’ laag

  • Verwijder de originele lagen uit het project zodat er alleen de lagen met jouw naam over blijven

 

2.2 Een eenvoudige stijl aanmaken en export naar Geoserver  (GeoCatBridge)

 

  • Ga bij de kaartlaag: ‘Bomen_centrum_naam’ naar Eigenschappen/Symbologie en maak een mooie simple symbologie aan ( denk bv aan de dikte en kleur van de lijn rondom een punt die je kunt aanpassen, zet de units naar pixels om).

 

 

  • Ga nu naar Geoserver :

 

Op de Geoserver bevindt zich reeds een aangemaakte Omgeving met databron
( Dataron type: PostGIS) 

 

 

Deze Databron wordt een template voor de Omgeving die door Bridge wordt aangemaakt wanneer je de lagen naar Geoserver exporteert.

  • Ga terug naar QGIS project en open BridgeTool 

 

  • Ga in Bridge naar Tabblad: Servers en klik op ‘Cursus_open_dag’

  • Hier zie je instellingen van “Cursus Geoserver”, met als ‘Storage’ optie: Import into PostGIS database ( managed by Geoserver) “.  

  • De datastore in Bridge verwijst naar de reeds aangemaakte Datastore/Bron  in Geoserver.

 

  • Ga in BridgeTool naar tabblad: ‘Publish’ en vink alle lagen uit behalve ‘Bomen_centrum_naam*’ laag.

  • Kies de juiste dataserver ( wij hebben er hier maar een)

  • En klik op “Publiceren”

 

 

De symbologie en kaartlaag wordt naar Geoserver gepubliceerd.

 

  • Ga naar de Geoserver en bekijk de laag

2.3 Style aanmaken voor een kaartlaag met filter ( StyleViewer) 

 

  • Ga in QGIS naar de kaartlaag: ‘Containers_Wageninen_naam*

  • Bekijk de style van de laag zoals het nu is, met de TOOL  “StyleViewer”

(ga in TOOLBAR naar WEB/GeocatBridge/StyleViewer

 

 

Aan de rechterkant verschijnt de StyleViewer. 

  • Klik op tab ‘SLD’:

Je ziet de style van onze kaartlaag in xml formaat.
Een legenda eenheid is aangegeven van <Rule> tot </Rule>
We zien hier als symbool een simple point symbolizer met verschillende parameters.

<Opacity> is een transparency ( 0-1). De namen van de rest van de parameters spreken voor zich.

 

Je zou kunnen deze SLD kopiëren naar de tekst editor, het eventueel handmatig aanpassen en vervolgens toevoegen aan Geoserver.

 

  • Via Eigenschappen/Symbologie pas je de stijl van de laag “Containers_Wageningen_naam* als volgt aan (kies Categorieen  en als Waarde: Inhoud) :

 

Je ziet dat de ‘inhoud’ is opgegeven in dm3 of in m3.

We kunnen de gegevens in de tabel niet aanpassen maar we gaan WEL de gegevens groeperen in de legenda.

  • Als legenda type kies: Regel-gebaseerd

  • Dubbel klik op de eerste regel 

 

  • Pas de filter aan zodat alle Containers met inhoud = 4 m3 een kleur krijgen 

"inhoud" = 4 OR "inhoud" = '4,0' OR "inhoud" = 4000

 

 

  • Doe hetzelfde voor de Containers met een inhoud van 5 m3

  • Verwijder met de rode -- legenda eenheden die nu opgenomen zijn in de 4 m3 en 5m3 symbolen.

  • Klik op ‘Toepassen’ en OK 

  • Bekijk de styling in de SLD Styler: in elke <Rule> is een tag <ogc:Filter> bijgekomen.

  • Publiceer alle lagen in het QGIS project naar Geoserver .

 

 

Waarschuwing verschijnt

 

  • Klik op ‘Ja’ 

2.3.1. Bekijken van de stijling in de Geoserver 

  • Ga naar de Voorvertoning en bekijk jouw lagen

2.4 Sld: stack points  (WMS lagen) 

 

In SLD kunnen ook functies gebruikt worden. Wij gaan nu een paar stijls/sld met functies voor WMS lagen gebruiken. Bv stack point, om punten te groeperen.

 

  • In QGIS bij de laag met bomen kies  ‘Cluster punten’ symbologie .

 

 

 

  • Bekijk nu in de SLD styler de xml van deze stijl. 

U ziet dat de stack point symbologie hier niet wordt opgenomen. 

Daarom gaan we een andere, bestaande SLD gebruiken om een nieuwe style in geoserver aan te maken voor onze bomen laag.

  • Ga naar de Geoserver/Stijlen

  • Voeg een nieuwe stijl toe ( kopieer de code uit de bestaande stackpoint SLD, Locatie SLD:) 

 

 

  • Geef de styling een naam: “Workshop_SLD_stackedpoint_bomen_naam*”

  • Opslaan

  • Ga naar de laag met Bomen 

  • Voeg de stijl die nu aan de bomen kaartlaag is toegevoegd als Extra stijl en de nieuwe stacked style als een standaard style

  • Sla de aanpassingen op

  • Bekijk de laag in Voorvertoning

 

 

  • Vergelijk het met oorspronkelijke style door in de voorvertoning window de oorspronkelijke style te kiezen (klik op de drie punten aan de linkerkant om “Styles” te kunnen kiezen)

 

  • Ga terug naar de sld, bekijk deze.

 

2.5 Sld: Charts  ( WMS lagen)

In deze oefeningen gaan we de chart sld’s te maken.

2.5.1 PieChart

 

 

  • Maak in de Geoserver een nieuwe style aan zoals beschreven in oefening 2.4 .
    Gebruik hierbij SLD C:\OpenDag_SLD_workshop\Sld_ori\ Workshop_SLD_Piechart_buurt_leeftijd_inzoomen.sld

  • Past de naam van de sld aan: 

Workshop_SLD_Piechart_buurt_leeftijd_inzoomen_naam

  • Voeg deze style aan jouw “Buurten” laag, sla de laag op en bekijk het in Voorvertoning (Let op : zoom in )

 

 

  • Bekijk de sld:

In PieChart wordt er als graphic <Online resource> gebruikt met meerdere variabeles:

 

2.5.2 BarChart 

  • Doe dezelfde oefeningen als met de PieChart.

Gebruik hierbij de sld:

C:\OpenDag_SLD_workshop\Sld_ori\Workshop_Bar_chart_Buurt_allochtonen_wag_Inzoomen.sld

 

  • Voeg deze style als een alternatieve style in ‘buurten’ laag, 

  • Bekijk de style in Voorvertoning

Bekijk de SLD

 

 

2.6 Styling WFS lagen

 

Voor de WFS lagen in Onemap kan de styling uit SLD Styler gebruikt worden. Echter de keuze om de WFS lagen te stijlen is gelimiteerd.

 

2.6.1 WFS library 

Bij de WFS styling in Onemap wordt een open source (door Nieuwland aangeboden)  library gebruikt. 

  • Ga naar de https://github.com/nieuwlandgeo/sldreader

  • Scrol naar beneden.
    Onder de kop Restrictions on supported SLD Features zijn de stijling opties voor point, line en polygoon Symbolizers beschreven.

 

2.6.2 ONEMAP: wfs style toevoegen aan kaartlaag

Eerst gaan we een nieuwe kaart in OneMap aanmaken, vervolgens laag toevoegen en sld.

 

 

Log in met ( xxx 🡺 vervang door een juiste nummer)

User: workshop_sld_xxx

Ww: Workshop_sld_x#1

 

  • Sla deze template kaart opnieuw op met de naam: Workshop - SLD – Jouwnaam*

( gebruik optie “Opslaan als” )

  • Ga naar de nieuwe kaart

  • Ga naar Kaartlagen/Kaartlaag toevoegen

 

  • Voeg uit geoserver  jouw laag met containers als WFS aan Onemap toe (kies: Mapservice “Cursus_GS (wfs) “)

 

 

 

  • Voeg meteen de nieuwe laag aan jouw kaart (klik op “Laag toevoegen aan kaart” en kies de juiste kaart )

  • Klik op “Opslaan”

  • Ga nu naar de ‘Stijl’ tab en kies als ‘Stijltype’ een ‘SLD-bestand’

 

 

  • Ga nu naar QGIS 

  • Kopiëer ( ctrl A + ctrl C)  uit StyleViewer SLD code voor de laag: “containers_Wageningen_naam” en “Paste” het in de SLD Onemap.

  • Publiceer kaartlaag

  • Bekijk de kaartlaag het in de viewer

 

2.6.3 Gebruik van external graphic  in sld voor wfs laag 

 

We gaan nu  in de SLD uit vorige oefening een symbool voor Containers met inhoud van 4 m3 vervangen door symbool met external graphic (png), door eerst SLD aan te passen en vervolgens een symbool aan SLD toe te voegen.

 

 

 

 

  • Klik op “Flags of Benelux Countries” en kopieer uit de SLD onder de <PointSymbolizer> de hele tag < Graphic> ( van <Graphic> tot </Graphic> )

 

  • In Onemap in de SLD voor containers (wfs) vervang in de bovenste <Rule> het hele stuk van <Graphic> t/m </Graphic> met de gecopieerde code. 

  • Vervolgens pas de volgende tags aan:

<Rotation>:

Van 

Naar 

 

< Size>:

Van

Naar 

 

De link naar het symbool dient ook aangepast worden. We gaan de symbool die aan de Onemap is toegevoegd gebruiken.

  • In Onemap ga naar “Bestanden” / workshop_stijl en klik op de xxx.png bestand

  • Klik op ‘Directe link’

 

  • In SLD vervang de link in ‘href’ door de net opgehaalde link

 

  • Publiceer de SLD 

  • Bekijk het WFS-bestand in de viewer

 

3. Handige links

 

  • Voor meer informatie over creating stacked points zie 

https://www.cadlinecommunity.co.uk/hc/en-us/articles/360007541578-Geoserver-Creating-Stacked-Points

 

  • Voor meer informatie over chart styling zie :

https://docs.Geoserver.geo-solutions.it/edu/en/pretty_maps/charting.html   

 

  • link naar de github library Onemap

https://github.com/nieuwlandgeo/sldreader   

 

  • https://docs.Geoserver.org/2.25.x/en/user/styling/webadmin/index.html

 

4. Tips en Tricks – samenvatting

 

  • Gebruik StyleViewer van GeoCat om SLD’s aan te maken ( En evt GeoCatBridge om het naar Geoserver te versturen)

 

  • Werkt de SLD van StyleViewer niet?

 

  •  Pas het aan in een texteditor, gebruik hiervoor bv de code/Rules uit bestaande SLD. Het gaat meestal mis bij de < Filters> en <Symbolizers>

 

  • Voor WFS-lagen: controleer op https://github.com/nieuwlandgeo/sldreader of Onemap jouw stijl ondersteunt.

 

  • Gebruik online resources bv OSM symbolen, zie https://wiki.openstreetmap.org/wiki/OpenStreetMap_Carto/Symbols

 

  • Let op: als je bij het aanmaken van een SLD een code uit andere SLD’s gebruikt, zorg dan dat er geen verschillende ‘prefixes’ in jouw SLD zijn.

 

Verschillende tools om een SLD aan te maken gebruiken verschillende prefixes bijvoorbeeld:

 

  1. Geen prefix:

  1. <Sld:> prefix

 

  1. <Se:> Prefix