Basierend auf den Informationen in http://www.trail-note.net/tech/coordinate/ von TRAIL NOTE habe ich versucht, daraus eine Funktion zu machen, die Breiten- / Längengrade und Weltkoordinaten mit Python konvertiert.
Ich habe gerade den Inhalt von ↑ kopiert.
from math import pi
from math import tanh
from math import sin
from math import asin
from numpy import arctanh
# refer from http://www.trail-note.net/tech/coordinate/
def tile2latlon(x, y, z):
L = 85.05112878
lon = ((x / 2.0**(z+7) )-1) * 180
lat = 180/pi * (asin(tanh(-pi/2**(z+7)*y + arctanh(sin(pi/180*L)))))
return [lat, lon]
def latlon2tile2(lat, lon, z):
L = 85.05112878
x = int((lon/180 + 1) * 2**(z+7))
y = int( (2**(z+7) / pi * ( -arctanh(sin(pi*lat/180)) + arctanh(sin(pi*L/180)) ) ))
return [x,y]
Geben Sie einen bekannten Breiten- und Längengrad ein und überprüfen Sie ihn auf Karten des Nationalen Landforschungsinstituts.
#simbashi
lat = 35.666280
lon = 139.758375
# lat = 30.335927
# lon = 130.504283
pix = 256
# lat/lon to tile
for z in range(15,19):
a,b = latlon2tile2(lat,lon,z)
print [a,b]
print 'http://cyberjapandata.gsi.go.jp/xyz/std/{0}/{1:d}/{2:d}.png'.format(z,a/pix,b/pix)
a,b = tile2latlon(a,b,z)
print [a,b]
Bei der Ausführung wird es so ausgegeben, dass es dem ursprünglichen Lat / Long entspricht, und die Genauigkeit nimmt mit zunehmender Zoomstufe zu. Ich habe den Standort auf der aktuellen Karte bestätigt. (Karte des National Land Research Institute ist bis Zoomstufe 18)
[7450910, 3303678]
http://cyberjapandata.gsi.go.jp/xyz/std/15/29105/12904.png
[35.66629207402928, 139.75836753845215]
[14901820, 6607356]
http://cyberjapandata.gsi.go.jp/xyz/std/16/58210/25809.png
[35.66629207402928, 139.75836753845215]
[29803640, 13214713]
http://cyberjapandata.gsi.go.jp/xyz/std/17/116420/51619.png
[35.66628335763601, 139.75836753845215]
[59607281, 26429426]
http://cyberjapandata.gsi.go.jp/xyz/std/18/232840/103239.png
[35.66628335763601, 139.75837290287018]
――Ich verstehe das Geografiesystem nicht wirklich
Recommended Posts