我正在制作一款Android应用程序,用于记录(使用GPS)用户骑在他们的越野车上的曲目。在完成一次骑行之后,我希望能够分析这些数据并找到骑行的曲目。
我将轨道定义为两个交叉点之间的行驶区域。交叉点是两个或更多个彼此足够接近的点以被分类为一个点。显然,我需要为此确定某种门槛。
显然,我可以通过强力检查每一点来反对其他每一点,但我认为必须有一种更有效的方法。
有关更好方法的任何想法吗?
谢谢大家。
答案 0 :(得分:1)
Kalman filter经常用于拒绝误差(噪声)点并简化GPS轨迹并估计实际轨迹。 Wiki页面看起来相当复杂,所以找到一些关于轨道过滤的实用文章会很不错。
答案 1 :(得分:0)
实践:
答案 2 :(得分:0)
对于像赛道简化这样的在线流(我称之为“streamplification”)是:每次将GPS点添加到缓冲区时,您都会保留GPS传感器为您提供的小缓冲区(包括高程) )您计算缓冲区中所有点的最大XTD(交叉轨迹距离)到线段,该线段将第一个点与缓冲区的(新添加的)最后一个点合并。如果具有最大XTD的点违反了您的最大容忍XTD误差(25m给了我很好的结果),那么您在该点切割缓冲区,将其注册为要附加到streamplified轨道的选定点,修剪尾部的部分缓冲到那个切点,继续前进。在轨道的末尾,缓冲区的最后一点也被添加/刷新到解决方案中。该算法足够轻巧,可以在AndroidWear智能手表上运行,无论您是慢速还是快速移动,或者在同一个地方闲置很长时间,都能提供最佳输出。唯一的关键是你的赛道形状。您可以使用很多分钟/公里,只要您沿直线移动(走廊内+/-容忍的XTD误差偏差),streamplify算法将只输出2个点:退出形式的最后一个曲线和条目在下一条曲线上。
同时检查此Q& A. Simplification / optimization of GPS track