====== Web Map Tile Service (WMTS) ====== Le WMTS, pour Web Map Tile Service, est un standard décrivant la manière de diffuser des données cartographiques sous forme de tuiles prédéfinies. WMTS est un complément à [[WMS]]. Par rapport à WMS, WMTS a pour avantage principal d’offrir de meilleures performances dans la diffusion données cartographiques. Le revers de la médaille est une moins grande flexibilité que le WMS. WMTS n’est ainsi pas recommandé quand les données sont mises à jour de manière très fréquentes ou quand il est nécessaire d’offrir une symbologie à la demande. Le fait de prégénérer les tuiles implique que les niveaux de zoom et la symbologie sont définis à l’avance et ne peuvent être modifiés à la demande. Un exemple de visualisateur utilisant un service WMTS pour diffuser les images aériennes. La librairie OpenLayers permet l’affichage des données. ===== Les requêtes WMTS ===== WMTS supporte 3 requêtes, à savoir GetCapabilities, GetTile et GetFeatureInfo. Les 2 premières sont obligatoires, alors que GetFeatureInfo est optionnelle. ==== GetCapabilities ==== La requête GetCapabilities a pour but de renseigner sur le contenu du service WMTS. Celle-ci peut se faire selon 3 langages différents. === GetCapabilities selon KVP === Un exemple de requête selon KVP est: http://www.maps.bob/maps.cgi?service=WMTS&version=1.0.0&request=GetCapabilities Les paramètres service, version et request sont envoyés au serveur. Celui-ci envoie un fichier XML qui contient les informations sur le service WMS. === GetCapabilities selon SOAP === Une requête selon SOAP pour GetCapabilities est faite en mode “POST”. Un exemple de fichier XML envoyé est: 1.0.0 application/xml La réponse à cette requête se présente sous la forme d’un fichier XML structuré selon SOAP qui contient les informations sur le service WMTS. === GetCapabilities selon REST === Une requête selon REST pour GetCapabilities est faite en mode “GET”. Un exemple d’URL est : http://www.maps.bob/1.0.0/WMTSCapabilities.xml On retrouve dans cet URL un numéro de version du service, une requête (WMTSCapabilities) et une extension qui indique le format de retour. La réponse à cet URL est un fichier XML qui contient les informations sur le service WMTS. ==== GetTile ==== La requête GetTile permet à un client WMTS de demander une tuile, ceci pour une certaine pyramide d’une certaine couche et selon un certain format. Le service WMTS renvoie la tuile demandée. La requête GetTile peut se faire en plusieurs langages. GetTile selon KVP Plusieurs paramètres peuvent être envoyés au serveur WMTS: * **service :** le nom du service, en l’occurence WMTS. Paramètre obligatoire. * **request :** le nom de la requête, en l'occurrence //GetTile//. Paramètre obligatoire. * **version :** le numéro de version. Actuellement, la version 1.0.0 est valable. Paramètre obligatoire. * **layer :** le nom de la couche concernée. Paramètre obligatoire. * **style :** un nom de style prédéfini mis à disposition par le service WMTS. Paramètre obligatoire. * **format :** le format d’image à renvoyé. Paramètre obligatoire. * **tileMatrixSet :** un jeu de tuile pour la couche prédéfinie. Il s’agit d’une référence à l’entier de la pyramide. Paramètre obligatoire. {{ :main:standards:tilematrixset.png |Représentation d’un Tile Matrix Set contenant plusieurs Tile Matrix}} **Représentation d’un Tile Matrix Set contenant plusieurs Tile Matrix** * **tileMatrix :** une matrice de tuiles, correspondant à un niveau de zoom du TileMatrixSet. Paramètre obligatoire. {{ :main:standards:tilematrix.png |Représentation d’une Tile Matrix avec son origine en haut à gauche}} **Représentation d’une Tile Matrix avec son origine en haut à gauche** * **tileRow :** le numéro de la tuile, selon l’axe des abscisses. Paramètre obligatoire. * **tileCol :** le numéro de la tuile, selon l’axe des ordonnées. Paramètre obligatoire. * **dimensions :** la norme WMTS offre la possibilité de définir zéro, une ou plusieurs dimensions. Il s’agit par exemple d’une information temporelle, comme la date de saisie des données. Un exemple de requête selon KVP est : http://www.maps.bob/maps.cgi?service=WMTS&request=GetTile&version=1.0.0&layer=etopo2&style=default&format=image/png&TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3 On retrouve dans cette requête les différents paramètres définis précédemment. Aucune dimension n’a été précisée dans ce cas. La réponse à cette requête est une tuile, donc une image, de format PNG. === GetTile selon SOAP === Dans un context web, cette solution fait peu de sens car une réponse selon SOAP implique l’encapsulation des données images dans un fichier XML, chose peu logique et peu efficace. C’est pourquoi cette possibilité n’est pas présentée ici. === GetTile selon REST === Une requête selon REST pour GetTile est faite en mode “GET”. Un exemple d’URL est: http://www.maps.bob/etopo2/default/WholeWorld_CRS_84/10m/1/3.png Par rapport à une requête selon KVP, les paramètres sont simplement ordonnés dans l’URL. Cette manière de faire correspond aux principes mêmes du web, à savoir l’accès à des ressources à travers des URL, et est de ce fait la manière la plus efficace pour diffuser des tuiles. ==== GetFeatureInfo ==== La requête GetFeatureInfo, optionnelle, permet à un client WMTS de demander une information sur un objet présent à une certain position dans une tuile. Le service WMTS renvoie les informations demandées. La requête GetFeatureInfo peut se faire en plusieurs langages. === GetFeatureInfo selon KVP === En plus des paramètres de la requête GetTile, 3 noouveaux paramètres font leur appraition: I: la position du pixel de la tuile,selon l’axe des abcisses. J: la position du pixel de la tuile,selon l’axe des ordonnées. InfoFormat: le format dans lequel les informations sur les objets sont renvoyés. Un exemple de requête selon KVP est : http://www.maps.bob/maps.cgi?service=WMTS&request=GetFeatureInfo&version=1.0.0&layer=coastlines&style=default&format=image/png&TileMatrixSet=WholeWorld_CRS_84&TileMatrix=10m&TileRow=1&TileCol=3&J=86&I=132&InfoFormat=application/gml+xml; version=3.1 On constate que l’on définit la tuile ainsi que la position d’un pixel au sein de cette tuile. Un exemple de réponse est: 503.0 1 2 86 132 Cette reponse permet de connaître l’altitude d’un certain point de la tuile. === GeatureInfo selon SOAP === Une requête selon SOAP pour GetFeatureInfo est faite en mode “POST”. La réponse à cette requête se présente sous la forme d’un fichier XML structuré selon SOAP qui contient les informations sur la position demandée. === GetFeatureInfo selon REST === Une requête selon REST pour GetFeatureInfo est faite en mode “GET”. Un exemple d’URL est: http://www.maps.bob/etopo2/default/WholeWorld_CRS_84/10m/1/3/86/132.xml Par rapport à la requête GetTile, cette URL est complétée des informations sur la position au sein de la tuile ainsi que du format dans lequel les informations sont renvoyées. ==== Bibliographie ==== * [[http://www.opengeospatial.org/standards/wmts|Standard WMTS]]