爲了讓每個人都開始使用,以下是樸素的算法,不使用任何速度或方位信息。
圓弧長度s
可以通過標準公式從我們開始的線段的兩個(長,緯度)對(開始和結束路標)計算出來。
假設我們(因此使用用於位置0 phi[0]
和phi[1]
和1這裏陣列)弧度轉換的值對成標準球面座標phi
和theta
,電弧長度剛好:
from math import sin, cos, arccos, sqrt
s = arccos(
sin(phi[0]) * sin(phi[1]) * cos(theta[0] - theta[1]) +
cos(phi[0]) * cos(phi[1])
)
然而,由於我們已經有了一個巨大的可怕的功能,我們需要用鏈式法則來制定出第一順序錯誤,我們得到以下的怪物爲delta_s
:
delta_s = (1.0/abs(sin(s))) * (
delta_phi[0] * abs(
sin(phi[0]) * cos(phi[1]) -
cos(phi[0]) * sin(phi[1]) * cos(theta[0] - theta[1])
) +
delta_phi[1] * abs(
sin(phi[1]) * cos(phi[0]) -
cos(phi[1]) * sin(phi[0]) * cos(theta[0] - theta[1])
) +
(delta_theta[0] + delta_theta[1]) * abs(
sin(phi[0]) * sin(phi[1]) * sin(theta[0] - theta[1])
)
)
我們爲了在每對連續的點執行此操作,總結了s
S,加在正交誤差爲正常:
accumulator = 0.0
for error in errors:
accumulator += error * error
journey_error = sqrt(accumulator)
,因此,我們知道我們的垃圾距離估計的不確定性。 (我們甚至可以保留accumulator
以加速計算,如果我們在結尾添加幾個點 - 就像我們實際使用實時數據一樣)。
但是,這會給我們帶來巨大的錯誤,並且只是一個非常模糊的想法,我們已經走了多遠。這不可能是GPS如何實際設備的估計距離,因爲這將永遠是不夠準確的,除非它有驚人的信號,所有的時間:
我們需要的是一些更細緻的路徑近似,只彎曲顯示的不準確的點類型的路徑不在位置,而不是完全分散它,並大量增加距離估計—在提問我希望找出所有現有的實現(可能)如何做!