WMTS: Coğrafi konum (lat, uzun) belirli bir yakınlaştırma düzeyinde karo dizinine dönüştürülsün mü?


15

Belirli bir coğrafi konum (enlem, boylam) ve yakınlaştırma düzeyi için WMTS döşemesinin dizinlerini (x, y) nasıl alacağımı bilmek istedim.

Örnek olarak, (48.675, 2.7) konumunda bir İÇN var, yakınlaştırma 10 için karşılık gelen açık sokak haritası döşemesini almak istiyorum.

Matematiği yapabilir miyim? Bir web servisine ihtiyacım var mı? Hassasiyet: Bunu programlı olarak yapmam gerekiyor.



Bing Maps Döşeme Şemasındaki yararlı bir MSDN Makalesi de iyi bir astar sağlar. Hem bu hem de OSM makalesinde Web Mercator projeksiyonu varsayılmaktadır, ancak ilke diğer öngörülen koordinat sistemleri için de aynıdır.
kes

Yanıtlar:


22

OSM wiki sayfası mükemmel: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Hızlı başvuru için çıkarılan cevap (sözde kodda).

Döşeme numaralarına verilen Boylam / enlem / zoom:

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

Not o log()bu sözde kodu (birçok programlama dillerinde ortak matematik sözdizimi genellikle "ln ()", ama çoğu zaman "log ()") doğal günlüğüne ifade eder.

Boylam / enlem için verilen Döşeme numaraları:

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
bekleyin, OSM kaygan biçimi WMTS döşeme biçimidir?
casus

5
Yukarıdaki bağlantının birçok dilde uygulamaları olduğunu unutmayın ! (Şu anda 27)
Cyrille
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.