我做了很多搜索,找到了一些有用的资源,但在计算方面仍然存在问题。
我想计算特定瓦片的NE和SW坐标。
这是我的方式:
Zoom = 11
x = 1188
y = 767
number of tile = 2 ^ 11 (equals 2048)
angle1 = 360 / 2048
longitude = (1188 * angle1) - 180
它工作正常。
但纬度部分不是:
angle2 = 170.1022575596 / (2048/2)
latitude = ((2048 / 2) - 767) * angle2
提前感谢
您正在寻找的解决方案是:
z = 11
x = 1188
y = 767
pi = 3.14159
alon1 = (x /2^z)*360.0 - 180.0
alon2 = ((x+1) /2^z)*360.0 - 180.0
an = pi-2*pi*y/2^z
alat1 = 180.0/pi*atan(0.5*(exp(an)-exp(-an)))
an = pi-2*pi*(y+1)/2^z
alat2 = 180.0/pi*atan(0.5*(exp(an)-exp(-an)))
然后得到NW(alon1,alat1)&该特定瓷砖的SE(alon2,alat2)坐标。
这里我想分享一个python版本的答案。
PS:[最后一个答案包括matlab和java实现]
from math import atan, exp
z = 18.
x = 223576.
y = 101583.
pi = 3.1415926
alon1 = (x /pow(2.,z))*360.0 - 180.0
alon2 = ((x+1) /pow(2.,z))*360.0 - 180.0
an = pi-2.*pi*y/pow(2.,z)
alat1 = 180.0/pi*atan(0.5*(exp(an)-exp(-an)))
an = pi-2.*pi*(y+1)/pow(2.,z)
alat2 = 180.0/pi*atan(0.5*(exp(an)-exp(-an)))
print(alon1,alat1,alon2,alat2)