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

Le WFS dans QGIS Server

Il y a un peu plus d'un an, un nouveau serveur cartographique a été publié par la communauté QGIS : QGIS Server. Le principe de ce serveur cartographique est d'exploiter le moteur de rendu de QGIS, de configurer son service à partir d'un projet QGIS et d'implémenter la dernière norme Web Map Service (WMS) de l'Open Geospatial Consortium (OGC) : la version 1.3.0. On peut donc facilement créer des services WMS à partir de QGIS.

Le projet QGIS propose aussi une interface cliente Web, le QGIS Web Client, développée à partir du framework Javascript GeoExt. Chez 3Liz nous avons décidé de développer notre propre solution avec un système de configuration complémentaire, LizMap. Elle est basée sur Jelix/HTML/Jquery/CSS.

Pour aller plus loin dans la création de cartes dynamiques sur le Web, nous avons décidé de développer l'implémentation de la norme Web Feature Service (WFS) version 1.0.0 de l'OGC dans QGIS Server. Cette norme décrit la façon d'accéder aux données vectorielles au travers du Web via le format GML2. Elle offre donc la possibilité de créer plus d'interaction avec l'utilisateur au sein d'une interface Web.

Nous avons ajouté le service WFS à QGIS Server, dont voici les différentes requêtes possibles via le paramètre REQUEST :

  • GetCapabilities qui liste les couches de données vectorielles accessibles au format XML ;
  • DescribeFeatureType qui fournit la liste des attributs d'une couche de données vectorielles au format XSD, XMLSCHEMA ;
  • GetFeature qui fournit les données vectorielles d'une couche au format GML2 (une norme de l'OGC basé sur XML), et GeoJSON, un format non prévu dans la norme WFS 1.0.0 mais plus léger que le GML2.

La requête GetFeature permet de filtrer les objets vectorielles à l'aide des paramètres suivants :

  • FEATUREID qui permet de retourner un seul objet via son ID ;
  • FILTER qui permet de passer un filtre au format Filter Encoding (FE), norme de l'OGC basé sur XML ;
  • BBOX qui permet de filtrer en fonction d'une emprise appelée Bounding Box.

Ces paramètres sont exclusifs, c'est à dire qu'il n'est possible d'en utiliser qu'un seul à la fois.

Enfin, il est possible de préciser la requête GetFeature à l'aide des paramètres suivants :

  • MAXFEATURES qui précise le nombre maximum d'objets vectoriels à renvoyer;
  • PROPERTYNAME qui précise les attributs, géométrie incluse, que l'on souhaite récupérer.

L'ensemble de ces ajouts sont disponibles au travers de 2 patchs :

Ces patchs ont été testés avec de nombreuses sources de données vectorielles, c'est à dire de nombreux types de géométries, à l'aide du plugin WFS de QGIS et d'OpenLayers pour le GeoJSON et le GML2; et ils ont été proposés à la communauté de développeurs de Qgis pour intégration, et sont en attente de validation : http://hub.qgis.org/issues/5094.

Nous prévoyons de continuer le développement afin de permettre l'édition de données via la norme Transactionnelle du WFS, WFS-T. Pour le moment aucun planning n'a été défini, mais si cette évolution vous intéresse, nous pouvons en étudier un.