3.1. Webmapping avec Lizmap et QGIS Server

3.1.1. Présentation de Lizmap

Lizmap est une application web open source, conçue par la société 3Liz. Elle permet de publier facilement des cartes dynamiques à partir de QGIS.

Les atouts de Lizmap sont de :

  • créer des cartes web interactives sans écrire de code,
  • retrouver sur une carte web le rendu des couches définis dans QGIS Desktop (avec les styles),
  • utiliser des données au format Shapefile, GeoPackage, GeoTIFF et surtout PostGIS,
  • pouvoir gérer une liste d'utilisateurs et restreindre l'accès aux données,
  • disposer d'outils d'édition qui permettent une mise à jour des données "collaborative",
  • proposer un outil simple de recherche dans les données,
  • exporter des cartes au format PDF ou des données vectorielles au format geojson.

copie ecran Lizmap

Dans le fonctionnement de Lizmap, on distingue 3 grands rôles :

  • l'utilisateur : c'est l'internaute qui visualise les données dans l'interface de Lizmap,
  • l'éditeur : c'est la personne qui créé et configure les projets avec QGIS, puis copie les fichiers sur le serveur - généralement par FTP ou SFTP,
  • l'administrateur : c'est la personne qui gère les accès avec un système de groupes et d'utilisateurs.

Dans cette partie 3.1, nous allons survoler l'outillage logiciel nécessaire au fonctionnement de Lizmap.

Dans la partie 3.2, nous parlerons plus spécifiquement de l'interface utilisateur et de l'édition de projet pour Lizmap.

Dans la partie 3.3, nous traiterons de l'administration à travers un exemple concret : limiter l'accès aux données à un groupe d'utilisateurs, pour un projet particulier.

Liens utiles

3.1.2. Installation de QGIS Server et Lizmap

Prérequis pour le serveur

Les prérequis logiciels pour la partie serveur de Lizmap sont :

  • QGIS Server, serveur cartographique OGC (comme Geoserver ou Mapserver) utilisé pour la transformation et le rendu des données sous forme de web services : WMS, WFS, WCS
  • Apache ou NGINX, ainsi que PHP (version 7 de préférence) pour le fonctionnement du client web Lizmap

Note

Dans l'annexe A. "Installation de QGIS Server et Lizmap", vous retrouverez en détail la procédure suivie pour installer QGIS Server, Apache, PHP, et le client web Lizmap version 3.3 sur la machine virtuelle Ubuntu. Il est possible également d'installer cette suite logicielle sur un serveur Windows.

Installation de QGIS Server

Dans les distributions Linux les plus communes, QGIS Server existe sous forme de paquets et s'installe aussi facilement que QGIS Desktop. Consultez le chapitre QGIS comme serveur de données OGC dans la documentation officielle de QGIS pour plus de détails.

QGIS Server est un exécutable généralement appelé via un serveur web, mais il est possible de lancer l'exécutable depuis un terminal pour tester son installation :

/usr/lib/cgi-bin/qgis_mapserv.fcgi

Installation d'Apache2 et de son module FastCGI

C'est une étape nécessaire pour accéder à QGIS Server via le protocole http.

Une fois Apache installé, vous pouvez tester l'accès à QGIS Server en local dans le navigateur, avec cette adresse : http://localhost/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

QGIS Server, comment ça marche ?

QGIS Server est un logiciel de type "serveur de données OGC", complètement indépendant de Lizmap.

Mais à la différence de Geoserver, il ne dispose pas d'une interface pour publier des données. Pour publier des couches sous forme de web services avec QGIS Server, il faut créer un projet (fichier .qgsou .qgz) et le configurer à cet effet.

La configuration des web services se fait à 2 endroits dans QGIS Desktop :

  • Propriétés du projet, onglet QGIS Server
  • Propriétés des couches, onglet QGIS Server et onglet Champs (cf colonnes WMS et WFS)

Nous allons dans ce TP tester le fonctionnement de QGIS Server sans Lizmap.

Le dossier /home/sist/data/mon_travail/3_lizmap/public contient un projet fra_physical.qgs déjà configuré avec ses données (shapefile et geotiff).

Ouvrez le projet fra_physical.qgs avec QGIS Desktop.

Dans le menu Projet/Propriétés ... et l'onglet QGIS Server, consultez les paramètres concernant les web services OGC (WMS, WMTS, WFS, WCS).

Parallèlement, ouvrez votre navigateur web et copiez-collez les URL des exemples suivants pour tester sur le service WMS des requêtes GetCapabilities, GetMap et GetInfo

Voici un exemple de requête GetCapabilities pour le WMS : remarquez le paramètre MAP, propre à QGIS Server, avec le chemin d'accès du projet. En résultat, cette requête renvoie les paramètres du service et les couches disponibles.

http://localhost/cgi-bin/qgis_mapserv.fcgi?
SERVICE=WMS
&VERSION=1.3.0
&MAP=/home/sist/data/mon_travail/3_lizmap/public/fra_physical.qgs
&REQUEST=GetCapabilities

Voici un exemple de requête GetMap pour extraire sous forme d'image PNG un secteur de 100x100 km selon une emprise donnée (BBOX) pour 2 couches.

http://localhost/cgi-bin/qgis_mapserv.fcgi?
SERVICE=WMS
&VERSION=1.3.0
&MAP=/home/sist/data/mon_travail/3_lizmap/public/fra_physical.qgs
&REQUEST=GetMap
&LAYERS=altitude,departements
&CRS=EPSG:2154
&BBOX=840100,6380200,940100,6480200
&WIDTH=400
&HEIGHT=400
&FORMAT=image/png
&TILED=FALSE

Voici un exemple de requête GetFeatureInfo pour identifier l'altitude (valeur du pixel) ainsi que l'entité dans departements sur le pixel (350,350). Dans cet exemple les données sont renvoyées sous le format JSON.

http://localhost/cgi-bin/qgis_mapserv.fcgi?
SERVICE=WMS
&VERSION=1.3.0
&MAP=/home/sist/data/mon_travail/3_lizmap/public/fra_physical.qgs
&REQUEST=GetFeatureInfo
&CRS=EPSG:2154
&BBOX=840100,6380200,940100,6480200
&WIDTH=400
&HEIGHT=400
&INFO_FORMAT=application/json
&QUERY_LAYERS=altitude,departements
&I=350
&J=350

Astuce

Pour plus d'infos sur l'installation et sur l'utilisation des services WMS, WFS et WMTS dans QGIS Server, consultez la doc QGIS.

Installation du client web Lizmap

Le client web Lizmap est l'application installée sur le serveur web qui permet d'afficher une interface cartographique, avec des outils pour interagir avec la carte (boutons pour la navigation, l'interrogation et l'édition). L'affichage des données dans le client web Lizmap repose sur QGIS Server.

Remarque : dans le cadre de Lizmap, le navigateur de l'internaute ne se connecte jamais directement à QGIS Server. Le serveur web avec PHP et Lizmap se charge d'envoyer les requêtes à QGIS Server et transmettre le résultat. Il n'est donc pas nécessaire que les web services de QGIS Server soient exposés au monde extérieur.

Schema Lizmap + QGIS Server

Le client web Lizmap est une application PHP dont le code source est disponible sur GitHub. Pour l'installation, voir l'annexe A , et aussi https://github.com/3liz/lizmap-web-client/blob/master/INSTALL.md.

Sur la machine virtuelle, le client web Lizmap est déjà installé. Pour accéder à Lizmap, ouvrez ce lien dans votre navigateur : http://lizmap.localhost/.

Explorez la Carte Physique de la France dans votre navigateur pour un aperçu de l'interface du client web Lizmap.

Les fichiers du client web Lizmap (application) sont situés dans le répertoire "serveur web" /var/www/lizmap-web-client tandis que les données (projets QGIS et données spatiales) sont dans le répertoire /home/sist/data/mon_travail/3_lizmap/public.

Installation de l'extension Lizmap dans QGIS

Pour publier une carte avec le client Lizmap, il faut copier sur le serveur :

  • un projet QGIS configuré pour QGIS Server, et les données qui vont avec
  • un fichier de configuration pour Lizmap, associé au projet
  • optionnellement, une image d'aperçu, au format PNG

Dans le répertoire /home/sist/data/mon_travail/3_lizmap/public, listez les 3 fichiers commençant par fra_physical.*

Le fichier de configuration .qgs.cfg propre à Lizmap est généré depuis QGIS Desktop, avec l'extension Lizmap, indispensable pour la publication. Nous verrons plus en détail le fonctionnement de cette extension dans la partie suivante. Elle s'installe très facilement avec le gestionnaire d'extensions (menu Extensions/Installer, Gérer les extensions). Pensez à la mettre à jour de temps en temps. Elle est déjà installée dans la machine virtuelle.

Extension Lizmap dans QGIS Un bouton Lizmap est ajouté dans la barre d'outils Extensions de QGIS (ainsi que dans le menu Internet).

3.1.3. A RETENIR

  • Lizmap est une application de cartographie interactive dont l'originalité est de fonctionner avec QGIS pour la création de cartes en lignes.
  • Pour faire fonctionner Lizmap, il faut un serveur web avec PHP, le client web Lizmap et avec QGIS Server
  • La création et la publication de cartes ne nécessitent pas de compétences en développement web. Tout se fait dans QGIS Desktop, puis les fichiers sont copiés sur le serveur.
  • Il y a 2 parties à configurer pour chaque projet : une partie propre à QGIS Server, et une partie propre à Lizmap.
  • Le rendu graphique obtenu en ligne est le même rendu que dans QGIS Desktop