我想使用此處描述的解決方案計算兩個地理點(由緯度和經(jīng)度對定義)之間的距離。盡管我理解一般概念,但首先將所有球面(緯度/經(jīng)度)坐標(biāo)預(yù)轉(zhuǎn)換為 3D 單位長度笛卡爾坐標(biāo)的部分對我來說是有問題的。有人可以解釋我們需要編寫的算法來實現(xiàn)上述目標(biāo)嗎?Java 將是完美的,但偽代碼也可以。更新:我對Haversine 方法不感興趣。
1 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗 獲得超3個贊
讓我們從轉(zhuǎn)換到球坐標(biāo)開始。觀察緯度/經(jīng)度幾乎與球坐標(biāo)中的角度相同。唯一的區(qū)別是與phi
緯度不同,不是從北極開始,而是從赤道開始。
所以,如果你的緯度等于+90(90°N)對應(yīng)的phi角度是0°,而當(dāng)緯度等于-90(90°S)對應(yīng)的phi角度是180°。
phi = -latitude + 90°
theta = longitude
rho = 1
現(xiàn)在,您可以轉(zhuǎn)到笛卡爾:
但在你的情況下rho = 1,所以
x = sin(theta)*cos(phi);
y = sin(theta)*sin(phi);
z = cos(theta);
其中phi和theta定義如上。
添加回答
舉報
0/150
提交
取消