WMTS: convertire la geolocalizzazione (lat, long) in indice di tile, a un determinato livello di zoom?


14

Volevo sapere come ottenere gli indici (x, y) di un riquadro WMTS per una data geolocalizzazione (latitudine, longitudine) e livello di zoom.

Ad esempio, ho un PDI situato in (48.675, 2.7), voglio ottenere la tessera della mappa stradale aperta corrispondente per lo zoom 10.

Posso fare i conti? Ho bisogno di un servizio web? Precisione: devo farlo a livello di codice.



Un utile articolo MSDN sullo schema di piastrellatura di Bing Maps fornisce anche un buon primer. Sia questo che l'articolo OSM presuppongono la proiezione di Web Mercator, ma il principio è lo stesso per altri sistemi di coordinate proiettati.
kes

Risposte:


22

La pagina della wiki di OSM è perfetta: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Ecco la risposta estratta (in pseudo codice) per un rapido riferimento.

Dato Longitudine / latitudine / zoom sui numeri delle tessere:

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

Si noti che log()in questo pseudo codice si fa riferimento al log naturale (spesso "ln ()" nella sintassi matematica comune, ma spesso "log ()" in molti linguaggi di programmazione).

Dati i numeri delle tessere per longitudine / latitudine:

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 / π

2
aspetta, il formato slippy OSM è il formato di tessera WMTS?
spia

5
Nota che il link sopra ha implementazioni in molte lingue! (27 attualmente)
Cyrille
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.