WMTS: ¿Convertir la geolocalización (lat, long) a índice de mosaico, en un nivel de zoom dado?

14

Quería saber cómo obtener los índices (x, y) de un mosaico WMTS para una geolocalización dada (latitud, longitud) y nivel de zoom.

Por ejemplo, tengo un PDI ubicado en (48.675, 2.7), quiero obtener el mosaico de mapa de calle abierto correspondiente para el zoom 10.

¿Puedo hacer los cálculos? ¿Necesito un servicio web? Precisión: tengo que hacer esto mediante programación.

Neekobus
fuente
1
Aquí tienes: wiki.openstreetmap.org/wiki/…
John Powell
Un útil artículo de MSDN sobre el esquema de mosaico de Bing Maps también proporciona una buena introducción. Tanto este como el artículo de OSM asumen la proyección de Web Mercator, pero el principio es el mismo para otros sistemas de coordenadas proyectados.
kes

Respuestas:

22

La página wiki de OSM es perfecta: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Aquí está la respuesta extraída (en pseudocódigo) para referencia rápida.

Dada la longitud / latitud / zoom a los números de mosaico:

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

Tenga en cuenta que log() en en este pseudocódigo se hace referencia al registro natural (a menudo "ln ()" en la sintaxis matemática común, pero a menudo "log ()" en muchos lenguajes de programación).

Números de mosaico dados a longitud / latitud:

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
fuente
2
espera, ¿el formato deslizante de OSM es el formato de mosaico WMTS?
espía
55
Tenga en cuenta que el enlace anterior tiene implementaciones en muchos idiomas. (27 actualmente)
Cyrille