Depuis mars dernier, et comme vous avez pu le lire dans les articles nous introduisant, Benoît et moi sommes en stage en tant que développeu·r·se SIG chez Oslandia. Ce stage de six mois s’inscrit dans notre formation de Master 2 Géographies Numériques (Géonum).
Ce Master est organisé conjointement entre les Universités Jean Monnet de Saint Étienne, Lyon 2 et l’École Normale Supérieure de Lyon. Il vise à former des spécialistes de la donnée géographique, de son acquisition à sa diffusion, incluant ainsi les phases de stockage et de traitement. De nombreux professionnels interviennent dans le Master aux côtés des enseignants, comme Vincent Mora, développeur et responsable de production chez Oslandia.
Notre stage s’articule autour de QGIS Web Client 2 (QWC2), un client web pour QGIS Server. Les objectifs principaux de notre mission sont de déployer facilement et rapidement une application QWC2 et de développer de nouvelles fonctionnalités.
QWC2 : qu’est-ce que c’est ?
QWC2 permet de publier des cartes QGIS sur le web avec une interface graphique responsive. Pour ce faire, après avoir créé un projet QGIS avec la symbologie souhaitée pour chaque couche et accordé les services QGIS Server au projet, il faut déployer l’application QWC2 permettant l’affichage du résultat sur une page web.
Dans un prochain article, nous rentrerons plus amplement dans le détail du déploiement. Ici, nous allons décrire de quelle manière l’application s’organise dans son ensemble. Le schéma ci-dessous, nous montre l’architecture d’une application QWC2.
Ainsi, pour fonctionner, une application QWC2 a nécessairement besoin :
- d’un serveur web, nous avons choisi nginx,
- QGIS Desktop, nous avons travaillé avec des versions > 3.10,
- QGIS Server,
- l’application QWC2.
Concernant les données, il existe deux possibilités :
- ajouter un serveur de base de données disposant d’une extension spatiale,
- stocker directement les données sur le serveur de l’application.
Pour notre part, nous stockons nos données dans une base PostgreSQL (> 10) avec l’extension spatiale PostGIS (v >= 2.5). La représentation des entités de certaines couches étant des icons svg, après les avoir paramétrés dans le projets QGS, ceux-ci ont été directement déposés sur le serveur.
Quelles sont les fonctionnalités à ajouter à QWC2 ?
Après plusieurs réunions avec des utilisateurs de QWC2, nous avons pu identifier les fonctionnalités manquantes ou à améliorer. Ces moments d’échanges ont été extrêmement intéressants pour comprendre les besoins des utilisateurs, en fonction notamment de la thématique sur laquelle ils travaillent.
Les besoins identifiés après priorisation sont les suivants :
- faciliter l’ajout d’un nouveau projet QGIS dans une application déjà déployée: la solution envisagée est la création d’un plugin QGIS permettant directement le lien entre QGIS Desktop et le serveur.
- avoir accès à la table attributaire d’une couche et pouvoir faire des sélections dessus (a priori en SQL), pouvoir exporter cette sélection.
- travailler sur l’export de données. Tout d’abord améliorer l’export csv pour permettre une utilisation plus aisée dans un logiciel de SIG ou pour des traitements statistiques sur les données. Actuellement, l’export csv contient un seul fichier dans lequel tous les éléments de toutes les couches sélectionnées sont référencés. Le nom des champs est répété autant de fois que de nombre d’éléments de la couche. Cela rend les traitements sur les données impossibles. L’idée est de proposer un nouvel export csv où chaque couche disposera de son fichier csv dans lequel les champs seront en colonne et les individus sur chaque ligne. La figure ci-dessous illustre le format csv avant et après modification.
Le second travail sur l’export de données à effectuer est de proposer d’autres formats tels que le GeoJSON, le KML ou le Geopackage.
- autoriser l’ajout d’une ou de plusieurs couche(s) dans la carte courante et non du projet entier,
- permettre le dessin à main levée et pouvoir enregistrer les annotations,
- rendre possible l’édition d’attributs lors de l’édition des éléments d’une couche sur la carte courante.
Nous avons discuté de ces différents ajouts et modifications avec la mailling list QWC2 et avons ouvert des issues sur chaque fonctionnalité démarrée.
Nous avons déjà débuté ce travail, certaines fonctionnalités sont d’ores et déjà disponibles dans QWC2, nous vous laissons les découvrir sur notre site de démonstration.
Dans le prochain article, nous nous concentrerons sur la première étape : déployer facilement une application QWC2, d’ici là si vous avez des questions ou des remarques, n’hésitez pas !
Beau projet car c’est l’avenir ! Cela ressemble beaucoup à lizmap qui permet de publier des projets Qgis sur le web avec l’utilisation d’une extension (lizmap).
C’est un superbe projet.
Il faudra peut-être envisager une API backend ou des extensions python en complément des services OGC existants ?
En tout cas, bons développements !