如何计算跨轨道误差(GPS/核心位置)

Bra*_*rad 5 iphone xcode ios

有谁知道如何确定“跨轨错误”?

对于那些不熟悉的人:您正在沿着一条从“A”点到“B”点的线行驶。在运输过程中,当您偏离那条线时,从您当前位置到该线的距离就是跨航迹误差。

我现在有一个简单的算法,它使用具有三个点的纬度和经度的基本几何图形 - 问题是它没有考虑“大圆”计算(即实际米每度经度因您的纬度,不等于纬度)。

换句话说——如果你知道一个“大圆”公式来确定这个,请告诉我——但这不是一个直笛卡尔几何问题。

Bra*_*rad 2

这是来自已接受答案的链接的文本 - 如果它失效了:

\n\n

这里\xe2\x80\x99是一个新的:我\xe2\x80\x99有时会被问到一个点到大圆路径的距离(有时称为交叉轨迹误差)。

\n\n

公式: dxt = asin( sin(\xce\xb413) \xe2\x8b\x85 sin(\xce\xb813\xe2\x88\x92\xce\xb812) ) \xe2\x8b\x85 R

\n\n

在哪里:

\n\n
    \n
  • \xce\xb413是从起点到第三点的(角度)距离

  • \n
  • \xce\xb813是从起点到第三点的(初始)方位

  • \n
  • \xce\xb812是从起点到终点的(初始)方位角

  • \n
  • R是地球\xe2\x80\x99s半径

  • \n
\n\n

JavaScript:

\n\n
var \xce\xb413 = d13 / R;\nvar dXt = Math.asin(Math.sin(\xce\xb413)*Math.sin(\xce\xb813-\xce\xb812)) * R;\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这里,大圆路径由起点和终点 \xe2\x80\x93 标识,具体取决于您\xe2\x80\x99 所使用的初始数据,您可以使用上面的公式来获取相关距离和轴承。的标志dxt告诉您第三个点位于路径的哪一侧。

\n\n

从起点到第三点路径上最近点的沿轨迹距离为:

\n\n

公式: dat = acos( cos(\xce\xb413) / cos(\xce\xb4xt) ) \xe2\x8b\x85 R

\n\n

在哪里:

\n\n
    \n
  • \xce\xb413是从起点到第三点的(角度)距离
  • \n
  • \xce\xb4xt是(角度)跨轨距离
  • \n
  • R是地球\xe2\x80\x99s半径
  • \n
\n\n

JavaScript:

\n\n
var dAt = Math.acos(Math.cos(\xce\xb413)/Math.cos(dXt/R)) * R; \n
Run Code Online (Sandbox Code Playgroud)\n