11.2. Lesson: Serving WMS¶
Téléchargez les données de démonstration de la formation <https://github.com/qgis/QGIS-Training-Data/archive/v2.0.zip>`_ et décompressez les fichiers dans le sous-répertoire qgis-server-tutorial-data
dans n’importe quel répertoire. Nous vous recommandons de créer simplement un répertoire /home/qgis/projets
et d’y placer vos fichiers afin d’éviter d’éventuels problèmes de permissions.
Le jeu de donnée contient un projet QGIS world.qgs
, préparé pour être servi par QGIS Server. Si vous souhaitez utiliser votre propre projet ou apprendre comment préparer un projet, allez voir la section Configurer votre projet.
Note
Ce module présente les URL afin que le public puisse facilement distinguer les paramètres et les valeurs des paramètres. Alors que le format normal est:
...&field1=value1&field2=value2&field3=value3
ce tutoriel utilise :
&field1=value1
&field2=value2
&field3=value3
Les coller dans Mozilla Firefox fonctionne parfaitement mais d’autres navigateurs internet comme Chrome peuvent ajouter des espaces indésirables entre les paires field:parameter
. Ainsi, si vous rencontrez ce problème vous pouvez soit utiliser Firefox ou modifier les URL afin qu’il soit en format de ligne simple.
Faisons une requête WMS GetCapabilities dans le navigateur web ou avec curl :
http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities
&map=/home/qgis/projects/world.qgs
Dans la configuration Apache de la leçon précédente, la variable `` QGIS_PROJECT_FILE`` définit le projet par défaut à: file: / home / qgis / projects / world.qgs. Cependant, dans la demande ci-dessus, nous avons utilisé le paramètre ** map ** pour être explicite et pour montrer qu’il peut être utilisé pour pointer n’importe quel projet. Si vous supprimez le paramètre ** map ** de la demande ci-dessus, QGIS Server affichera la même réponse.
En interrogeant l’URL GetCapabilities avec un client WMS, celui-ci récupère en réponse un document XML contenant des métadonnées sur le serveur (quelles couches il contient, son emprise, les formats, la version WMS, etc.).
Comme QGIS est également un Client WMS / WMTS, vous pouvez créer une nouvelle connexion au serveur WMS à l’aide de l’url GetCapabilities ci-dessus. Voir la section Lesson: Web Mapping Services ou Sélection des serveurs WMS/WMTS sur la façon de le faire.
En ajoutant la couche WMS countries
à votre projet QGIS, vous devriez obtenir une image comme celle ci-dessous :
Note
QGIS server dessert les couches qui sont définies dans le projet world.qgs
. En ouvrant le projet avec QGIS, vous pouvez voir qu’il existe plusieurs styles pour la couche des pays. QGIS server en est également conscient et vous pouvez choisir le style que vous souhaitez dans votre demande. Le style classé par population
a été choisi dans l’image ci-dessus.
11.2.1. Journal¶
Lorsque vous installez un serveur, les journaux sont toujours importants car ils vous montrent ce qui se passe. Nous avons mis en place dans le fichier *.conf
les journaux suivants :
Log QGIS Server a
/logs/qgisserver.log
.qgisplatform.demo
Apache access log atqgisplatform.demo.access.log
qgisplatform.demo
Journal d’erreurs Apache à l’adresseqgisplatform.demo.error.log
Les fichiers journaux sont simplement des fichiers texte, vous pouvez donc utiliser un éditeur de texte pour les consulter. Vous pouvez également utiliser la commande tail
dans un terminal :sudo tail -f /logs/qgisserver.log
.
Le terminal produira ainsi en permanence ce qui est écrit dans ce fichier journal. Vous pouvez également faire ouvrir trois terminaux pour chacun des fichiers journaux de cette manière :
Lorsque vous utilisez QGIS Desktop pour consommer les services WMS QGIS server, vous verrez toutes les demandes que QGIS envoie au serveur dans le journal d’accès, les erreurs QGIS server dans le journal QGIS Server, etc.
Note
Si vous regardez les journaux dans les sections suivantes, vous devriez avoir une meilleure compréhension de ce qui se passe.
En redémarrant Apache tout en regardant dans le journal QGIS server, vous pouvez trouver quelques pointeurs supplémentaires sur la façon dont les choses fonctionnent.
11.2.2. Requêtes GetMap¶
Afin d’afficher la couche countries
, QGIS Desktop, comme tout autre client WMS, utilise les requêtes GetMap
.
Une simple requête ressemble à:
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
Avec la requête précédente, vous obtiendrez le résultat suivant :
Figure : simple requête GetMap QGIS server
11.2.3. Try Yourself Modifier les paramètres d’image et de couches¶
Sur la base de la demande ci-dessus, remplaçons la couche countries
par une autre.
Afin de voir quelles autres couches sont disponibles, vous pouvez ouvrir le projet world.qgs
dans QGIS et regarder son contenu. Gardez cependant à l’esprit que les clients WMS n’ont pas accès au projet QGIS, ils se contentent d’examiner le contenu des documents relatifs aux capacités.
Il existe également une option de configuration qui permet à certaines couches du projet QGIS d’être ignorées par le QGIS lorsqu’il dessert le service WMS.
Ainsi, vous pouvez regarder la liste des couches lorsque vous pointez QGIS Desktop vers l’URL GetCapabilities
ou vous pouvez essayer de trouver d’autres noms de couches dans la réponse XML GetCapabilities
.
Un des noms de couches que vous pourriez trouver et qui fonctionne est countries_shapeburst
. Vous pouvez en trouver d’autres mais gardez à l’esprit que certains ne sont pas visibles à une si petite échelle et que vous pourriez donc obtenir une image vierge comme réponse.
Vous pouvez également jouer avec d’autres paramètres, comme par exemple changer le type d’image retournée en image/png
.
11.2.4. Follow Along: Utiliser les paramètres Filtre, Opacites et Styles¶
Faisons une autre requête qui ajoute une autre couche, certains des paramètres Paramètres supplémentaires pris en charge par tous les types de demande, FILTER et OPACITIES, mais utilise aussi le paramètre standard 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' )
Avec la requête précédente, vous obtiendrez le résultat suivant :
Comme vous pouvez le voir sur l’image ci-dessus, entre autres choses, nous avons demandé à QGIS Server de ne rendre que Germany et Italy dans la couche des pays.
11.2.5. Follow Along: Utiliser le redimensionnement¶
Faisons une autre requête GetMap qui utilise la fonction REDLINING et le paramètre SELECTION détaillé dans la section Paramètres supplémentaires pris en charge par tous les types de demande :
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
Avec la requête précédente dans un navigateur web, vous obtiendrez le résultat suivant :
Vous pouvez voir sur l’image ci-dessus que les pays avec les ids 171 et 65 ont été mis en évidence en jaune (Roumanie et France) en utilisant le paramètre SELECTION et nous avons utilisé la fonction REDLINING pour superposer un rectangle avec le label QGIS Tutorial.
11.2.6. Demandes GetPrint¶
Une des entites très intéressantes de QGIS Server est qu’il utilise les mises en page d’impression de QGIS Desktop. Vous pouvez en apprendre davantage à ce sujet dans la section GetPrint.
Si vous ouvrez le projet world.qgs
avec QGIS Desktop, vous trouverez une mise en page nommée Population distribution
. Une requête simplifiée GetPrint
qui illustre cette fonctionnalité étonnante est :
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
Naturellement, il est difficile d’écrire vos demandes GetMap
, GetPrint
, etc.
QGIS Web Client ou QWC est un projet de client Web qui peut fonctionner avec QGIS Server afin que vous puissiez publier vos projets sur le Web ou vous aider à créer des requêtes QGIS Server pour une meilleure compréhension des possibilités.
Vous pouvez l’installer comme ceci :
En tant qu’utilisateur
qgis
, allez dans le répertoire home aveccd /home/qgis
.Téléchargez le projet QWC depuis ici et dézippez-le.
Faites un lien symbolique vers le répertoire
/var/www/html
car c’est leDocumentRoot
que nous avons mis en place dans la configuration de l’hôte virtuel. Si vous avez décompressé l’archive sous/home/qgis/Downloads/QGIS-Web-Client-master
, nous pouvons le faire avecsudo ln -s /home/qgis/Downloads/QGIS-Web-Client-master /var/www/html/
.Accédez à http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs à partir de votre navigateur Web.
Vous devriez maintenant être en mesure de voir la carte comme dans la figure suivante :
Si vous cliquez sur le bouton Imprimer dans QWC, vous pouvez créer interactivement des demandes GetPrint
. Vous pouvez également cliquer sur l’icône ?
dans le QWC pour accéder à l’aide disponible afin de mieux découvrir les possibilités du QWC.
11.2.7. In Conclusion¶
Vous avez appris comment utiliser QGIS server pour fournir des services WMS.
11.2.8. What’s Next?¶
Ensuite, vous verrez comment utiliser QGIS comme frontal pour le célèbre SIG GRASS.