从GPS坐标计算平均速度的最佳实践

时间:2010-05-09 00:27:41

标签: android algorithm math gps

我这里有一个可以给我GPS坐标的设备。我可以定义的时间间隔。我想用它来计算驾驶或乘车旅行时的平均速度。实际上我使用了一个正统公式来计算两点之间的距离,然后将它除以给定的时间间隔。通过实施,我遵循this term。不幸的是,我只能找到一个德语链接,但我认为该公式应该可以用任何语言理解;)

不幸的是,使用这个公式和1秒的时间间隔给出了非常不准确的结果。步行的速度在1公里/小时到20公里/小时之间。

所以我想知道是否有关于如何在两个GPS坐标之间实现距离计算的一般参考(我在SO上发现了类似的东西)和特别是,这是更新GPS坐标的最佳时间间隔?

3 个答案:

答案 0 :(得分:23)

我假设您通过以恒定速度行走(我认为~5 kph是正常行走速度)来测试这一点,同时每秒测量一次GPS位置。

您在瞬时速度(每个测量点之间的距离除以1秒)中看到的变化可能是由于测量的GPS位置的随机变化,或者您没有进行测量正好< / em>相隔一秒(或者它可能都是这两件事)。

我将假设你的测量值正好相隔一秒钟。手持GPS设备很多不如广告准确。虽然它经常声称设备精确到真实位置的10英尺以内,但事实并非如此。

测量和报告GPS设备准确性的最佳方法是将其留在可以看到卫星并且不会下雨的地方,并记录几天的数据。然后,您可以使用谷歌地图绘制积分 - 我在我的房子周围和办公室周围完成了这项工作,这是一种让您感觉规模的好方法。

显然,如果设备完全准确,您可以在一个位置看到所有测量点。或者,如果10英尺精度的事情是真的,你会在20英尺直径的圆圈内看到一个小集群中的所有点。

你所看到的(我曾经测试的每个支持GPS的设备)都是在几秒钟内发生的相对较小的位置散射(大约几十英尺)的组合,以及平均位置的长期“随机游走”,可能在一两天内移动200或300英尺。例如,在您自己的房子上绘制时,它可能看起来像您的PDA徘徊到邻居的房子,然后穿过街道,然后沿着街道走两个房子,回到你身边等等,同时在这里5到10英尺左右抖动或者喜欢喝太多咖啡。

GPS 可以比这更准确。测量员使用具有更强大接收器组的设备(因此他们可以更准确地读取卫星信号),并且他们将它们一次放置几天以平均连续测量。手持设备具有廉价的接收器芯片和廉价的天线,无论如何都必须处理各种信号干扰。

您最好的选择是运行平均值来计算您的瞬时速度。不是将当前点和前一点之间的距离除以1秒,而是取点之间的最后5个距离并除以5秒(或您使用的任何秒数)。重要的是不要仅仅取得当前点和5秒前的点之间的差异,并将该距离除以5,因为这会错过任何非线性运动。

更新:我在评论中注意到您使用的是Android设备。你知道它是否有内置的GPS接收器吗?许多(大多数?)Android设备没有,这意味着他们的GPS不是GPS的卫星三角测量版,而是猜测我在哪里 - 基于信号的来自-cell-tower版本。这是很多在位置上不太准确,因为我相信你可以从我描述的狡猾中辨别出来。 :)

答案 1 :(得分:11)

GPS系统可以直接产生瞬时速度,无需插值位置。我在某处读到速度读数实际上比位置读数更准确。您使用的是哪种设备/系统/操作系统?

在Android上,尝试android.location.Location.getSpeed()实施中的hasSpeed()方法(以及LocationListener)。

答案 2 :(得分:6)

在Google上搜索GPS速度精确度,您会发现报告表明,计算出的位置与时间之间的速度比仅使用GPS接收器的速度参数差十倍。速度参数不取决于位置精度,而是根据卫星信号的多普勒(速度/频率差)计算出来。

祝你好运