J’avais déjà entendu parler de QGIS server. J’ai donc voulu me pencher dessus pour voir à quoi ça servait.
Or, comme souvent, si l’on trouve des documentations indiquant comment installer et utiliser l’outil, on ne trouve pas toujours quelque chose qui explique, en quelques mots, à quoi ça sert. Alors je vais le faire ici.
Ensuite, on verra rapidement comment l’installer et le tester. Pour le reste, je vous laisse jouer avec.
À quoi sert QGIS server ?
Ce logiciel s’installe, comme son nom l’indique, sur un serveur web. Il permet de publier en ligne un projet qu’on aura créé avec QGIS (concrètement : un .qgs et les différentes couches qui composent le projet, par exemple sous forme de Shapefiles).
Le projet pourra être publié de deux façons, correspondant à deux protocoles : WMS ou WFS.
WMS
Quand vous créez un projet dans QGIS, vous ajoutez des couches et leur attribuez, si vous le souhaitez, un rendu qui vous permettra de générer une carte. Celle-ci pourra être imprimée, exportée sous forme d’image, etc.
QGIS server peut, à partir des mêmes fichiers, produire un rendu identique et le transmettre à un client via le protocole WMS.
Ce client peut être votre QGIS habituel : plutôt que d’ajouter une couche vecteur ou raster, vous ajouterez une couche WMS, indiquerez l’URL du serveur, et obtiendrez dans votre QGIS un raster chargé dynamiquement. Ce raster n’est autre que le rendu du projet que vous aviez créé avec QGIS et envoyé sur votre serveur.
WFS
Obtenir un raster correspondant au rendu de votre projet, c’est bien. Mais vous pouvez vouloir aussi obtenir les couches de données composant le projet.
C’est justement ce que fait QGIS server avec le protocole WFS.
Comment l’installer ?
Sur une machine Debian Wheezy disposant déjà d’Apache.
Éditez /etc/apt/sources.list et ajoutez ces lignes :
deb http://qgis.org/debian wheezy main deb-src http://qgis.org/debian wheezy main
Ensuite, en root :
apt-get install qgis-server libapache2-mod-fcgid qgis qgis-providers a2enmod cgid service apache2 restart
Comment mettre un projet en ligne ?
Sur le serveur, en root :
cd /usr/lib/cgi-bin/ mkdir nom_de_votre_projet cd nom_de_votre_projet ln -s ../qgis_mapserv.fcgi . ln -s ../wms_metadata.xml .
Copiez ensuite les fichiers de votre projet dans le répertoire /usr/lib/cgi-bin/nom_de_votre_projet
Pour faire un test avec un simple navigateur :
Chargez http://adresse_de_votre_serveur/cgi-bin/nom_de_votre_projet/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities dans un navigateur. Cela doit vous afficher un fichier XML.
Pour faire un test en WMS :
Dans QGIS :
- Ajouter une couche WMS,
- Nouveau,
- Indiquez un nom et l’adresse, de la forme : http://adresse_de_votre_serveur/cgi-bin/nom_de_votre_projet/qgis_mapserv.fcgi
- OK,
- Connexion,
- Sélectionnez les couches à afficher,
- Ajouter.
Votre projet s’affiche dans QGIS sous la forme d’une couche raster.
Pour faire un test en WFS :
Dans QGIS :
- Ajouter une couche WFS,
- Nouveau,
- Indiquez un nom et l’adresse, de la forme : http://adresse_de_votre_serveur/cgi-bin/nom_de_votre_projet/qgis_mapserv.fcgi
- OK,
- Connexion,
- Sélectionnez les couches à afficher,
- Ajouter.
Les couches que vous avez sélectionnées s’affichent dans QGIS, sous leur forme d’origine (vecteur ou raster).
Pour aller plus loin :
Cet article n’est qu’une introduction hyper rapide, et un aide mémoire pour moi. Il n’a pas d’avantage d’ambition.
Je n’ai pas parlé du rôle du fichier wms_metadata.xml auquel je vous conseille de jeter un œil. Je vous conseille également, pour des projets plus importants qu’un petit test, de ne pas les ranger directement dans /usr/lib/cgi-bin/nom_de_votre_projet mais d’utiliser des liens. Etc.
Voici quelques liens qui peuvent être utiles :
Les données OGC dans la doc de QGIS.
QGIS server tutorial (en anglais) dans la doc de QGIS.
Premiers pas avec QGIS server sur le blog Makina-corpus.
QGIS comme serveur de données OGC dans la doc de QGIS.
Un article sur le blog de 3liz qui parle de leur travail pour implémenter le WFS dans QGIS server (merci à eux) et donne des infos utiles.
Si quelque chose dans l’article n’est pas clair ou faux, laissez un commentaire.
Bonjour !
Est ce qu’il est possible de générer les cartes suite à des requêtes paramétrées ? Peut on faire en sorte que ce soit l’utilisateur qui choisit les données à afficher ?
Je pense que oui, mais je ne suis pas encore allé jusque là.
je voudrais connaitre le linéaire précis et la surface de voirie communale et départementale
J’aimerais bien connaître l’âge de monsieur le Maire, également.