我正在尝试使用GPS跟踪用户在我的应用程序中随时间移动的距离。我有基本的想法,所以我存储了以前的位置,当发送新的GPS位置时,我计算它们之间的距离,并将其添加到总距离。到目前为止一切都很好。
这个简单的实现有两个大问题:
这两种情况都使得追踪对于腐败无用,因为我提供的数字现在已接近准确。
但我想这个问题是可以解决的,因为有很多健身追踪器和类似的跟踪距离GPS。我猜他们会在GPS值或类似的东西之间进行某种插值吗?我想这也不是100%准确,但可能足够我的使用。
所以我所追求的基本上是一种算法,我可以放入我的GPS位置,并尽可能好地近似行进的距离。
请注意,我不能假设用户会关注道路,因此我无法使用Google Distance Matrix API或类似功能。
答案 0 :(得分:1)
这是GPS接收器产生的位置数据的常见问题。我使用的典型消费级接收器的位置精度定义为2.5米的CEP。这意味着对于处于“完美”天空视野环境中的固定接收器,随着时间的推移,50%的定位将位于半径为2.5米的圆内。如果你看一下接收器报告的位置,它看起来随意地绕着真实位置漂移,有时会移动距离其真实位置数米。如果您只是整合样本之间移动的距离,那么您将获得非常大的表观距离。对于固定设备。
我已成功用于车辆里程表功能的简单算法如下
for(;;)
{
Stored_Position = Current_Position ;
do
{
Distance_Moved = Distance_Between( Current_Position, Stored_Position ) ;
} while ( Distance_Moved < MOVEMENT_THRESHOLD ) ;
Cumulative_Distance += Distance_Moved ;
}
MOVEMENT_THRESHOLD的值将影响最终结果的准确性。如果该值太小,则由固定接收器执行的一些随机漂移将包括在最终结果中。如果该值太大,则所采用的路径将近似为一系列直线,每条直线与阈值一样长。当接收器的路径偏离该直线段时,接收器行进的额外距离将被遗漏。
与车辆里程表相比,这种方法的准确性非常好。如何与行人一起工作必须进行测试。人们的问题在于它们可以比车辆产生更尖锐的转弯,从而导致直线近似的更大误差。由于建筑物,车辆等引起的天空视野遮挡和信号多路径的长期存在问题,可能导致10米的位置误差。