Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
11.2. Lektion: Servering av WMS
De data som används för den här övningen finns i underkatalogen qgis-server-tutorial-data
i utbildningsdata som du hämtade. För enkelhetens skull och för att undvika eventuella behörighetsproblem antar vi att dessa filer lagras i katalogen /home/qgis/projects
. Anpassa därför följande instruktioner till din sökväg.
Demodata innehåller ett QGIS-projekt med namnet world.qgs
som redan är förberett för att användas med QGIS Server. Om du vill använda ditt eget projekt eller om du vill lära dig hur ett projekt förbereds, se avsnittet Konfigurera ditt projekt.
Observera
I den här modulen presenteras webbadresserna så att publiken lätt kan skilja mellan parametrar och parametervärden. Medan det normala formatet är:
...&field1=value1&field2=value2&field3=value3
denna handledning använder:
&field1=value1
&field2=value2
&field3=value3
Att klistra in dem i Mozilla Firefox fungerar korrekt men andra webbläsare som Chrome kan lägga till oönskade mellanslag mellan paren field:parameter
. Så om du stöter på det här problemet kan du antingen använda Firefox eller ändra webbadresserna så att de är i en radformat.
Låt oss göra en WMS GetCapabilities-begäran i webbläsaren eller med curl:
http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities
&map=/home/qgis/projects/world.qgs
I Apache-konfigurationen från föregående lektion anger variabeln QGIS_PROJECT_FILE
standardprojektet till /home/qgis/projects/world.qgs
. I ovanstående begäran använde vi dock parametern map för att vara tydliga och visa att den kan användas för att peka på vilket projekt som helst. Om du tar bort parametern map från ovanstående begäran kommer QGIS Server att ge samma svar.
Genom att rikta en WMS-klient till URL:en GetCapabilities
får klienten som svar ett XML-dokument med metadata om Web Map Server-informationen, t.ex. vilka lager som serveras, den geografiska täckningen, i vilket format, vilken version av WMS etc.
Eftersom QGIS också är en WMS/WMTS-klient kan du skapa en ny WMS-serveranslutning med hjälp av ovanstående GetCapabilities-url. Se avsnittet Lektion: Karttjänster på webben eller Välja WMS/WMTS-servrar om hur du gör det.
Genom att lägga till WMS-lageret countries
i ditt QGIS-projekt bör du få en bild som den nedan:

Fig. 11.40 QGIS Desktop som använder WMS-tjänsten för QGIS-serverns landslager
Observera
QGIS Server serverar lager som är definierade i projektet world.qgs
. Genom att öppna projektet med QGIS kan du se att det finns flera stilar för länderlageret. QGIS Server är också medveten om detta och du kan välja den stil du vill ha i din begäran. I bilden ovan valdes stilen classified_by_population
.
11.2.1. Loggning
När du sätter upp en server är loggarna alltid viktiga eftersom de visar vad som händer. Vi har installerat följande loggar i filen *.conf
:
QGIS Server-logg i
/logs/qgisserver.log
qgisplatform.demo
Apache access log vidqgisplatform.demo.access.log`
qgisplatform.demo
Apache-fellogg vidqgisplatform.demo.error.log`
Loggfilerna är helt enkelt textfiler så du kan använda en textredigerare för att kolla upp dem. Du kan också använda kommandot tail
i en terminal: sudo tail -f /logs/qgisserver.log
.
Detta gör att det som skrivs i loggfilen kontinuerligt matas ut i terminalen. Du kan också ha tre terminaler öppna för var och en av loggfilerna på följande sätt:

Fig. 11.41 Använd kommandot tail
för att visualisera QGIS Server-loggutdata
När du använder QGIS Desktop för att använda QGIS Server WMS-tjänster kommer du att se alla förfrågningar som QGIS skickar till servern i åtkomstloggen, fel från QGIS Server i QGIS Server-loggen osv.
Observera
Om du tittar på loggarna i de följande avsnitten bör du få en bättre förståelse för vad som händer.
Genom att starta om Apache och samtidigt titta i QGIS Server-loggen kan du hitta några extra tips om hur saker och ting fungerar.
11.2.2. Begäran om GetMap
För att visa lageret countries
använder QGIS Desktop, precis som alla andra WMS-klienter, GetMap
-förfrågningar.
En enkel begäran ser ut så här:
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
Ovanstående begäran bör ge följande bild:
Figur: enkel GetMap-begäran till QGIS Server

Fig. 11.42 Svar från Qgis Server efter en enkel GetMap-begäran
11.2.3. ★★☆ Prova själv: Ändra parametrarna för bild och lager
Baserat på begäran ovan, låt oss ersätta countries
-lagret med ett annat.
För att se vilka andra lager som finns tillgängliga kan du öppna projektet world.qgs
i QGIS och titta på dess innehåll. Tänk dock på att WMS-klienterna inte har tillgång till QGIS-projektet, de tittar bara på innehållet i capabilities-dokumentet.
Det finns också ett konfigurationsalternativ som gör att vissa av de lager som finns i QGIS-projektet ignoreras av QGIS när WMS-tjänsten används.
Så du kan titta på lagerlistan när du riktar QGIS Desktop till URL:en GetCapabilities
eller så kan du själv försöka hitta andra lagernamn i XML-svaret GetCapabilities
.
Ett av de lagernamn som du kan hitta och fungerar är countries_shapeburst
. Du kan hitta andra men kom ihåg att vissa kanske inte syns i så liten skala så att du kan få en tom bild som svar.
Du kan också ändra andra parametrar ovan, som att ändra den returnerade bildtypen till image/png
.
11.2.4. ★★☆ Följ med: Använda filter, opacitet och stilar parametrar
Låt oss göra en annan begäran som lägger till ytterligare ett lager, några grundläggande parametrar, FILTER och OPACITIES, men som också använder standardparametern STYLES.
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' )
Ovanstående begäran bör ge följande bild:

Fig. 11.43 Svar på en GetMap-begäran med parametrarna FILTER och OPACITIES
Som du kan se på bilden ovan har vi bland annat sagt till QGIS Server att endast återge Tyskland och Italien från landlageret.
11.2.5. ★★☆ Följ med: Använd Redlining
Låt oss göra en annan GetMap-begäran som använder funktionen redlining och parametern SELECTION som beskrivs i avsnittet 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
Om du klistrar in ovanstående begäran i din webbläsare får du fram följande bild:

Fig. 11.44 Svar på en begäran med funktionen REDLINING och parametern SELECTION
Du kan se på bilden ovan att länderna med 171 och 65 ids markerades med gult (Rumänien och Frankrike) med hjälp av parametern SELECTION och vi använde funktionen REDLINING för att lägga över en rektangel med etiketten QGIS Tutorial.
11.2.6. GetPrint förfrågningar
En mycket trevlig funktion i QGIS Server är att den använder utskriftslayouterna från QGIS Desktop. Du kan lära dig mer om det i avsnittet GetPrint.
Om du öppnar projektet world.qgs
med QGIS Desktop hittar du en utskriftslayout med namnet Population distribution
. En förenklad GetPrint
-begäran som exemplifierar denna fantastiska funktion är:
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

Fig. 11.45 Visar pdf-filen som blev resultatet av ovanstående GetPrint-begäran
Naturligtvis är det svårt att skriva dina GetMap
, GetPrint
etc. förfrågningar.
qGIS Web Client <https://github.com/qgis/qgis-web-client>`_ eller QWC är ett webbklientprojekt som kan fungera tillsammans med QGIS Server så att du kan publicera dina projekt på webben eller hjälpa dig att skapa QGIS Server-förfrågningar för att få en bättre förståelse för möjligheterna.
Du kan installera det så här:
Som användare
qgis
går du till hemkatalogen medcd /home/qgis
.Ladda ner QWC-projektet från här och packa upp det.
Gör en symbolisk länk till katalogen
/var/www/html
eftersom det ärDocumentRoot
som vi har ställt in i konfigurationen för den virtuella värden. Om du packade upp arkivet under/home/qgis/Downloads/QGIS-Web-Client-master
kan vi göra det medsudo ln -s /home/qgis/Downloads/QGIS-Web-Client-master /var/www/html/
.Gå till http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs från din webbläsare.
Nu bör du kunna se kartan som i följande bild:

Fig. 11.46 QGIS webbklient använder projektet world.qgs
Om du klickar på Print-knappen i QWC kan du interaktivt skapa GetPrint
-förfrågningar. Du kan också klicka på ikonen ?
i QWC för att komma åt den tillgängliga hjälpen så att du bättre kan upptäcka QWC:s möjligheter.
11.2.7. Sammanfattningsvis
Du lärde dig hur du använder QGIS Server för att tillhandahålla WMS-tjänster.
11.2.8. Vad händer härnäst?
Därefter får du se hur du använder QGIS som en frontend för det berömda GRASS GIS.