2012-09-06 31 views
0

我工作的应用程序中,我要计算从起点的总距离到终点。我使用Android SDK的位置管理器,使用位置监听器并使用提供者(GPS和网络提供者),并在每20秒钟跟踪位置并将跟踪位置放入数组列表中。后的时间段计算由Android的轨道位置问题

total distance = dist at point[0,1]+ dist at point[1,2] + ... +dist at point[n-1,n] 

的总距离,其中0,1,2,...,n是数组列表位置值的索引。

几个测试后,没有得到准确的结果。大约是实际里程表值的60-70%。请指导是否有其他替代方案可供使用。 请指导我如何得到更准确的结果。

回答

1

GPS和网络定位都有一定程度的与之相关联的不确定性,因此相比于类似里程表时也不会通常给你一个确切的距离。如果你在户外,而不是在城市峡谷,GPS通常会给你一个比网络位置更好的距离估计值。距离

低估(你看到的),可能是由于你的采样率(每20秒)或丢失GPS信号。我会尝试将采样率增加到每4秒左右一次,并确保您的GPS单元不会丢失修复程序。各种设备的GPS灵敏度可能会有很大差异,因此请尝试使用几种不同的Android设备进行测试。您还可以看看Android应用我公司开发,以帮助在Android设备上测量GPS精度: 距离http://www.gpsbenchmark.com/

高估通常是由GPS噪声引起的,或者位置蹦跳着由于小(有时大)GPS定位错误。卡尔曼滤波器是减少某些噪音影响的好方法。您还可以尝试过滤路径并通过简化线路减少一些细节。 Douglas-Peucker算法的实现可以在MyTracks项目的Apache 2.0下找到: http://code.google.com/p/mytracks/source/browse/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java#78

+0

非常感谢@Barbeau。我感谢你的大力帮助。 – Amit

+0

Barbeau,如上所述,我的方法是否正确(总点距离点[0,1] + dist点[1,2] + ... + dist点[n-1,n]。 。如果有任何其他的方法让我知道请 – Amit

+0

我想这是你的方法是这样做的:对于通过Z,total_distance = DIST(A到B)+ DIST(B至C)一套点A + dist(C to D)... + dist(Y to Z)这对于计算给定一组地理坐标的总距离是正确的,尽管如上所述,它可以基于GPS误差和采样给出低估或高估率使用Location.distanceTo方法的一个例子。 - http://goo.gl/U7vJM - 将是total_distance = A.distanceTo(B)+ B.distanceTo(C)+ C.distanceTo(d)... + Y .distanceTo(Z)。 –