WMTS: Перетворити геолокацію (лат., Довгий) в індекс плитки при заданому рівні збільшення?


15

Мені хотілося знати, як отримати індекси (x, y) плитки WMTS для заданої геолокації (широти, довготи) та масштабування.

Для прикладу, у мене є POI, розташований за адресою (48.675, 2.7), я хочу отримати відповідну плитку з відкритою вулицею для масштабу 10.

Чи можу я зробити математику? Чи потрібна веб-послуга? Точність: я маю це робити програмно.



Корисна стаття MSDN про схему облицювання плитки Bing Maps також забезпечує хороший буквар. І ця, і стаття про OSM передбачають проекцію Web Mercator, але принцип однаковий для інших проектованих систем координат.
кес

Відповіді:


22

Сторінка вікі OSM ідеально підходить: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Ось витягнута відповідь (у псевдокоді) для швидкого ознайомлення.

Враховуючи довготу / широту / масштаб до номерів плиток:

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

Зауважте, що log()в цьому псевдокоді посилається на природний журнал (часто "ln ()" у загальному синтаксисі математики, але часто "log ()" у багатьох мовах програмування).

З огляду на цифри плитки до довготи / широти:

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
зачекайте, невмілий формат OSM - це формат плитки WMTS?
шпигун

5
Зауважте, що вищезазначене посилання має реалізацію на багатьох мовах! (27 наразі)
Кирила
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.