Evaluer les Expresions QGIS côté serveur avec le Plugin Lizmap
Par René-Luc D'Hont le mardi 24 novembre 2020, 10:00 - Système d'Information Géographique (SIG) - Lien permanent
Depuis le début de Lizmap-Web-Client toute la partie serveur reposait sur du code PHP. Avec Lizmap Web Client 3.4, qui sera publié très prochainement, une partie des fonctionnalités ont été développées au sein du plugin Lizmap pour ajouter des fonctionnalités à QGIS Server.
QGIS Server est une implémentation open source des normes WMS 1.3.0, 1.1.1 et 1.0.0, WFS 1.1.0 et 1.0.0 et WCS 1.0.0 défini par l'Open Geospatial Consortium (OGC). QGIS Server utilise QGIS comme backend pour la logique des couches SIG et le rendu cartographique. Étant donné que QGIS Bureautique et QGIS Server utilisent les mêmes bibliothèques de visualisation, les cartes publiées sur le web ont le même aspect que sous le SIG Bureautique.
Pour en savoir plus sur QGIS Server
Tout comme QGIS Bureautique, QGIS Server est extensible à l'aide de plugins Python. Il est par exemple possible de créer, d'ajouter de nouveaux services à QGIS Server. Documentation
La seconde fonctionnalité QGIS Server que nous avons implémentée dans le plugin Lizmap est un service d'évaluation des expressions QGIS.
- SERVICE=EXPRESSION
- REQUEST=Evaluate
- EXPRESSION: a QGIS expression
- EXPRESSIONS: List of QGIS expressions
- FEATURE: Option a GeoJSON Feature
- FEATURES: Option a list of GeoJSON Features
- FORM_SCOPE: Option boolean to add formScope based on provided features
- REQUEST=replaceExpressionText
- STRING: A string with expression between [% and %]
- STRINGS: A list of strings with expression between [% and %]
- FEATURE: Option a GeoJSON Feature
- FEATURES: Option a list of GeoJSON Features
- FORM_SCOPE: Option boolean to add formScope based on provided features
- REQUEST=GetFeatureWithFormScope
- LAYER: a WMS Layer Name to be filtered
- FILTER: a QGIS expression to filter the layer
- FORM_FEATURE: a GeoJSON Feature
- FIELDS: Option a list of fields to return
- WITH_GEOMETRY: Option boolean to return geometry
- REQUEST=VirtualFields
- LAYER: a WMS Layer Name to get virtual fields
- VIRTUALS: a list of key QGIS expression
- FILTER: Option a QGIS expression to filter layer
- FIELDS: Option a list of fields to return
- WITH_GEOMETRY: Option boolean to return geometry
- REQUEST=Evaluate
Ces nouvelles requêtes servent dans Lizmap Web Client 3.4 à exploiter les expressions des formulaires QGIS. Ces expressions peuvent servir à :
- Définir des valeurs par défaut
- Définir des contraintes
- Faire des listes en cascade
- Gérer la visibilité de groupes de champs
Exemple d'utilisation d'expression QGIS comme contrainte de formulaire:
Exemple d'utilisation d'expression QGIS afin de gérer la visibilité des groupes de champs
Dans le cas des listes en cascades dans les formulaires, il est possible d'utiliser la géométrie pour filtrer la liste, par exemple pour sélectionner une commune, une parcelle ou la rue la plus proche. Il est bien sûr possible d'utiliser toutes les autres valeurs en cours de saisie du formulaire.
Enfin nous avons aussi ajouter un service lizmap avec une requête GetServerSettings pour récupérer des informations sur QGIS Server et les services disponibles.