Accueil / Blog / Métier / 2014 / Stockage de tuiles : comprendre WMTS et TMS

Stockage de tuiles : comprendre WMTS et TMS

Par Isabelle Vallet — publié 20/01/2014
Le stockage des tuiles sous forme z/x/y peut se faire selon deux schémas, qui infuent sur la valeur en ordonnées.

Un problème ordinaire

Dans un premier temps, j'ai souhaité télécharger des tuiles vectorielles au format GeoJSON. Grâce à Landez, elles ont été stockées sur mon disque, sous la forme {z}/{x}/{y}.json. Cependant, au moment d'afficher leur contenu avec Leaflet, les tuiles sélectionnées ne semblaient pas présentes.

En réalité, la valeur y n'était pas bonne. Il s'agit d'un problème récurrent dans le monde de la cartographie en ligne : la confusion entre le stockage des tuiles selon les grilles utilisées par TMS et WMTS !

Quelques explications

TMS et WMTS sont des services permettant l'accès à des données tuilées, et doivent donc (entre autres) normaliser un chemin d'accès, fonction des valeurs x et y pour un niveau de zoom donné. Pour les coordonnées des tuiles, l'origine et le sens des ordonnées sur la grille diffèrent :

tms
Standard TMS
wmts
Standard WMTS


Aujourd'hui, si le schéma de stockage, "y descendant", défini par standard WMTS de l'Open Geospatial Consortium tend à s'imposer (c'est celui utilisé par OpenStreetMap, Google Maps, Bing, ainsi que les interfaces de MapBox comme TileMill ou même mbutil), celui de TMS, "y ascendant", reste utilisé, notamment pour le stockage de la pyramide de tuiles du MBTiles. Landez a été écrit aux débuts de ce format dans le but de récupérer des tuiles d'un serveur distant pour être placées dans un MBTiles grâce à mbutil. Il avait donc tendance à préférer le schéma de TMS.

Spécifications de TMS et WMTS

  • TMS (Tile Map Service)
  • WMTS (Web Map Tile Service)

Passer d'un schéma à l'autre, concrétement :

Rappelons que le changement de système TMS/WMTS ne va modifier que la valeur y (z et x ne sont pas impactés).

Le nombre de valeurs que peut prendre y à un niveau de zoom z vaut : nb_y = 2z (en effet, lorsqu'on gagne un niveau de zoom, nb_y est multiplié par deux).
On a donc : y ∈ [0, nb_y - 1]
Ainsi, la conversion de y vers y' donne : y' = ymax - y = nb_y - 1 - y

Un exemple :

Pour passer des schémas TMS à WMTS (ou l'inverse) pour la tuile à z = 4, x = 2, y = 5 :

conversion_tms_wmts
Tuile z = 4, x = 2, yTMS = 5

  • z vaut bien évidemment toujours 4
  • x reste inchangé et a pour valeur 2
  • nb_y = 24 = 16, donc y ∈ [0, 15]
  • yTMS = 5 donc yWMTS = 15 - 5 = 10

Un problème résolu

Landez a désormais une option pour stocker le cache au format WMTS !

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Détecter des formes dans des photos de paysage Détecter des formes dans des photos de paysage 14/02/2019

Et parce que c'est la St-Valentin, on détecte des cœurs !

Représentation des modèles numériques de terrain sur le web : ombrage et 3D Représentation des modèles numériques de terrain sur le web : ombrage et 3D 11/02/2019

Les Modèles Numériques de Terrain sont des données représentant la forme du terrain. Sur une ...

Cartographier le manteau neigeux avec Python Cartographier le manteau neigeux avec Python 08/01/2019

En quelques lignes de code, nous vous proposons de cartographier le manteau neigeux. Nous ...

Cartographie Web 3D - possibilités techniques en logiciels libres 08/01/2019

Au début, les cartes sur le web étaient planes. Puis, avec de plus en plus de données (imagerie ...

Retour State of the Map France 2018 Retour State of the Map France 2018 23/07/2018

L'équipe de Makina attendait avec impatience l'événement de l'année, State Of The Map 2018 à ...