如何计算交叉跟踪误差(GPS/核心位置)

Posted

技术标签:

【中文标题】如何计算交叉跟踪误差(GPS/核心位置)【英文标题】:How to calculate Cross-Track error (GPS/Core Location) 【发布时间】:2010-10-22 13:46:57 【问题描述】:

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

对于那些不熟悉的人:您正在沿着从“A”点到“B”点的直线行驶。在运输途中,当您偏离该线时,您当前位置到该线的距离就是交叉轨道误差。

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

换句话说 - 如果您知道用于确定这一点的“大圆”公式,请告诉我 - 但它不是直角坐标几何问题。

【问题讨论】:

“大圆”因素在通常的计算中真的很重要吗?我不熟悉它引起的失真量,但如果你的点之间的距离不是很大,那么失真一定很小。只是我的 2cts。 计算机制造得非常精确。 en.wikipedia.org/wiki/Overengineering 有一个公式是正确的......为什么要解决?这是一个公式,它已经制定好了。这是 20 分钟的努力。 @MSalters 如果每个人都认为 10 米没有什么危害,那么您很快就会以 100 米的复合误差告终。 【参考方案1】:

布拉德,

我不确定您使用的是哪种椭球模型,因为您没有说。如果您在当前计算中没有使用椭球模型,您可能会发现这很有帮助:

http://www.movable-type.co.uk/scripts/latlong-vincenty.html

Vincenty 算法比 Haversine 算法更准确。

一旦您获得了 A-B、A-C 和 B-C 的准确距离,就可以直接确定从 C 到 A-B 线的距离。类似于从 A-B 上的点到 C 的距离的二分搜索,寻找最短的值。

詹姆斯

【讨论】:

其实这个网站也有完整的xtk计算代码。在movable-type.co.uk/scripts/latlong.html寻找LatLon.prototype.crossTrackDistanceTo【参考方案2】:

这是从链接到已接受答案的文本 - 如果它死了:

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

公式:dxt = asin( sin(δ13) ⋅ sin(θ13−θ12) ) ⋅ R

地点:

δ13 是从起点到第三点的(角度)距离

θ13 是(初始)从起点到第三点的方位

θ12 是(初始)从起点到终点的方位

R是地球的半径

javascript

var δ13 = d13 / R;
var dXt = Math.asin(Math.sin(δ13)*Math.sin(θ13-θ12)) * R;

在这里,大圆路径由起点和终点标识 - 根据您使用的初始数据,您可以使用上面的公式来获得相关的距离和方位。 dxt 的符号告诉您第三个点在路径的哪一侧。

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

公式:dat = acos( cos(δ13) / cos(δxt) ) ⋅ R

地点:

δ13 是从起点到第三点的(角度)距离 δxt 是(角度)跨轨道距离 R是地球的半径

JavaScript:

var dAt = Math.acos(Math.cos(δ13)/Math.cos(dXt/R)) * R; 

【讨论】:

【参考方案3】:

如果处理纬度和经度,您正在寻找的论坛是“Haversine”公式。它考虑了地球表面的曲率。

http://en.wikipedia.org/wiki/Haversine_formula

祝你好运。

【讨论】:

感谢您的提示 - 但问题不仅仅是从点到点的距离 - 而是从您当前的位置到 A-B 线上的切点...【参考方案4】:

CLLocation API 提供

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

其中使用了一个公式(它没有指定是Haversine还是 Vincenty 或其他)考虑了地球的曲率。这将返回 2 个 CLLocations 之间的距离(以米为单位),但不考虑任何高度差异。

【讨论】:

我已经知道这一点 - 但你的帖子让我重新思考。不过,问题在于它并不像确定从一个点到下一个点的距离那么简单——而是从你当前的位置到 A-B 线的切线交点——我仍然需要弄清楚 那个 点是。

以上是关于如何计算交叉跟踪误差(GPS/核心位置)的主要内容,如果未能解决你的问题,请参考以下文章

使用 cross_val_score 通过交叉验证计算均方误差的函数

损失函数——均方误差和交叉熵

寻找模型最优参数多模型交叉验证可视化指标计算多模型对比可视化(系数图误差图混淆矩阵校正曲线ROC曲线AUCAccuracy特异度灵敏度PPVNPV)

交叉验证,K折交叉验证的偏差和方差分析

如何在使用交叉验证训练 xgboost 模型时跟踪进度?

交叉熵误差函数