X

WMS et WFS : Configuration et Exemple de hacking

Cet article a pour objectif de montrer l’importance d’une bonne configuration des serveurs cartographiques. En Open Source, les plus utilisés sont GeoServer, MapServer et QGIS Server. Ils mettent à disposition des services tels le Web Map Service (WMS), le Web Map Tile Service (WMTS), le Web Feature Service (WFS). Ces protocoles basés sur des standards de l’Open Geospatial Consortium (OGC) permettent de diffuser des données géographiques sous format image pour le WMS (images tuilés pour le WMTS) et des formats textuels comme le JavaScript Object Notation (JSON) pour le WMS et WFS. Alors, la problématique souvent recherchée par les administrateurs des serveurs cartographiques est de limiter voire d’interdire l’accès à l’information géographique de type textuel. En clair, on peut traduire cela par : « mes chers utilisateurs, j’ai seulement le droit de vous montrer des belles images toute en couleur sur ma carte… et surtout ne touchez pas à ma data ».

Ainsi, il existe plusieurs méthodes pour donner l’accès aux services WMS et WFS et/ou aux données de manière sécurisée. Ici, on ne présente pas en détail des stratégies de sécurisation. Mais on montre simplement comment exploiter certaines configurations WMS et WFS. Dans un premier temps, on discute des différents paramètres liés aux protocoles HTTP WMS et WFS. Ensuite, l’exploitation de configurations de serveurs cartographiques sera démontrée sur une interface de WebSIG.

I. Les paramètres WMS et WFS : Accès aux données géographiques

La configuration par service d’un serveur cartographique est disponible grâce à la requête GetCapabilities. Les capacités des services comme le WMS et WFS diffèrent selon leur version. Ainsi, on obtient :

  • les métadonnées du service (contact, nom du service, etc);
  • la description des opérations du service, des paramètres et des formats de données en sortie disponibles;
  • les systèmes de coordonnées et couches SIG disponibles.

Comme évoqué précédemment, les services WMS et WFS permettent de récupérer les données attributaires et géométriques du vecteur (ou du raster).

Pour le WMS, dans l’URL, on utilise la requête GetFeatureInfo. Il est indispensable d’ajouter les paramètres liés au nom de la couche considérée et les coordonnées du point x et y. Le format de la donnée en sortie est précisé également.

Pour le WFS, l’URL contient la requête GetFeature avec le paramètre typeName désignant la donnée recherchée.

En résumé, l’accès à l’information géographique en format de sortie textuel est restreint à une localisation précise pour le WMS. Il faut donc utiliser le WFS si on veut accéder à un vecteur avec toutes ces entités géographiques.

Passons à la pratique…

II. WMS et WFS : Exemple d’exploitation des requêtes

II.1. Contexte

Pour ceux qui s’amusent comme moi à collectionner les données géographiques pour le plaisir… Je reprends… Pour ceux qui construisent des bases de données pour manger… Je bug en cette soirée… Pour ceux qui créent des business cartographiques grâce à l’Open Data, il est parfois difficile de trouver des informations en format SIG.

En aparté, il faut souligner le travail de publication des données SIG par les services publics. Pour en avoir discuté longuement lors d’une formation GeoServer au ministère de la Transition écologique et solidaire (MTES), il faut être conscient que les services de l’État font ce qu’ils peuvent en la matière avec des moyens toujours plus faibles. Ceci étant dit…

Alors, en cherchant des données SIG sur des feux de forêts, je me confrontais à l’impossibilité de télécharger un vecteur sur l’interface d’un WebSIG (figure 1).

Figure 1 : Téléchargement de couches SIG sur un WebSIG

II.2. Analyse des services WMS et WFS sur MapServer

L’examen des URLs montrent que les données SIG recherchées sont issues de MapServer via le service WMS. On a (figure 2) : [URL]&EXCEPTIONS=XML&LAYERS=layer35&ISBASELAYER=false&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A2154&BBOX=633623.4664110699,6206039.528952587,694179.80181713,6252354.728248589&WIDTH=961&HEIGHT=735

Figure 2 : Examen des URLs liés aux services WMS et WFS.

Ainsi, on retrouve le nom de la couche SIG par le paramètre LAYERS. La requête GetMap retourne une image géoréférencée en format png. Cette dernière se situe sur l’étendue géographique délimitée par la BBOX selon une projection géographique associée SRS.

Afin de télécharger la donnée, on scrute alors les capacités du service WFS : [URL]SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities .

Figure 3 : GetCapabilities d’un service WFS issu de MapServer

Les GetCapabilities indiquent que pour les deux versions du service WFS, l’opération GetFeature est possible (figure 3). Et, Le format de la donnée en sortie est le GML.

Ensuite, on exploite ces informations pour obtenir la donnée recherchée sur l’étendue géographique choisie : [URL]SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&TYPENAME=layer35&STYLES=&SRS=EPSG%3A2154&BBOX=618661.4253408399,6221533.013114186,706647.99562144,6240383.453003788

Figure 4 : Retour XML d’un flux WFS

On enregistre ce retour XML dans un fichier d’extension .gml (figure 4). Le logiciel QGIS nous permet enfin de prendre en charge cette donnée SIG. Puis, il est simple de la visualiser comme le montre la figure 5.

Figure 5 : Prise en charge d’une source de donnée GML sur QGIS.

III. Discussions

En conclusion, la connaissance des standards des services WMS et WFS permettent de manipuler les données géographiques de différentes manières. Du côté des utilisateurs, à travers cet exemple, le téléchargement de couches SIG est rendu possible par l’analyse des opérations disponibles sur le serveur cartographique. Pour les administrateurs du serveur, le paramétrage des protocoles HTTP évite de laisser échapper certaines informations géographiques parfois sensibles.

Pour aller plus loin, la construction d’une base de données conséquente ne peut pas voir le jour rapidement par ce mode de fonctionnement. En effet, ici, le téléchargement de la donnée SIG se fait de manière non automatisée. Par conséquent, il est préférable d’interroger un large panel de GetCapabilities et de bancariser les données sur une étendue géographique souhaitée via des scripts.

Enfin, si vous avez besoin d’un service en architecture SIG et en traitements de données ou d’une formation, n’hésitez pas à me contacter. Je vous conseille également la lecture de le livre de David Collado sur la mise en place d’une architecture SIG Open Sources avec MapServer : Géomatique : WebMapping en OpenSources (2019).

Partager l'article
Florian Delahaye: Passionné de Géomatique
Related Post