11.2. Lesson: Server voor WMS

De voor deze oefening gebruikte gegevens zijn beschikbaar in de submap qgis-server-tutorial-data van de training data die u hebt gedownload. Voor het gemak en om mogelijke problemen met rechten te vermijden, gaan we er van uit dat deze bestanden zijn opgeslagen in de map /home/qgis/projects. Pas daarom de volgende instructies aan naar uw eigen pad.

De demogegevens bevatten een project voor QGIS project genaamd world.qgs dat al is voorbereid om te kunnen werken met QGIS Server. Als u uw eigen project wilt gebruiken of wilt leren hoe een project wordt voorbereid, bekijk dan het gedeelte Uw project configureren.

Notitie

Deze module geeft de URL’s weer zodat het publiek gemakkelijk onderscheid kan maken tussen de parameters en de waarden van de parameters. Hoewel de normale indeling is:

...&field1=value1&field2=value2&field3=value3

gebruikt deze handleiding:

&field1=value1
&field2=value2
&field3=value3

Plakken hiervan in Mozilla Firefox werkt correct, maar andere webbrowsers, zoals Chrome, zouden ongewenste spaties kunnen toevoegen tussen de paren veld:parameter. Dus, als u dit probleem tegenkomt dient u ofwel Firefox te gebruiken of de URL’s aan te passen zodat zijn in de indeling voor op één regel staan.

Laten we een verzoek voor WMS GetCapabilities maken in de webbrowser of met curl:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities
&map=/home/qgis/projects/world.qgs

In de configuratie voor Apache uit e vorige les stelt de variabele QGIS_PROJECT_FILE het standaard project in op /home/qgis/projects/world.qgs. Echter, in het bovenstaande verzoek gebruikten we de parameter map parameter om expliciet te zijn en om aan te geven dat het kan worden gebruikt om naar een punt in elk project te kunnen verwijzen. Indien u de parameter map verwijdert uit het bovenstaande verzoek zal QGIS Server hetzelfde antwoord teruggeven.

Door een WMS-cliënt laten verwijzen naar de URL GetCapabilities, krijgt de cliënt als antwoord een XML-document met metadata van de informatie van de Web Map Server, bijv. welke lagen het bevat, de geografische bedekking, in welke indeling, welke versie van WMS etc.

Omdat QGIS zelf ook een WMS/WMTS-cliënt is kunt u een nieuwe serververbinding voor WMS maken met de hulp van de bovenstaande URL GetCapabilities. Bekijk de gedeelten Lesson: Web Mapping Services of Selecteren van servers voor WMS/WMTS over hoe dit te doen.

Door het toevoegen van de WMS-laag countries aan uw project van QGIS zou u een afbeelding moeten krijgen zoals hieronder:

../../../_images/qgis_getmap_request.png

Fig. 11.33 QGIS Desktop verwerkt de QGIS Server WMS-service laag countries

Notitie

QGIS Server verwerkt lagen die zijn gedefinieerd in het project world.qgs. Door het project te openen met QGIS kunt u zien dat er verschillende stijlen zijn voor de laag countries. QGIS Server is zich daar ook van bewust en u kunt in uw verzoek de stijl kiezen die u wilt. De stijl classified_by_population werd voor bovenstaande afbeelding gekozen.

11.2.1. Loggen

Wanneer u een server instelt, zijn de logboeken altijd belangrijk omdat zij weergeven wat er gebeurt. We hebben in het bestand *.conf de volgende logboeken ingesteld:

  • QGIS Server log op /logs/qgisserver.log

  • qgisplatform.demo Apache access log op qgisplatform.demo.access.log

  • qgisplatform.demo Apache error log op qgisplatform.demo.error.log

De bestanden voor de logboeken zijn eenvoudigweg tekstbestanden, dus u kunt een tekstbewerker gebruiken om ze te bekijken. U kunt ook de opdracht tail in a terminal gebruiken: sudo tail -f /logs/qgisserver.log.

Dit zal doorlopend uitvoer geven in de terminal over wat er in dat logbestand staat geschreven. U kunt ook drie terminals geopend hebben voor elk logbestand, als volgt:

../../../_images/terminal_tail_log.jpg

Fig. 11.34 De opdracht tail gebruiken om de uitvoer van de logs van QGIS Server te visualiseren

Wanneer u de QGIS Desktop gebruikt om de WMS-services van QGIS Server WMS te verwerken zul;t u alle verzoeken zien die QGIS verstuurt naar de Server in het access log, de fouten van QGIS Server in het QGIS Server log etc.

Notitie

  • Als u kijkt naar de logs in de volgende gedeelten zult u beter begrijpen wat er gebeurt.

  • Door Apache opnieuw te starten terwijl u kijkt naar het log van QGIS Server, vindt u enkele extra aanwijzingen over hoe dingen werken.

11.2.2. Verzoeken GetMap

QGIS Desktop gebruikt, om de laag countries weer te geven,, net als elke andere WMS-cliënt, verzoeken GetMap.

Een eenvoudig verzoek ziet er uit als:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries
&FORMAT=image/jpeg

Het bovenstaande verzoek zal de volgende afbeelding teruggeven:

Afbeelding: eenvoudig verzoek GetMap aan QGIS Server

../../../_images/getmap_simple_request.jpg

Fig. 11.35 Antwoord van Qgis Server na een eenvoudig verzoek GetMap

11.2.3. moderate Try Yourself De parameters Image en Layers wijzigen

Laten we, gebaseerd op het bovenstaande verzoek, de laag countries vervangen door een andere.

U zou, om te kunnen zien welke andere lagen beschikbaar zijn, het project world.qgs kunnen openen in QGIS en kijken naar de inhoud. Onthoud echter dat de WMS-cliënten geen toegang hebben tot het project van QGIS, zij kijken slechts naar de inhoud van het document capabilities.

Ook is er een optie in de configuratie die enkele bestaande lagen in het project van QGIS laat negeren door QGIS als de WMS-service wordt bediend.

U zou dus kunnen kijken naar de lagenlijst als u QGIS Desktop verwijst naar de URL GetCapabilities of u zou zelf andere namen kunnen proberen te vinden in het XML-antwoord GetCapabilities.

Eén van de laagnamen die u zou kunnen vinden en die werkt countries_shapeburst. U zou ook andere kunnen vinden maar onthoud dat sommige niet zichtbaar zouden kunnen zijn op een dergelijke kleine schaal, dus zou u een blanco afbeelding als antwoord kunnen krijgen.

U kunt ook nog met enkele andere parameters hierboven kunnen experimenteren, zoals het wijzigen van het type afbeelding naar image/png.

11.2.4. moderate Follow Along: Filteren, transparantie en parameters Stijlen gebruiken

Laten we een ander verzoek doen dat een andere laag toevoegt, enkele van de parameters Extra parameters ondersteund door alle typen verzoeken, FILTER en OPACITIES, maar ook de standaard parameter STYLES gebruikt.

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&FORMAT=image/jpeg
&LAYERS=countries,countries_shapeburst
&STYLES=classified_by_name,blue
&OPACITIES=255,30
&FILTER=countries:"name" IN ( 'Germany' , 'Italy' )

Het bovenstaande verzoek zal de volgende afbeelding teruggeven:

../../../_images/getmap_filter_opacities.jpg

Fig. 11.36 Antwoord voor een verzoek GetMap met parameters FILTER en OPACITIES

Zoals u kunt zien, naast andere dingen, in de bovenstaande afbeelding, vertelden we QGIS Server om alleen Germany en Italy te renderen uit de laag countries.

11.2.5. moderate Follow Along: Redlining gebruiken

Laten we een ander verzoek GetMap doen dat gebruik maakt van de mogelijkheid REDLINING en van de parameter SELECTION die in detail wordt besproken in het gedeelte Extra parameters ondersteund door alle typen verzoeken:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries,countries_shapeburst
&FORMAT=image/jpeg
&HIGHLIGHT_GEOM=POLYGON((590000 6900000, 590000 7363000, 2500000 7363000, 2500000 6900000, 590000 6900000))
&HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%233a093a</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&HIGHLIGHT_LABELSTRING=QGIS Tutorial
&HIGHLIGHT_LABELSIZE=30
&HIGHLIGHT_LABELCOLOR=%23000000
&HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&HIGHLIGHT_LABELBUFFERSIZE=3
&SELECTION=countries:171,65

Plakken van het bovenstaande verzoek in uw webbrowser zou de volgende afbeelding terug moeten geven:

../../../_images/getmap_redlining_selection.jpg

Fig. 11.37 Antwoord op een verzoek met de mogelijkheid REDLINING en de parameter SELECTION

U kunt in de bovenstaande afbeelding zien dat de landen met de ID’s 171 en 65 in geel zijn geaccentueerd (Roemenië en Frankrijk) met behulp van de parameter SELECTION en we gebruikten de mogelijkheid REDLINING om er een label met QGIS Tutorial overheen te leggen.

11.2.6. Verzoeken GetPrint

Een bijzonder aardige mogelijkheid van QGIS Server is dat het gebruik maakt van de QGIS Desktop afdruklay-outs. U kunt daar meer over leren in het gedeelte GetPrint.

Als u het project world.qgs opent met QGIS Desktop zult u een afdruklay-out vinden, genaamd Population distribution. Een vereenvoudigd verzoek GetPrint dat een voorbeeld is van deze fantastische mogelijkheid is:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?map=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0&
REQUEST=GetPrint
&FORMAT=pdf
&TRANSPARENT=true
&SRS=EPSG:3857
&DPI=300
&TEMPLATE=Population distribution
&map0:extent=-432786,4372992,3358959,7513746
&LAYERS=countries
../../../_images/getprint.jpg

Fig. 11.38 Geeft de resulterende PDF weer van bovenstaand verzoek GetPrint

Natuurlijk is het moeilijk om uw verzoeken GetMap, GetPrint etc. te schrijven.

QGIS Web Client of QWC is een Webcliëntproject dat naast QGIS Server kan werken zodat u uw projecten op het web kunt publiceren of u kan helpen verzoeken voor QGIS Server te maken voor een beter begrip over de mogelijkheden.

U kunt het als volgt installeren:

  • Ga, als gebruiker qgis, naar de thuismap met cd /home/qgis.

  • Download het QWCproject vanaf hier en pak het uit.

  • Maak een symbolische koppeling naar de map /var/www/html omdat dat de DocumentRoot is die we hebben ingesteld in de configuratie van de virtuele host. Als u het archief heeft uitgepakt onder /home/qgis/Downloads/QGIS-Web-Client-master kunnen we dat doen met sudo ln -s /home/qgis/Downloads/QGIS-Web-Client-master /var/www/html/.

  • Ga naar http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs vanuit uw webbrowser.

Nu zou u de kaart moeten kunnen zien zoals die in de volgende afbeelding:

../../../_images/qwc.jpg

Fig. 11.39 QGIS Web Client verwerkt het project world.qgs

Als u klikt op de knop Print in QWC kunt u interactief verzoeken GetPrint maken. U kunt ook klikken op het pictogram ? in QWC om toegang te verkrijgen tot de beschikbare Help zodat u de mogelijkheden van QWC beter kunt ontdekken.

11.2.7. In Conclusion

U heeft geleerd QGIS Server WMS-services te laten verschaffen.

11.2.8. What’s Next?

Vervolgens zullen we u laten zien hoe u QGIS kunt gebruiken als startpunt voor het beroemde GRASS GIS.