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.