WMTS: convertir la géolocalisation (lat, long) en index de tuile, à un niveau de zoom donné?

15

Je voulais savoir comment obtenir les index (x, y) d'une tuile WMTS pour une géolocalisation (latitude, longitude) et un niveau de zoom donnés.

Par exemple, j'ai un POI situé au (48.675, 2.7), je veux obtenir la vignette de carte ouverte correspondante pour le zoom 10.

Puis-je faire le calcul? Ai-je besoin d'un webservice? Précision: je dois le faire par programme.

Neekobus
la source
2
C'est parti
John Powell
Un article MSDN utile sur le schéma de tuilage Bing Maps fournit également une bonne introduction. Ceci et l'article OSM supposent une projection Web Mercator, mais le principe est le même pour les autres systèmes de coordonnées projetés.
kes

Réponses:

22

La page wiki OSM est parfaite: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Voici la réponse extraite (en pseudo code) pour référence rapide.

Étant donné la longitude / latitude / zoom sur les numéros de tuile:

n = 2 ^ zoom
xtile = n * ((lon_deg + 180) / 360)
ytile = n * (1 - (log(tan(lat_rad) + sec(lat_rad)) / π)) / 2

Notez que log()dans ce pseudo-code se réfère au journal naturel (souvent "ln ()" dans la syntaxe mathématique courante, mais souvent "log ()" dans de nombreux langages de programmation).

Étant donné les numéros de tuile en longitude / latitude:

n = 2 ^ zoom
lon_deg = xtile / n * 360.0 - 180.0
lat_rad = arctan(sinh(π * (1 - 2 * ytile / n)))
lat_deg = lat_rad * 180.0 / π
Neekobus
la source
2
attendez, le format glissant OSM est le format de tuile WMTS?
espionner
5
Notez que le lien ci - dessus a des implémentations dans de nombreuses langues! (27 actuellement)
Cyrille