Eiffel Tower 2.2945° 48.858222° 27374451 582901293 0x1a1b373 0x22be5e2d編碼
nds使用的是WGS84座標系統(the World Geodetic System dating from 1984),就是日常咱們說的經緯度。當咱們說一個具體的位置的時候,就說這個問題位置的經度是多少,緯度是多少,這樣就能夠惟一的定位到一個精確的點。code
nds使用EGM96(the Earth Gravitational Model from 1996)來表示高度信息。EGM96描述的高度信息很好的近似海拔高度,它比WGS84中的高度信息更準確。it
規定經度使用32位int編碼,可表示範圍是[-180,180],緯度使用31位int編碼,可表示範圍是[-90,90]io
例: 艾菲爾鐵塔的計算以下(Eiffel Tower 2.2945° 48.858222°)二進制
lon = 2.2945
lon_to_int32 = pow(2, 31) * 2.2945 / 180
= 2147483648 * 2.2945 / 180
= 27374451.279644444444444444444444
= 27374451 (使用向下取整法floor)
= 0x1a1b373 (十六進制)
= 0001101000011011001101110011 (二進制)vi
lat = 48.858222
lat_to_int32 = pow(2, 30) * 48.858222 / 90
= 1073741824 * 48.858222 / 90
= 582901293.41863253333333333333333
= 582901293 (使用向下取整法floor)
= 0x22be5e2d (十六進制)
= 00100010101111100101111000101101 (二進制)
使用莫頓碼(morton code)進行編碼
x = x31x30...x1x0
y = y30...y1y0
c = x31y30x30...y1x1y0x0 總長度爲63(32+31)位co
x = 0x1a1b373 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1
y = 0x22be5e2d 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1
c = 0x809cea967ad1da7 100000001001110011101010100101100111101011010001110110100111系統
規整爲63位 000100000001001110011101010100101100111101011010001110110100111
故該點在Level10的Tile Number爲 Level10 = c.left(2n+1) = c.left(2*10+1) = c.left(21) = 0 0010 0000 0010 0111 0011 = 0x20273 = 131699 故該點在Level13的Tile Number爲 Level13 = c.left(2n+1) = c.left(2*13+1) = c.left(27) = 000 1000 0000 1001 1100 1110 1010 = 0x809CEA = 8428778