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

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