Aller au contenu

WFS : interroger une carte comme une base de données

Le WFS est le standard OGC qui renvoie de la vraie donnée géographique (objets, attributs) plutôt qu'une image de carte, ce qui permet de la filtrer et de la recroiser côté client.

À gauche une tuile de carte figée et verrouillée, à droite une table d'objets géographiques et leurs attributs passant par un filtre pour alimenter une carte dans le navigateur.
Un WMS renvoie une image de carte. Un WFS renvoie les objets eux-mêmes, filtrables et restylables.

Définition

Le WFS (Web Feature Service) est un standard de l'OGC (Open Geospatial Consortium, l'organisme qui normalise les standards géospatiaux du web) qui permet à un client web de récupérer, sur le réseau, des objets géographiques bruts (points, lignes, polygones et leurs attributs) plutôt qu'une simple image de carte. Là où un WMS (Web Map Service) renvoie un PNG, un WFS renvoie de la donnée : on peut la filtrer, la recroiser, l'afficher avec son propre style.

Explication

Un service WFS s'interroge avec trois opérations principales :

  • GetCapabilities : la liste des couches disponibles ;
  • DescribeFeatureType : le schéma d'une couche (quels attributs, quels types) ;
  • GetFeature : la requête qui renvoie les objets eux-mêmes, filtrables par emprise géographique (BBOX) ou par critère attributaire (CQL_FILTER).

Historiquement, le WFS renvoie du GML (Geography Markup Language), un dialecte XML verbeux et pénible à parser côté navigateur. C'est justement cette lourdeur qui a motivé son successeur, l'OGC API Features, une version REST/JSON du même principe. Le WFS n'a pourtant pas disparu : de nombreux services publics, en particulier ceux de l'IGN (Institut national de l'information géographique et forestière) sur la Géoplateforme, continuent de l'exposer en frontal, avec GeoJSON disponible en format de sortie alternatif pour éviter le GML.

En pratique

Récupérer les bâtiments de la BD TOPO sur une emprise donnée, directement en GeoJSON :

GET https://data.geopf.fr/wfs?
  SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature
  &TYPENAMES=BDTOPO_V3:batiment
  &OUTPUTFORMAT=application/json
  &BBOX=624000,7040000,626000,7042000,EPSG:2154

Le résultat est une FeatureCollection GeoJSON classique, directement injectable dans L.geoJSON() côté Leaflet. Pas besoin de parser du GML : c'est le format de sortie qui change, pas le principe du WFS.

Pour aller plus loin

Le WFS partage sa logique de filtrage avec son successeur moderne, l'OGC API Features, détaillé dans La donnée géo pour les devs web. Il sert par exemple à récupérer le bâti daté de la BD TOPO dans Projeter des données dans le temps.

Dernier