OpenLayers vs Leaflet : Lecture d’un protocole WFS

Suite aux commentaires de Bel sur le post montrant comment afficher des flux WM(T)S et WFS avec Openlayers depuis Geoserver, j’écris ici une note succincte de WebMapping. L’objectif consiste à comparer les deux API Open Sources OpenLayers (v4) et Leaflet (1.2) pour l’utilisation du protocole WFS (Web Feature Service).

Pour rappel, le WFS est un protocole HTTP d’échange de données vecteurs qui permet “côté client” de connaître les structures et les sources de la donnée spatiale. En clair, le serveur cartographique fournit une URL avec plusieurs paramètres pour appeler et lister les entités du vecteur dans un format spécifique (XML, JSON, etc). Ici, les données géographiques chargées sur l’interface web proviennent du serveur cartographique GeoServer (v 2.12) sous le nom de « tiger_roads » dans l’espace de travail « tiger », elles représentent les routes de Manhattan.

On peut à priori lister la collection d’entités géographiques du vecteur en saisissant l’URL suivante dans un navigateur Web (figure 1):

http://localhost/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typename=tiger:tiger_roads&outputFormat=application/json.

Figure 1 : Liste des données géographiques issues du protocole WFS en format JSON

En détail, on appelle le service WFS (v 1.1.0) de GeoServer pour lequel on demande de charger les objets géographiques (request=GetFeature) du vecteur tiger_roads de l’espace de travail tiger sous format JSON. Cette requête est basique puisqu’aucune projection (srsname),  ni aucune emprise géographique (bbox), ni aucun autre filtre de données ne sont spécifiés. En aparté, en programmation, vous n’avez besoin pas de Leaflet ou d’OpenLayers pour lire ces données, ces deux API sont utilisées afin de distribuer spatialement les coordonnées géométriques de chaque entité sur la carte.

Alors comment afficher les données géographiques du vecteur sur une cartographie en ligne à partir du protocole WFS? Avec OpenLayers? Et Leaflet?

1. Prise en charge du protocole WFS par les API OpenLayers et Leaflet

On se réfère à la documentation des API sur les sites d’OpenLayers et de Leaflet.

Veuillez vous Connecter pour consulter ce contenu. S'Inscrire Gratuitement ››

En conclusion, cet article a permis de comparer concrètement les API Open Sources d’OpenLayers et de Leaflet pour l’affichage d’un protocole WFS. La différence entre les deux API, et elle est de taille, est que le format WFS est pris en charge nativement dans OpenLayers contrairement à Leaflet. Grâce à la communauté importante des utilisateurs de Leaflet, il est possible de trouver de nombreux plugins de qualité pour exploiter différentes sources de données. Toutefois, cela pose la question de la stabilité de votre projet à terme comme l’a d’ailleurs très bien expliqué Kamisol sur le sujet « Leaflet ou OpenLayer? » du forum. En effet, le module utilisé à l’instant t suivra-t-il l’évolution des nouvelles versions de Leaflet? Cette question ne se pose pas avec OpenLayers.

En perspective, on montrera prochainement que le protocole WFS présente l’avantage de filtrer les entités géographiques d’un vecteur. Les possibilités de sélection et de filtres des données sont relativement vastes aussi bien « côté serveur » avec les langages ECQL et CQL de GeoServer que « côté client » avec OpenLayers.

Partager l'article
Taggé , , , , , .Mettre en favori le Permaliens.

A propos Florian Delahaye

Passionné de Géomatique

Une réponse à OpenLayers vs Leaflet : Lecture d’un protocole WFS

  1. rbaghi dit :

    Bonjour,

    Article très intéressant qui m’a donné envie de tester avec les données hydrographiques du SANDRE mises à dispo en wms (http://services.sandre.eaufrance.fr/geo/eth_FXX?) mais impossible de les afficher. Si vous avez une idée de la config je suis preneur. Je ne trouve pas de doc sur le web. C’est d’autant plus frustrant que Qgis s’en sort très bien pour lire et afficher ce flux.
    Merci beaucoup

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *