Aller au contenu | Aller au menu | Aller à la recherche

mardi 28 septembre 2021

FOSS4G 2021 - Les présentations que je souhaiterais suivre

Le FOSS4G 2021 a commencé hier, lundi 27 september 2021, avec les premiers workshops. Les présentations commenceront demain, mercredi 29 Septembre 2021.

3Liz a 3 présentations plus 1 faîtes par ONF International :

Le programme de cette année est très complet et j'ai du mal à choisir parmi la longue liste de présentations. Voici donc ma liste des présentations que j'aimerais suivre, mais que je ne pourrais pas suivre en entier :

  1. Printing maps in the browser with InkMap
  2. OSGeo in the browser: Advances in client-side WebAssembly-based Geospatial Analysis and frontend visualization using jsgeoda and Vis.gl
  3. Solving Spatial Problems with PostGIS
  4. 3D geo-applications with CesiumJS - data, possible use-cases and specifications
  5. Browser-side geoprocessing with Turf.js and Leaflet
  6. Watching after your PostGIS herd
  7. Geostyler Mapfile Parser
  8. A fast web 3D viewer for 11 million buildings
  9. Graph algorithms on the database with pgRouting
  10. pygeoapi: what's new in the Python OGC API Reference Implementation
  11. FOSS4GPU: Faster GIS via GPU and cuSpatial
  12. OpenStreetMap and the neglected pedestrian
  13. OGC APIs: background, current state, what's next
  14. Geospatial analysis using python 101
  15. OGC API - Deeper Dive into OGC API Features, Records and EDR
  16. QGIS and OGC APIs - how do they work together?
  17. Practical Geospatial Data Versioning with Kart
  18. Processing Massive-Scale Geospatial Data with Apache Sedona
  19. PMTiles: An open, cloud-optimized archive format for serverless map data
  20. MapLibre project: community driven Mapbox GL fork
  21. Modular OGC API Workflows for Processing and Visualization
  22. Cloud optimized formats for rasters and vectors explained
  23. Demystifing OGC APIs with GeoServer: introduction and status of implementation
  24. Deploying and operating GeoServer: a DevOps perspective
  25. QField Features Frenzy
  26. Seamless fieldwork thanks to QFieldCloud
  27. Deployment of open source vector tile technology with UN Vector Tile Toolkit
  28. The Very Best New Features of QGIS 3.x
  29. QGIS Plugin Development Is Not Scary: Lessons Learned from Literature Mapper
  30. QGIS MetaSearch: lowering the barrier to geospatial data discovery in the desktop
  31. Input, Mergin & QGIS: collect data, sync, and collaborate with ease
  32. GeoRasterLayer for Leaflet: Truly Server-Free GeoTIFF Visualization
  33. Versioning in 2021: when and how you should do it
  34. Using point clouds in QGIS
  35. GeoHealthCheck - QoS Monitor for Geospatial Web Services
  36. Wegue - Webmapping with OpenLayers and Vue.js
  37. GeoMapFish und QGIS Server
  38. Algorithm Talk: JSON-to-Code Compression
  39. Vector tile basemaps for your QGIS project
  40. OpenLayers Feature Frenzy
  41. Easily publish your QGIS projects on the web with QWC2
  42. MapStore, a year in review
  43. Deploying QGIS using command line options.
  44. Large scale QGIS deployments : feedback and lessons learned
  45. Fast, Robust Arithmetics for Geometric Algorithms and Applications to GIS
  46. WAPLUGIN: Water Accounting and Productivity Plugin for QGIS
  47. FOSS4G software developments for Water Utilities Management in Eastern Africa by using Vector Tiles
  48. G3W-SUITE: in OS framework for publishing and managing QGIS projects on the Web
  49. Giswater : open source management tool for water networks
  50. An implementation of FOSS4G - QGIS, QField and Vector Tiles for rural water supply management in Rwanda
  51. Geospatial programming with Rust
  52. QGIS, Football, what else ?

FOSS4G 2021 - Presentations I would like to follow

FOSS4G 2021 began yesterday, Monday September 27 2021, with the first workshops. The presentations will begin tomorrow, Wednesday Septembre 29 2021.

3Liz has 3 presentations plus 1 made by ONF International :

This years's schedule is very complete and I find it hard to choose from the long list of presentations. So here is my list of presentations that I would like to attend, but that I will not be able to follow in full:

  1. Printing maps in the browser with InkMap
  2. OSGeo in the browser: Advances in client-side WebAssembly-based Geospatial Analysis and frontend visualization using jsgeoda and Vis.gl
  3. Solving Spatial Problems with PostGIS
  4. 3D geo-applications with CesiumJS - data, possible use-cases and specifications
  5. Browser-side geoprocessing with Turf.js and Leaflet
  6. Watching after your PostGIS herd
  7. Geostyler Mapfile Parser
  8. A fast web 3D viewer for 11 million buildings
  9. Graph algorithms on the database with pgRouting
  10. pygeoapi: what's new in the Python OGC API Reference Implementation
  11. FOSS4GPU: Faster GIS via GPU and cuSpatial
  12. OpenStreetMap and the neglected pedestrian
  13. OGC APIs: background, current state, what's next
  14. Geospatial analysis using python 101
  15. OGC API - Deeper Dive into OGC API Features, Records and EDR
  16. QGIS and OGC APIs - how do they work together?
  17. Practical Geospatial Data Versioning with Kart
  18. Processing Massive-Scale Geospatial Data with Apache Sedona
  19. PMTiles: An open, cloud-optimized archive format for serverless map data
  20. MapLibre project: community driven Mapbox GL fork
  21. Modular OGC API Workflows for Processing and Visualization
  22. Cloud optimized formats for rasters and vectors explained
  23. Demystifing OGC APIs with GeoServer: introduction and status of implementation
  24. Deploying and operating GeoServer: a DevOps perspective
  25. QField Features Frenzy
  26. Seamless fieldwork thanks to QFieldCloud
  27. Deployment of open source vector tile technology with UN Vector Tile Toolkit
  28. The Very Best New Features of QGIS 3.x
  29. QGIS Plugin Development Is Not Scary: Lessons Learned from Literature Mapper
  30. QGIS MetaSearch: lowering the barrier to geospatial data discovery in the desktop
  31. Input, Mergin & QGIS: collect data, sync, and collaborate with ease
  32. GeoRasterLayer for Leaflet: Truly Server-Free GeoTIFF Visualization
  33. Versioning in 2021: when and how you should do it
  34. Using point clouds in QGIS
  35. GeoHealthCheck - QoS Monitor for Geospatial Web Services
  36. Wegue - Webmapping with OpenLayers and Vue.js
  37. GeoMapFish und QGIS Server
  38. Algorithm Talk: JSON-to-Code Compression
  39. Vector tile basemaps for your QGIS project
  40. OpenLayers Feature Frenzy
  41. Easily publish your QGIS projects on the web with QWC2
  42. MapStore, a year in review
  43. Deploying QGIS using command line options.
  44. Large scale QGIS deployments : feedback and lessons learned
  45. Fast, Robust Arithmetics for Geometric Algorithms and Applications to GIS
  46. WAPLUGIN: Water Accounting and Productivity Plugin for QGIS
  47. FOSS4G software developments for Water Utilities Management in Eastern Africa by using Vector Tiles
  48. G3W-SUITE: in OS framework for publishing and managing QGIS projects on the Web
  49. Giswater : open source management tool for water networks
  50. An implementation of FOSS4G - QGIS, QField and Vector Tiles for rural water supply management in Rwanda
  51. Geospatial programming with Rust
  52. QGIS, Football, what else ?

jeudi 18 mars 2021

On our way to quality

Lizmap is almost 10 years old. 10 years of new features, documentation, and numerous version release. Many software libraries updates, many contributors (31 if github is correct) and contributions later we've released version 3.4 at the end of 2020.

Whilst in the release cycle, we realized that our release process was lacking something. We were unsure of the quality of this release, and we were missing some tools to assess whether the release would contain regressions.

In order to avoid these issues in future releases and updates, we decided to implement a number of processes and changes in both how we release and build lizmap.

First : we have decided to not accept code patches without tests. Be these tests unit tests, integration tests or just some lines of text explaining how to test for the bug or regression being fixed by the patch. We are now maintaining a list of tests in our code repository.

Secondly we changed our release process to be able to test. We now have a dedicated time slot between the time when our code is ready and the time our code is released to the world. This will let us test internally and will let us gather feedback from users testing our release candidates.

Our third point is community centered. It's now quite easy to set up a lizmap stack or two using our Docker images. Using these instructions you'll have a docker running lizmap in no time on your computer. Add a project or two to it, test and see if you see anything that doesn't work like your production environment and let us know by opening a ticket. Our aim here is to have more user test our release candidates (we do these for major releases) so we can quickly fix regressions before we officially release.

Fourth we are setting up internal processes to make our code easier to test (docker is a good example of this) and easier to read. Hence, are growing use of linters. We also added a code analyzer for our backend: PHPstan.

Finally, we spent a good amount of time updating our demos (see demo.lizmap.com), making sure they work. This makes our demos a reference for most of our testing.

We had realized in June 2020 some of theses issues around quality. That's why we had an intern refactor lizmap. That refactor had two goals. One was to make it easier to add tests to its code and the second one was to add more tests. All these changes have made it to the 3.4 branch. They aren't in the 3.3 branch because it would have meant too much work. This means 3.3 is a bit less tested than 3.4 (hint upgrading from 3.3 is very easy).

Now that most of our backend is covered we are focusing our efforts on the front-end. This means we will update some of the libraries we use, we will refactor our code and will add as much test as possible. This is going to be the work of an intern. We have chosen Cypress to build end2end tests.

All of these automated tests (backend, front-end, end2end) are being run from our githubrepo through github actions.

All these changes have been made possible by the growth of 3liz during 2020.

Nos efforts qualité

Lizmap a près de 10 ans. 10 ans de code, d'ajout de nouvelles fonctionnalités, de rédaction de documentation, de sortie de nombreuses versions. Des montées de versions de librairies, de nombreux contributeurs (31 si j'en crois GitHub) et contributions plus tard, nous avons sorti la version 3.4 fin 2020.

Lors de ce cycle de release entre les differentes versions RC et la version finale, nous nous sommes rendu compte d'un manque dans notre processus de release. Nous n'étions pas sûrs de la qualité de lizmap au moment de cette sortie et nous n'avions pas assez de moyens pour évaluer le risque d'avoir une version qui contiendrait des régressions.

Afin de rendre le produit plus fiable lors de mise-à-jour et de pouvoir être plus serein lors de nos prochaines sorties de version, nous avons mis en place un certain nombre de points afin d'améliorer la qualité.

Le premier est de ne plus accepter de contributions sans tests. Des tests automatiques, c'est bien, mais des procédures manuelles de tests, c'est bien aussi. Nous avons donc maintenant une règle qui dit "pas de patch sans test". Nous préférons les tests automatiques qui seront joués lors de l'intégration continue. Mais nous avons aussi conscience que tout n'est pas testable de manière automatique. Et donc qu'un certain nombre de tests devront se jouer de manière manuelle. Nous maintenons donc une liste de tests à jouer. Ces projets de tests sont présents dans les branches 3.4 et pour la prochaine version 3.5 (aka master).

Le deuxième est de mettre en place un processus de release qui intègre une phase de test. Nous consacrons maintenant un jour ou deux afin de pouvoir jouer tous les tests et de valider qu'aucune régression n'est présente. Pour les versions majeures, nous avons alloué encore plus de temps afin de pouvoir intégrer le retour de nos utilisateurs.

Troisième point dans lequel nous avons investi, la participation communautaire aux tests. Il est désormais très simple d'avoir un Lizmap avec un ou plusieurs projets. Il suffit d'utiliser notre stack docker, d'ajouter votre projet et de voir si tout fonctionne comme prévu. Si un problème survient, il est alors possible d'ouvrir au plus vite un ticket avec le maximum d'information pour que nous puissions le corriger. Nous souhaiterions que plus de personnes participent aux tests de nos Release Candidates (RC), afin de détecter avant les sorties les régressions sur vos projets.

Quatrièmement, nous mettons en place des processus internes pour que notre code soit plus facile à tester (cf la stack docker), mais aussi plus lisible par l'utilisation de linters. Nous avons également ajouté un analyseur de code pour le backend, PHP Static Analyser afin de nous prévenir de possibles erreurs côté PHP.

Cinquièmement, nous venons de passer du temps à mettre à jour la plate-forme de démo https://demo.lizmap.com; les projets ont été dépoussiérés et mis à jour. Ces mises à jour facilitent l'adoption de nos démos comme un référentiel de tests avec de vraies données.

Nous avions pris conscience en juin 2020 d'un déficit dans nos processus qualité. Nous avions donc dirigé un stage afin de refactoriser la librairie Lizmap pour qu'elle soit plus facile à tester de manière automatique. De nombreux tests ont été ajoutés lors de cette refactorisation. Ces changements ont été intégrés dans la future branche 3.5 de Lizmap. C'était trop de travail pour l'intégrer dans les branches 3.3 et 3.4 - elles seront donc légèrement moins bien testées de manière automatique par la CI.

La partie backend PHP étant mieux couverte et mieux testable, nos efforts dans les mois à venir vont se focaliser sur la partie front-end (Javascript, inteface Web...), avec des mises à jour de librairies, de la refactorisation de code et l'ajout de nombreux tests. Une stagiaire en fera le sujet de son stage, on ajoutera grâce à l'outil cypress des tests end2end automatiques.

Les tests backend PHP ainsi que frontend end2end Javascript, ainsi que les linters PHP et Javascript sont lancés sur le dépôt GitHub avec Actions.

Tous ces changements n'ont été possibles qu'en allouant plus de ressources au projet Lizmap au sein de 3liz, par l'arrivée de nouvelles personnes dans l'équipe.

mardi 2 février 2021

2021, Lizmap will be 10 years old

The year 2020 was marked by the growth of the 3Liz team (now we are 8) and the release of version 3.4 of Lizmap Web Client (Liste des nouvelles fonctionnalités)

This new version marks a change in the way Lizmap Web Client works, as some features now depend on the installation of the Lizmap plugin for QGIS Server. The Lizmap plugin extend QGIS Server API.

In 2011, when Michaël imagined Lizmap, he wanted to take advantage of QGIS Server to facilitate the creation of Web maps, by offering a solution that integrates with QGIS so that the geographic data manager doesn't have to change tools when he wants to make a Web publication of his work.

In 10 years, Lizmap has become a true tool for creating and publishing Web mapping applications ranging from simple maps for consulting geographic data to collaborative geographic data management applications (addresses, water networks, naturalist observations, etc.), including the creation of dashboards with graphs or data mining tools.

Flood risks in Montpellier

lizmap-3_4-photo.jpg, fév. 2021
Consulting data with Lizmap

Points of interest in the Lake Geneva Watershed

lizmap-3_4-selection.jpg, fév. 2021
Selecting and export data with Lizmap

Faunistic observations in Polynesia

lizmap-3_4-edition.png, fév. 2021
Collaborative Data Editing with Lizmap

Evolution of COVID-19 in France from march to may 2020

lizmap_3-4_dashboard-covid.png, fév. 2021
Dashboards Lizmap

Follow-up of cats' movements

lizmap-3_4-discover-data.png, fév. 2021
Data mining with Lizmap

In 2021, we want to continue to improve the quality and stability of Lizmap (code refactoring, adding new tests), release 2 new versions of Lizmap Web Client with a version 3.5 at the end of May 2021, and maybe a new major version at the end of the year.

All the 3Liz team wishes you a very happy new year 2021 with Lizmap.

2021, Lizmap aura 10 ans

L'année 2020 a été marqué par une croissance de l'équipe de 3Liz (nous sommes maintenant 8) et par la publication de la version 3.4 de Lizmap Web Client (Liste des nouvelles fonctionnalités)

Cette nouvelle version marque un changement dans le fonctionnement de Lizmap Web Client, car certaines fonctionnalités dépendent maintenant de l'installation du extension Lizmap pour QGIS Serveur. Le plugin Lizmap étend l'API standard de QGIS Serveur.

En 2011, quand Michaël imagine Lizmap, il souhaite profiter de QGIS Serveur pour faciliter la création de cartes Web, en proposant une solution qui s'intègre à QGIS afin que le gestionnaire de données géographiques n'ait pas à changer d'outil lorsqu'il souhaite faire une publication Web de son travail.

En 10 ans, Lizmap est devenu un vrai outil de création et de publication d'applications Web cartographiques allant de la simple carte de consultation de données géographiques à l'application de gestion de données géographiques collaboratives (adresses, réseaux d'eau, observations naturalistes, etc) en passant par la création de tableaux de bord avec graphiques ou d'outils d'exploration de données.

Risques de crues à Montpellier

lizmap-3_4-photo.jpg, fév. 2021
Consultation de données avec Lizmap

Points d'intérêts dans le bassin versant du lac Léman

lizmap-3_4-selection.jpg, fév. 2021
Sélection de données et export avec Lizmap

Observations faunistiques en Polynésie

lizmap-3_4-edition.png, fév. 2021
Édition collaborative de données avec Lizmap

Évolution du COVID-19 en France de mars à mai 2020

lizmap_3-4_dashboard-covid.png, fév. 2021
Tableaux de bords avec Lizmap

Suivi des déplacements de chats

lizmap-3_4-discover-data.png, fév. 2021
Exploration de données avec Lizmap

En 2021, nous souhaitons continuer à améliorer la qualité et la stabilité de Lizmap (refactorisation du code, ajout de nouveaux tests), publier 2 nouvelles versions de Lizmap Web Client avec une version 3.5 fin mai 2021, et peut-être une nouvelle version majeure en fin d'année.

Toute l'équipe 3Liz vous souhaite donc une très bonne année 2021 avec Lizmap.

lundi 25 janvier 2021

Refactoring and tests about the PHP code in Lizmap

Adrien Lagroy de Croutte from the École 42 joined 3Liz 6 months ago for an internship.

  • His main goal was to lead a refactoring on the PHP code of Lizmap, to make it easier to write unit tests.

  • His second goal was writing unittests. Approximately 200 unit tests have been added. These tests are executed by the continuous integration platform on each commit to avoid regressions and bugs.

Thanks to this work, we will avoid regressions for any next versions of Lizmap by having more tests on our continuous integration platform.

Thanks to you Adrien ;)

Refactoring et tests du code PHP de Lizmap

Adrien Lagroy de Croutte de l'École 42 a rejoint 3Liz il y a 6 mois dans le cadre d'un stage.

  • Sa mission principale a été de faire un refactoring du code PHP de Lizmap, ceci dans le but de pouvoir plus facilement le tester unitairement.

  • Sa seconde mission a été d'ajouter plus de 200 tests unitaires. Ceci sont exécutés par nos outils d'intégration continue sur chaque modification du code, nous évitant de possible bugs et régressions.

Grâce à ce travail, nous limitons les régressions sur les prochaines versions de Lizmap en rendant le code plus testable par des outils d'intégration continue.

Merci à toi Adrien ;)

jeudi 26 novembre 2020

Lizmap Web Client 3.4 RC

We are pleased to announce the release of Lizmap Web Client 3.4 RC (release candidate). You will find the new features list here:

This new Lizmap Web Client release comes with Lizmap plugin in 3.3 version:

There remains work on documentation and translation. Any help is welcome :)

Lizmap Web Client 3.4 RC

Nous sommes heureux d’annoncer la sortie de Lizmap Web Client 3.4 RC (release candidate). Vous trouverez la liste des nouvelles fonctionnalités ici :

Cette nouvelle version de Lizmap Web Client s'accompagne de celle du plugin Lizmap en version 3.3 :

Il reste du travail concernant la documentation et la traduction. Toute aide est la bienvenue :)

mardi 24 novembre 2020

Evaluate QGIS Expression server side with Lizmap plugin

Since the beginning of Lizmap-Web-Client all the server part was based on PHP code. With Lizmap Web Client 3.4, which will be released very soon, part of the functionality has been developed within the Lizmap plugin to add features to QGIS Server.

QGIS Server is an open source implementation of the WMS 1.3.0, 1.1.1 and 1.0.0, WFS 1.1.0 and 1.0.0 and WCS 1.0.0 standards defined by the Open Geospatial Consortium (OGC). QGIS Server uses QGIS as a backend for GIS layer logic and map rendering. As QGIS desktop and QGIS Server use the same visualization libraries, the maps that are published on the web look the same as in desktop GIS.

To learn more about QGIS Server

Just like QGIS Desktop, QGIS Server is extensible using Python plugins. It is for example possible to create and add new services to QGIS Server. Documentation

The second QGIS Server feature we have implemented in the Lizmap plugin is a QGIS expression evaluation service.

  • 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

These new queries are used in Lizmap Web Client 3.4 to exploit expressions from QGIS forms. These expressions can be used for :

  • Set default values
  • Set constraints
  • Do drill down
  • Manage field group visibility

Example of using QGIS expression as a form constraint: lizmap-3_4-exp-constraint.png, nov. 2020

Example of use of QGIS expression to manage the visibility of groups of fields Use QGIS Expression to control group visibility

In the case of drill down in forms, it is possible to use geometry to filter the list, for example to select a municipality, a parcel or the nearest street. It is of course possible to use all other values during form entry.

Finally we also added a lizmap service with a GetServerSettings query to retrieve information about QGIS Server and available services.

Evaluer les Expresions QGIS côté serveur avec le Plugin Lizmap

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

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: lizmap-3_4-exp-constraint.png, nov. 2020

Exemple d'utilisation d'expression QGIS afin de gérer la visibilité des groupes de champs Use QGIS Expression to control group visibility

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.

lundi 16 novembre 2020

The Lizmap plugin as an access control plugin for QGIS Server

Since the beginning of Lizmap-Web-Client all the server part was based on PHP code. With Lizmap Web Client 3.4, which will be released very soon, part of the functionality has been developed within the Lizmap plugin to add features to QGIS Server.

QGIS Server is an open source implementation of the WMS 1.3.0, 1.1.1 and 1.0.0, WFS 1.1.0 and 1.0.0 and WCS 1.0.0 standards defined by the Open Geospatial Consortium (OGC). QGIS Server uses QGIS as a backend for GIS layer logic and map rendering. As QGIS desktop and QGIS Server use the same visualization libraries, the maps that are published on the web look the same as in desktop GIS.

To learn more about QGIS Server

Just like QGIS Desktop, QGIS Server is extensible using Python plugins. For example, it is possible to add a data access control system to QGIS Server Documentation.

The first QGIS Server feature we implemented in the Lizmap plugin is an access control system.

We have implemented 3 access controls:

  • access to the project
  • filter by user
  • access to project layers

The first 2 controls were already present. In the Lizmap configuration, it is possible to restrict access to a project for a list of user groups. It is also possible to define filtering rules according to the user logged in or not.

The implementation in QGIS Server of the filter by user, thanks to the Lizmap plugin, allows to filter layers even if they are hidden in a layer group. In Lizmap Web Client version 3.3 and previous versions, filtering layers by user only works if the layer is displayed alone, because Lizmap Web Client adds filters to the requests sent to QGIS server. In Lizmap, it is possible to transform a group of QGIS layers into a single layer for the web client. This results in requests where the layer to be filtered does not appear. With the Lizmap plugin for Lizmap Web Client 3.4 all layers will be filtered correctly.

By making the Lizmap plugin, an access control plugin for QGIS Server, we were able to add the possibility to restrict access to the layers of a project for a list of user groups.

The ability to restrict access to the layers of a project for a list of user groups makes it possible to distribute a QGIS project, a Lizmap webmap, with a content that can vary depending on the user.

Le plugin Lizmap comme plugin de contrôle d'accès pour QGIS Server

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 d'ajouter un système de contrôle d'accès aux données dans QGIS Server Documentation.

La première fonctionnalité QGIS Server que nous avons implémentée dans le plugin Lizmap est un système de contrôle d'accès.

Nous avons implémenté 3 contrôles d'accès :

  • l'accès au projet
  • le filtre par utilisateur
  • l'accès aux couches du projet

Les 2 premiers contrôles étaient déjà présent. Dans la configuration Lizmap, il est possible de restreindre l'accès à un projet pour une liste de groupes d'utilisateur. Il est aussi possible de définir des règles de filtrage en fonction de l'utilisateur connecté ou non.

Le portage dans QGIS Server du filtre par utilisateur, grâce au plugin Lizmap, permet de filtrer des couches même si elles sont cachées dans un groupe de couche. Dans la version 3.3 de Lizmap Web Client et les précédentes, le filtrage par utilisateur des couches ne fonctionne que si la couche est affichée seule, car Lizmap Web Client ajoute des filtres aux requêtes envoyées à QGIS server. Dans Lizmap, il est possible de transformer un groupe de couche QGIS en une seule couche pour le client web. Il en découle des requêtes où n'apparaissent pas la couche à filtrer. Avec le plugin Lizmap pour Lizmap Web Client 3.4 toutes les couches seront filtrées correctement.

En faisant du plugin Lizmap, un plugin de contrôle d'accès pour QGIS Server, nous avons pu ajouter la possibilité de restreindre l'accès des couches d'un projet pour une liste de groupes d'utilisateur.

La possibilité de restreindre l'accès des couches d'un projet pour une liste de groupes d'utilisateurs permet de diffuser un projet QGIS, une carte Lizmap, avec un contenu qui peut varier en fonction de l'utilisateur.

mercredi 4 novembre 2020

Plugin Cadastre pour QGIS : version 1.10.0, support QGIS 3.16 et autres

Nous sommes fière de vous annoncer la publication d'une nouvelle version du plugin Cadastre pour QGIS, la version 1.10.0

Cette version est déjà disponible sur le dépôt des plugins officiels de QGIS https://plugins.qgis.org/plugins/cadastre/ et donc dans votre QGIS.

Cette version intègre les améliorations suivantes :

  • Compatibilité avec QGIS 3.16 tout en restant compatible 3.4
  • Import - Optimisation de l'import Spatialite et de l'affichage du temps passé
  • Ajout de l'extraction de détails sur les propriétaires (indivisions)
  • Widget "Outils de Recherche" : Ajout du bouton Infos parcelle
  • Dialogue "infos parcelle" : Ajout des actions imprimer / copier /sauvegarder des infos des onglets
  • Révision barre d'outils (position actions) et réécriture code menu / barre d'outils
  • Fix - bug connexion (relevé parcellaire, première instanciation)

Plugin cadastre 1.10.0

Cette version ainsi que la précédente, la version 1.9.0, a été possible grâce au soutient de :

Et elle intègre les contributions de :

lundi 6 juillet 2020

QGIS Server 3.10.8 will be fully compatible with lizmap

On March 6, 2020, a Lizmap user identified a regression in QGIS Server 3.10 compared to version 3.4. This regression concerns the print function (GetPrint) for the layer groups configured as a single layer for Lizmap. A group configured as a layer could no longer be printed with QGIS Server 3.10.

To correct this bug, we decided to use Test Driven Developments. We started by creating a new test for QGIS Server highlighting the regression. We then corrected this regression and verified using the test that the patch we proposed corrected the test.

The problem is that once the patch and the new test were integrated into the master branch (development version) and the release-3_12 branch (version 3.12) of QGIS, the Travis-based continuous integration system used by QGIS indicated regularly have a problem with testing the QGIS Server print function. Regression correction was therefore not included in version 3.10 of QGIS which is the long term released version (LTR), and tests of the printing function of QGIS Sever were blacklisted for the continuous integration. In fact the test indicated a Segfault.

It took QGIS Server developers several months, PR 36198, PR 36581, PR 37179, to identify the reason why testing of the QGIS Server print function was failed in continuous integration. The reason was simple: the test was too long, it exceeded 55 seconds fc561d0
on travis in continuous integration.

It is true that the test file started to be too long. The solution to be able to reactivate the tests in continuous integration was to separate the tests of the printing function of QGIS Server in several tests.

Once the tests of the printing function reactivated for the master branch and the release-3_14 branch, the regression patch could be integrated into the release-3_10 branch (version 3.10 of QGIS) and this patch will be available when the release of version 3.10.8 on July 17, 2020.

QGIS Server 3.10.8 sera totalement compatible avec Lizmap

Le 6 mars 2020, un utilisateur de Lizmap identifiait une régression dans QGIS Server 3.10 par rapport à la version 3.4. Cette régression concerne la fonction d'impression (GetPrint) pour les groupes de couches configurés en tant que couche simple pour Lizmap. Un groupe configuré comme une couche ne pouvait plus être imprimé avec QGIS Server 3.10.

Pour corriger ce bug, nous avons décidé de fair du Développements Pilotés par les Tests Nous avons commencé par créer un nouveau test pour QGIS Server mettant en avant la régression. Nous avons ensuite corrigé cette régression et vérifié à l'aide du test que le correctif que nous proposions corrigeait bien le test.

Le problème est qu'une fois le correctif et le nouveau test intégrés à la branche master (version de développement) et à la branche release-3_12 (version 3.12) de QGIS, le système d'intégration continue basé sur Travis utilisé par QGIS indiquait régulièrement un problème avec les tests de la fonction d'impression de QGIS Server. La correction de la régression n'a donc pas été intégré à la version 3.10 de QGIS qui est la version maintenue à long terme (LTR), et les tests de la fonction d'impression de QGIS Sever ont été placé sur liste noire pour l'intégration continue. En fait le test indiquait un Segfault.

Il nous a fallu, aux développeurs QGIS Server PR 36198, PR 36581, PR 37179, plusieurs mois pour identifier la raison pour la quelle les tests de la fonction d'impression de QGIS Server ne passait plus dans l'intégration continue. La raison était simple : le test était trop long, il dépassait les 55 secondes fc561d0 sur travis en intégration continue.

Il est vrai que le fichier de test commençait à être trop long. La solution pour pouvoir réactiver les tests en intégration continue était de séparer les tests de la fonction d'impression de QGIS Server en plusieurs tests.

Une fois les tests de la fonction d'impression réactivés pour la branche master et la branche release-3_14, le correctif de la régression a pu être intégré à la branche release-3_10 (version 3.10 de QGIS) et ce correctif sera disponible lors de la publication de la version 3.10.8 le 17 juillet 2020.

lundi 28 octobre 2019

QGIS Server 3.10: OGC API Features et WMS Dimension

QGIS QGIS Server 3.10.0 est sorti vendredi 25 octobre 2019. Cette version sera la nouvelle version maintenue à long terme (LTR) à partir de février 2020.

Cette nouvelle version introduit de nouvelles fonctionnalités:

QGIS Server implémente désormais l’API OGC - Features - Partie 1: Core également appelé WFS3. Il s'agit d'une nouvelle implémentation qui fournit un service basé sur le HTML et le JSON pour vos développements de cartographie Web. Une interface de WebSIG simple est disponible et prête à l'emploi. Elle est facilement personnalisable via un système de modèles HTML.

Vous pouvez consulter la documentation pour plus d'informations.

Media - Server OAPIF (aka WFS3) support

Un serveur WMS peut prendre en charge plusieurs types de dimensions, telles que la date et l'heure, l'altitude ou d'autres types de dimensions. La dimension doit être définie pour chaque couche vectorielle et peut être utilisée par le client WMS pour filtrer les informations demandées. Le WMS Time est inclue dans les dimensions WMS.

Media - WMS dimension

Avant, l'utilisation des SVGs dans QGIS Server n’était pas pleinement fonctionnelle. Nous avons amélioré la manière dont QGIS Server récupère les ressources distantes telles que les SVGs dans le contexte QGIS Server. Il est maintenant possible d'utiliser des SVGs dans vos couches et de les publier en tant que WMS sans problèmes de rendu dans QGIS Server.

Media - Using SVG in QGIS Server

QGIS Server 3.10: OGC API Features and WMS Dimension

QGIS QGIS Server 3.10.0 has been released on friday 25th of october 2019. This version will the new Long Term Release (LTR) in february 2020.

This new version introduces new features:

QGIS Server now supports OGC API - Features - Part 1: Core also known as WFS3. This is a completely new implementation that provides an HTML and JSON based service for your web mapping developments, a simple WebGIS interface is available out of the box and it is easily customizable through an HTML template system.

More information is available in the documentation.

Media - Server OAPIF (aka WFS3) support

A WMS server can provide support for several type of dimensions such as time, elevation or other types of dimensions. The dimension has to be defined as the layer level and can be used by the WMS client to filter requested information. WMS Time is part of the WMS Dimension.

Media - WMS dimension

Before, using SVG in QGIS Server wasn't really functional. We improved how QGIS Server fetches remote resources such as SVG in the QGIS Server context. It's now possible to use SVG in your layers and publish them as WMS without rendering issues in QGIS Server.

Media - Using SVG in QGIS Server

lundi 30 septembre 2019

Lizmap Web Client and QGIS 3 : enfin compatible

Nous sommes heureux d’annoncer la sortie de lizmap Web Client 3.3 - 1 - et lizmap plugin 3.1 - 2 - 3

Ces versions proposent de nouvelles fonctionnalités:

  • Ajout de la recherche dans la base de données d'adresses français BAN
  • Créer une info-bulle HTML à partir du formulaire par glisser-déposer de QGIS
  • Amélioration de l'info-bulle HTML: utilisation de la valeur à afficher
  • Ajout de la possibilité de construire un formulaire de filtrage pour les couches PostgreSQL / PostGIS

Mais la fonctionnalité principale est la prise en charge de QGIS Server 3 4.

Pour cela, nous devions adapter le client Web lizmap aux changements apportés à QGIS Server et corriger QGIS Server 3.4 afin de proposer une expérience utilisateur identique :

  • Fix regression server print selection pdf
  • JPEG output for WMS GetPrint request has gone
  • In WMS GetFeatureInfo CRS param not mandatory when FILTER param
  • Add unit test for WFS GetFeature with BBOX param without EPSG
  • SLD : Support escapeChar attribute of PropertyIsLike
  • Null field value in GML has to be empty string
  • Use Project selection color in GetPrint
  • Unit-test: To avoid regression in Server printing to PDF output format
  • Keeps empty parts for not empty styles parameters

Nous avions également besoin de mettre à jour des plugins QGIS Server utiles pour Lizmap :

  • Atlas print 5
  • WFS output Extension 6

Si vous utilisez déjà Lizmap Web Client, vous pouvez :

  • mettre à jour Lizmap Web Client vers la version 3.3
  • mettre à jour QGIS Server vers la version 3.4
  • mettre à jour les plugins QGIS Server que vous utilisez
  • rendez-vous sur le backoffice de Lizmap Web Client pour mettre à jour la version de QGIS Server dans la configuration
  • mettez à jour votre plugin Lizmap vers la version 3.1 dans votre QGIS bureautique 3.4
  • et mettez à jour vos projets QGIS.

Si vous souhaitez tester lizmap, installez la dernière version avec QGIS Server LTR.

Dernière information, une liste de diffusion pour le projet Lizmap a été créée : https://lists.osgeo.org/mailman/listinfo/lizmap

- page 1 de 24