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:
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 opqgisplatform.demo.access.log
qgisplatform.demo
Apache error log opqgisplatform.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:
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
11.2.3. 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. Follow Along: Filteren, transparantie en parameters Stijlen gebruiken
Laten we een ander verzoek uitvoeren dat een andere laag toevoegt, enkele basic parameters, 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:
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. Follow Along: Redlining gebruiken
Laten we een ander verzoek GetMap maken dat gebruik maakt van de mogelijkheid redlining en van de parameter SELECTION die gedetailleerd wordt weregegeven in het gedeelte Basics:
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:
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 hele leuke mogelijkheid van QGIS Server is dat het gebruik maakt van de afdruklay-outs van QGIS Desktop. U kunt er meer over te weten komen 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
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 metcd /home/qgis
.Download het QWCproject vanaf hier en pak het uit.
Maak een symbolische koppeling naar de map
/var/www/html
omdat dat deDocumentRoot
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 metsudo 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:
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.