====== Web Map Service (WMS) ======
===== Description =====
Le Web Map Service (WMS) 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 avec 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 les comprendre et œuvrer en conséquence.
Cela sert à deux familles d'usage : voir à quoi ressemble une série de donnée, et superposer des couches (layers) provenant 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 et la manière selon laquelle les serveurs doivent décrire les données qu'ils sont capables de fournir.
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.
A noter que, dans la Communauté européenne, et dans le cadre de la directive INSPIRE, le [[http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:274:0009:0018:FR:PDF|règlement relatif aux services de consultation, Annexe III part B]] impose de prendre en charge au moins un des formats suivants : PNG ou GIF sans compression.
===== Fonctionnement =====
==== Les opérations du WMS ====
Le standard WMS comprend trois types principaux d'opérations :
{{:main:standards:schema_wms.jpg|}}
- **GetCapabilities** : retourne les métadonnées du service (couches proposées, projections associées, auteur...),
- **GetMap** : retourne une carte (généralement dans un format d'image) selon les paramètres demandés,
- **GetFeatureInfo** : retourne les informations sur un objet représenté sur la carte.
La deuxième opération (GetMap) correspond ainsi à une fonctionnalité de visualisation tandis que la troisième opération (GetFeatureInfo) correspond à une fonctionnalité d'interrogation.
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.
Les noms des paramètres (exemple ''REQUEST'') ne sont pas sensibles à la casse contrairement aux valeurs (exemple ''GetCapabilities''). Par contre il est conseillé d'écrire les paramètres en majuscule pour une meilleure lisibilité. Les paramètres peuvent être définis dans n'importe quel ordre.
Les listes de valeurs doivent utiliser la virgule comme séparateur.
=== GetCapabilities (obligatoire) ===
Permet d'obtenir 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, projection...
Paramètres obligatoires :
* ''SERVICE=WMS'' : nom du service.
* ''REQUEST=GetCapabilities'' : type de requête. Dans cet exemple GetCapabilities.
Paramètres optionnels :
* ''VERSION=version'' : numéro de la version, 1.3.0 par exemple.
* ''FORMAT=MIME_Type'' : format de rendu.
* ''UPDATESEQUENCE=chaîne'' : Permet de maintenir la cohérence du cache. Sa valeur peut être soit un entier, soit une chaine de caractère qui représente un timestamp ou tout autre chaine.
**La réponse est un fichier XML.**
Exemple :
http://geoservices.brgm.fr/geologie?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
La version 1.1.0 présente une particularité dans le mesure où le type de document (appelé type mime) renvoyé est propre au standard. Cela a pour conséquence de ne pas être reconnu par les navigateurs qui le proposent en téléchargement. Les versions précédentes et suivantes (notamment la version 1.3.0) du standard définie le type de document à XML qui est ainsi reconnu par les navigateurs qui l'affichent directement.
=== GetMap (obligatoire) ===
Permet d'obtenir une carte dont les caractéristiques sont définies par le client à l’aide de paramètres standardisés.
Lorsqu’une requête GetMap est invoquée, le client peut spécifier :
* l’information qu’il souhaite voir sur la carte (une ou plusieurs "couches"),
* les "styles" de représentation de ces couches,
* quel lieu doit être représenté (une "Emprise"),
* le système de coordonnées géographiques ou le système de coordonnées projetées qui doit être utilisé (le "Système de Coordonnées de Référence", ou CRS),
* le format de sortie désiré (choisi dans la liste des formats publiés par l'opération GetCapabilities),
* la taille de la sortie (largeur et hauteur),
* la couleur et la transparence de l’arrière-plan.
Lorsque deux cartes sont produites sur la même emprise, possèdent le même système de référence spatial et la même taille, elles peuvent être superposées avec précision et constituer une nouvelle carte.
L’utilisation de formats d’image qui supportent des arrière-plans transparents (GIF ou PNG par exemple) permet de voir les différents objets représentées sur les différentes cartes superposées. De plus, les cartes peuvent provenir de différents serveurs distribués, et être superposées par l’application cliente avec laquelle dialogue le navigateur Web de l’utilisateur.
Paramètres obligatoires :
* ''VERSION=version'' : numéro de la version, 1.3.0 par exemple.
* ''REQUEST=GetMap'' : type de requête.
* ''LAYERS=couche_1,couche_2,couche_3'' : liste des couches.
* ''STYLES=style_couche_1,style_couche_2,style_couche_3'' : styles à utiliser (1 style par couche demandée).
* ''CRS=espace_de_nom:identifiant_du_crs'' : système de coordonnées à utiliser. La valeur de ce paramètre doit être une de celles publiées par le service au travers de la réponse à l'opération GetCapabilities. Exemples de valeurs couramment utilisées : EPSG:4326, EPSG:3785, CRS:84,
* ''BBOX=xmin,ymin,xmax,ymax'' : coordonnées de la zone demandée dans la projection définie par le paramètre CRS, et dans l'ordre attendu par celui-ci.
* ''WIDTH=x'' : largeur de la carte en pixel.
* ''HEIGHT=y'' : hauteur de la carte en pixel.
* ''FORMAT=MIME_Type'' : format de la réponse. En général une image, mais services WMS sont capables de produire autre chose qu'une image : un fichier KML par exemple.
Paramètres optionnels :
* ''TRANSPARENT=true/false'' : transparence de l'arrière-plan de la carte. Non activé par défaut (FALSE).
* ''BGCOLOR=couleur'' : valeur hexadecimale de la couleur de l'arrière plan de la carte. Par défaut en blanc (0xFFFFFF).
* ''EXCEPTIONS=format_exception'' : format de retour des exceptions transmises par le service WMS. Exemple de valeur : "application/vnd.ogc.se_inimage". Au format XML par défaut. Autres valeurs possibles : BLANCK, INIMAGE.
* ''TIME=time'' : date de la couche demandée (pour du WMS-T)
* ''ELEVATION=elevation'' : altitude
* autre valeur
**La réponse est une carte (le plus souvent une image consultable dans un simple navigateur web).**
Exemple (carte de la température de surface des mers fournie par un service de la NOAA) :
http://oceanwatch.pfeg.noaa.gov/thredds/wms/SODA/2.0.3?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=temp&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&CRS=CRS%3A84&BBOX=-10,30,20,60&WIDTH=256&HEIGHT=256
=== GetFeatureInfo (optionnel) ===
Permet d'obtenir de l'information sur des entités représentées sur la carte.
Paramètres obligatoires :
* ''VERSION=1.3.0''
* ''REQUEST=GetMap''
* ''BBOX'' : emprise de la zone de recherche
* ''CRS'' : système de Référence Spatial
* ''QUERY_LAYERS='' : liste des couches
* ''INFO_FORMAT='' : format de sortie (par défaut xml)
* ''I='' : colonne de pixel
* ''J='' : ligne de pixel
Paramètres optionnels :
* ''FEATURE_COUNT=nombre d'objets maximum à retourner''
* ''EXCEPTIONS=format_exception'', voir plus ci-dessus pour les valeurs possibles.
Exemple (Version 1.1.1) :
http://ogc.bgs.ac.uk/cgi-bin/BGS_Bedrock_and_Superficial_Geology/wms?service=WMS&version=1.1.1&request=GetFeatureInfo&layers=GBR_BGS_625k_BA&query_layers=GBR_BGS_625k_BA&x=200&y=400&radius=10&srs=epsg:27700&bbox=0,0,700000,1300000&width=350&height=650
==== Notions importantes ====
===Système de Coordonnées de Référence (Coordinate Reference System ou CRS)===
Le Système de Coordonnées de Référence, tel que défini par l’OGC, est un paramètre textuel identifiant l'identifiant d'un système de coordonnées de référence horizontal précédé d'un espace de noms.
Les spécifications WMS mentionnent 3 espaces de noms: [[main:dico:epsg|EPSG ]], CRS et AUTO.
* L'espace de nom EPSG fait référence au registre géodésique du Groupe d'Enquête Pétrolière Européen [EPSG], qui définit des identifiants numériques (exemple: "EPSG:27562") pour beaucoup de projections cartographiques usuelles, et y associe des métadonnées de projection et de coordonnées (telles que les unités de mesures ou le méridien central).
* L'espace de noms CRS correspond à des systèmes de coordonnées dont les définitions sont incluses en annexe des spécifications WMS. Le système de coordonnées le plus connu de cet espace de noms est CRS:84.
* L'espace de nom AUTO est utilisée pour les projections "automatiques", une classe de projections caractérisée par la définition explicite du centre de projection lors de la requête. Ces systèmes de coordonnées sont également incluses en annexe des spécifications WMS.
Attention, certains codes peuvent sembler équivalents mais ne le sont pas. Par exemple, CRS:84 et EPSG:4326 correspondent tous les deux à WGS84 mais l'ordre des coordonnées est inversée : (lon,lat) pour le CRS:84 et (lat,lon) pour EPSG:4326. A noter que le respect de l'ordre des coordonnées induit par le CRS utilisé est un écueil important rencontré par nombre d'implémentations de WMS : en règle général, les implémentations de WMS 1.1.1 utilisent l'ordre (lon,lat) pour les systèmes de coordonnées non projetés de l'EPSG (une erreur provenant des spécifications 1.1.1) alors que pour les implémentations 1.3.0 cette erreur a tendance à se résorber.
__Application dans le cadre de la directive INSPIRE__ : selon le [[http://ec.europa.eu/transparency/regcomitology/index.cfm?do=Search.getPDF&lA6b4z6edALEzOuvQ2DQwOG/TAAP9ikSaiSS6eGE6S7B7EJR+poTzWZ/2wT/z/JFTr7x0HnynbCJdi/BzR4ZvdPpAur0FOHhej8jYcN49FA=|règlement relatif à l’interopérabilité des séries et des services de données géographiques]], "les référentiels de coordonnées disponibles comprennent, au minimum, les référentiels pour les coordonnées géodésiques bidimensionnelles (latitude, longitude)".
En savoir plus sur les [[main:standards:lexique|CRS]].
===Emprise===
L'emprise définit l'étendue du champ cartographique que vous désirez afficher dans les coordonnées du CRS choisi.
Selon les spécifications WMS de l’OGC, l'emprise (Bounding Box, BBOX) est un ensemble de quatre valeurs décimales. Ces valeurs définissent dans cet ordre les X et Y minima et les X et Y maxima exprimés dans les unités du CRS de la requête, de telle sorte qu'une zone rectangulaire est ainsi définie dans ces unités. Une emprise ne peut avoir une surface nulle.
En savoir plus sur le terme [[main:standards:lexique|emprise]].
===== Standards liés =====
* [[http://www.opengeospatial.org/standards/wmc|WMC]] (Web Map Context) standard permettant de stocker, de réutiliser voire de diffuser des contextes d'utilisation d'un WMS. Le contexte contient toutes les informations utiles pour remettre un utilisateur dans les mêmes conditions de travail que lorsqu'il l'a enregistré (liste des couches, styles utilisés, ordre, taille de fenêtre, étendue…).
* [[http://www.opengeospatial.org/standards/sld|SLD 1.1]] (Styled Layer Description) est un profil de WMS,
* [[http://portal.opengeospatial.org/files/?artifact_id=34833|DGIWG WMS 1.3 Profile]] est un profil de WMS applicable dans le domaine de la Défense et dont le DGIWG (Defence Geospatial Information Working Group) est à l'origine.
===== Versions =====
* [[http://portal.opengeospatial.org/files/?artifact_id=7196|1.0 (04/2000)]] : première version du WMS
* [[http://portal.opengeospatial.org/files/?artifact_id=1058|1.1.0 (06/2001)]]
* [[http://portal.opengeospatial.org/files/?artifact_id=1081&version=1&format=pdf|1.1.1 (12/2001)]]
* [[http://portal.opengeospatial.org/files/?artifact_id=4756|1.3.0 (01/2004)]] : cette nouvelle version [[http://www.neogeo-online.net/blog/archives/191/|introduit 3 subtilités]] :
* Elle demande de respecter l'ordre défini par le système de coordonnées de référence (CRS) utilisé. Le meilleur exemple consiste à comparer EPSG:4326 et CRS:84 (ces deux systèmes sont utilisés pour la même projection à l'exception de l'ordre de leurs axes). Si c'est EPSG:4326 l'ordre est lat, lon. Si c'est CRS:84, l'ordre est lon, lat (cf. annexe B.3 de WMS 1.3.0). La distinction n'est pas liée au fait que le système soit géographique ou projeté. Elle tient à la manière dont le système de coordonnées a été défini. Il est bon de préciser que la plupart des CRS non projetés suivent la règle lat,lon,
* Le nom du paramètre permettant de désigner le système de coordonnées devient "CRS" au lieu de "SRS",
* Les noms des paramètres X et Y de l'opération GetFeatureInfo sont remplacés par I et J.
===== Exemples d'implémentation du WMS =====
Pour trouver des applications (serveurs et clients) supportant le WMS :
* http://www.opengeospatial.org/resource/products/byspec
Pour trouver un serveur WMS actif :
* http://www.geocatalogue.fr
* http://ows-search-engine.appspot.com
* http://georezo.net/wiki/main:webmapping:webservices
* http://portal.onegeology.org/catalogView.jsp
* http://ogc.bgs.ac.uk/BGS_Bedrock_and_Superficial_Geology/
Il est possible de réaliser un monitoring des services WMS via le site [[http://www.mapmatters.org/|Mapmatters]].
===== Bibliographie =====
- [[http://www.opengeospatial.org/standards/wms|Web Map Service sur le site de l'OGC]]
- [[http://geostandards.geonovum.nl/index.php/1.5.2_OGC_Web_Mapping_Service_WMS|OGC WMS Service de cartographie Web. GeoNovum]]
- [[http://www.neogeo-online.net/blog/archives/191/|WMS 1.3 et gestion des coordonnées]]
- [[http://benjamin.chartier.free.fr/pro/?p=1624|Symbology Encoding]]
- [[http://www.ird.fr/informatique-scientifique/methodo/standards/normes_iso_ogc/web_services/|Procédures et Standards - Normalisation ISO/OGC - Les web services ]]
===== Sources et contributeurs =====
Web Map Service (WMS)
Ce document provient de « http://georezo.net/wiki/main/standards/wms ».
Dernière modification de cette page le 13 Septembre 2010.
Contributeurs : Adrian Custer, Benjamin Chartier, François Robida, Guillaume Sueur, Hervé Caumont, Marc Leobet, Marie-Françoise Voidrot, Michel Rosio, Nicolas Klein, Olivier Courtin, Yves Jacolin.
[[http://www.forumogcfrance.org/|Forum français de l’OGC]]
[[http://www.afigeo.asso.fr/|Groupe OGC de l’Afigéo]]
[<<<>>>]