Web Map Service - WMS

Description

Le Web Map Service est un standard OGC de service web qui permet de produire dynamiquement des cartes à partir de données géoréférencées.

Sa mise en œuvre suppose l'utilisation :

  • d'un  serveur WMS, capable d'accéder aux données, de les lire et de les dessiner en fonction d'une mise en forme particulière,
  • et d'un client WMS, capable d'adresser au serveur des requêtes standardisées utilisant les mots-clés prévus à cet effet.

Le serveur WMS doit également pouvoir comrendre ces requêtes et les interpréter en conséquence.

Le WMS sert à deux familles d'usages :

  • Voir à quoi ressemble un jeu de données unique (que l'on appelle couche, ou layer),
  • et superposer des couches pouvant provenir du même serveur ou de serveurs différents pour en tirer des analyses supplémentaires.

La spécification WMS normalise la manière selon laquelle des applications clientes doivent demander une carte (le "map" de Web Map Service) et la manière selon laquelle les serveurs doivent décrire les données qu'ils sont capables de fournir, avant, le cas échéant de les fournir effectivement de la manière demandée.

Un service WMS produit des cartes sous forme d'images : dans des formats tels que JPEG, PNG et GIF, par exemple. Certains formats gèrent la transparence, permettant ainsi la superposition de différentes couches.

NB : Une carte (Map) est une représentation, elle n’embarque pas les données. Nous verrons que dans la plupart des cas, la représentation de la donnée suffit, permettant l'économie du transfert effectif de celle-ci.

Fonctionnement

Le standard WMS comprend trois principales opérations :

  1. GetCapabilities : retourne des informations générales sur le  service (couches proposées par le serveur, les projections associées, auteur...),
  2. GetMap : retourne une carte (généralement dans un format d'image) selon les paramètres demandés,
  3. GetFeatureInfo : retourne les informations sur un objet représenté sur la carte.

La première opération (GetCapabilities) demande au serveur de s'auto-décrire en précisant ses capacités (capabilities), c'est à dire ce qu'il sait faire, et de quelle manière.

La deuxième opération (GetMap) correspond à une fonctionnalité de visualisation ("sachant ce que tu sais faire, je te demande de me montrer telle carte de telle façon").

La troisième opération (GetFeatureInfo) correspond à une fonctionnalité d'interrogation ("quelles sont les détails de l'objet situé à tel endroit de la carte?").

Les informations listées dans cette section sont issues de la documentation du standard WMS version 1.3.0. Certaines parties peuvent avoir évolué depuis les versions précédentes et pourront éventuellement évoluer dans les versions à venir.


GetCapabilities

Permet d'obtenir un document XML décrivant les capacité du serveur en renseignant les métadonnées du service :

    • caractéristiques (service) : titre, description, personne contact...
    • capacités (capabilities): couches, styles, format, emprise, projections...

R/O : Required/Optional

Required (par la suite on pourra aussi avoir M pour Mandatory) : il faut impérativement inclure ce paramètre dans la requête.

Optional : il peut être omis. Ici la version peut être omise, le serveur échangera suivant la version du service qui lui semble la plus pertinente.

Exemple :

https://geosas.fr/geoserver/sdb/wms?VERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities

(Cliquez sur le lien pour voir la réponse)


GetMap

Permet d'obtenir une carte correspondant aux données, à la localisation et au format demandés. Lorsqu’une requête GetMap est invoquée, le client peut spécifier les paramètres suivants :

R/O : Required / Optional

Exemple : 

https://geosas.fr/geoserver/sdb/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=sdb%3Aucs_pp_bzh&exceptions=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A2154&STYLES=&WIDTH=768&HEIGHT=452&BBOX=15270.292183870391%2C6655098.739574398%2C484373.6680723691%2C6930574.81057142

(Cliquez sur le lien pour voir la réponse)

Carte des Sols de Bretagne


GetFeatureInfo

Permet d'interroger la carte afin d'obtenir de l'information sur des entités demandées de celle-ci dans différents formats tels que HTML, XML ou encore texte brut.

M/O : Mandatory/Optional

L'opération GetFeatureInfo fonctionne de manière similaire et vise à renvoyer les attributs des entités demandées dans une carte dans différents formats tels que HTML, XML et texte brut.

L'exemple suivant présente une demande GetFeatureInfo et la réponse correspondante au format HTML

Exemple :

https://geosas.fr/geoserver/topage/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image%2Fpng&TRANSPARENT=true&QUERY_LAYERS=topage%3Atopage_bretagne_baie_corrige&LAYERS=topage%3Atopage_bretagne_baie_corrige&exceptions=application%2Fvnd.ogc.se_inimage&INFO_FORMAT=text%2Fhtml&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG%3A2154&STYLES=&WIDTH=101&HEIGHT=101&BBOX=317006.49377084203%2C6737577.405232526%2C317970.4309649489%2C6738541.342426633

(Cliquez sur le lien pour voir la réponse)

Réponse à la requête WMS GetFeatureInfo

Pour pouvoir récupérer la légende stylée de notre couche, il faut qu'on passe par la requête GetLegendGraphic. Le lien ci-dessous représente un exemple de quelques paramètres d'une requête GetLegendGraphic :

Exemple :

https://geosas.fr/geoserver/sdb/ows?SERVICE=WMS&EXCEPTIONS=application%2Fvnd.ogc.se_xml&TRANSPARENT=TRUE&VERSION=1.3.0&SLD_VERSION=1.1.0&REQUEST=GetLegendGraphic&CRS=EPSG%3A3857&LAYER=ucs_pp_bzh&FORMAT=image%2Fpng&LEGEND_OPTIONS=forceLabels%3Aon%3BfontAntiAliasing%3Atrue&SCALE=4367830.1877243575

(Cliquez sur le lien pour voir la réponse)

Retour de la requête WMS GetLegendGraphic

Complément sur les WMTS

Comme indiqué plus haut, le WMS fait l'économie de la transmission du jeu de donnée (que la donnée soit de type vecteur ou qu'elle soit raster) et permet la représentation de celle-ci sous forme de carte. C'est une image, une représentation particulière de la donnée, produite dynamiquement par le serveur. La raison principale est qu'il est généralement plus avantageux, en termes de flux transmis, de faire transiter celle-ci plutôt que la donnée dans son ensemble généralement beaucoup plus volumineuse.

Malgré tout, pour certains types de représentation de données fréquemment utilisées, comme des fonds de cartes, cette opération peut s'avérer insuffisante (temps de transfert toujours trop long pour une expérience utilisateur satisfaisante, par exemple).

En effet, pour un fond de carte, c'est toujours la même représentation qui est demandée, et, qui plus est chaque utilisateur ou presque y a recours. Dans ces cas, pour améliorer le temps de réponse du serveur, on peut précalculer ces images, qui sont stockées sur le serveur pour toute l'emprise spatiale de la donnée et à tous les niveaux de zoom sous formes de "tuiles". C'est le WMS tuilé (tiled), ou WMTS.

exemple:

pour les capabilities d'un service WMTS

https://geobretagne.fr/gwc02/service/wmts?SERVICE=WMTS&REQUEST=GetCapabilities

pour récupérer une tuile donnée

https://geobretagne.fr/gwc02/service/wmts?SERVICE=WMTS&REQUEST=gettile&layer=satellite-ancien&format=image/jpeg&tilematrixset=EPSG:4326&tilematrix=EPSG:4326:9&tilerow=58&tilecol=251

Le WMTS fonctionne de manière très similaire aux autres services OGC. Voir dans les références ci-dessous pour une description des opérations et paramètres spécifiques au WMTS.

Liens utiles:

http://www.opengeospatial.org/standards/wms (Anglais)

http://docs.geoserver.org/2.6.x/en/user/services/wms/reference.html (Anglais)

http://georezo.net/wiki/main/standards/wms

http://docs.geoserver.org/latest/en/user/services/wms/get_legend_graphic/legendgraphic.html (Anglais)

https://www.sentinel-hub.com/develop/documentation/api/ogc_api/wmts-parameters (Sur le WMT, en anglais)

Modifié le: mercredi 26 octobre 2022, 12:50