计算谷歌地图瓷砖边界坐标



我做了很多搜索,找到了一些有用的资源,但在计算方面仍然存在问题。

我想计算特定瓦片的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:[最后一个答案包括matlabjava实现]

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)

相关内容

  • 没有找到相关文章

最新更新