WMTS: Geolocation (Lat, Long) in Kachelindex konvertieren, bei einer bestimmten Zoomstufe?

14

Ich wollte wissen, wie die Indizes (x, y) einer WMTS-Kachel für eine bestimmte Geolokalisierung (Breitengrad, Längengrad) und Zoomstufe ermittelt werden.

Zum Beispiel habe ich einen POI unter (48.675, 2.7), ich möchte die entsprechende Open-Street-Map-Kachel für Zoom 10 erhalten.

Kann ich rechnen? Benötige ich einen Webservice? Präzision: Das muss ich programmatisch machen.

Neekobus
quelle
1
Hier gehts: wiki.openstreetmap.org/wiki/…
John Powell
Ein nützlicher MSDN-Artikel zum Bing Maps-Kachelschema bietet ebenfalls eine gute Einführung. Sowohl dieser als auch der OSM-Artikel gehen von einer Web-Mercator-Projektion aus, das Prinzip ist jedoch für andere projizierte Koordinatensysteme dasselbe.
kes

Antworten:

22

Die OSM-Wiki-Seite ist perfekt: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat.to_tile_numbers_2

Hier ist die extrahierte Antwort (in Pseudocode) als Kurzreferenz.

Angegebener Längengrad / Breitengrad / Zoom auf Kachelnummern:

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

Beachten Sie, dass sich log()dieser Pseudocode auf das natürliche Protokoll bezieht (häufig "ln ()" in der allgemeinen mathematischen Syntax, aber häufig "log ()" in vielen Programmiersprachen).

Gegebene Kachelnummern zu Längen- / Breitengrad:

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
quelle
2
Warten Sie, das rutschige OSM-Format ist das WMTS-Kachelformat.
ausspionieren
5
Beachten Sie, dass der obige Link in vielen Sprachen implementiert ist! (27 derzeit)
Cyrille