我正在研究app,我必须计算从起点到终点的总距离。我使用Android SDK的位置管理器,使用位置监听器并使用提供者(GPS和网络提供商),并且每20秒我跟踪一次位置并将跟踪的位置放入数组列表中。经过一段时间后,计算总距离
total distance = dist at point[0,1]+ dist at point[1,2] + ... +dist at point[n-1,n]
其中0,1,2,...,n
是数组列表位置值的索引。
经过多次测试,得不到准确的结果。实际里程表值的大约60-70%。请指导是否有其他替代方法可供使用。 请指导我如何获得更准确的结果。
答案 0 :(得分:1)
GPS和网络位置都有一定程度的不确定性,因此与里程表相比,它们通常都不会给你一个确切的距离。如果你在户外而不是在城市峡谷,GPS通常会给你一个比网络位置更好的距离估计。
低估距离(您所看到的)可能是由于您的采样率(每20秒)或GPS信号丢失。我会尝试将您的采样率提高到每4秒左右一次,并确保您的GPS装置没有丢失修复。 GPS灵敏度可能因设备而异,因此请尝试使用几种不同的Android设备进行测试。您还可以查看我开发的Android应用,以帮助测量Android设备上的GPS准确度: http://www.gpsbenchmark.com/
高估距离通常是由GPS噪音引起的,或者是由于GPS位置误差较小(有时很大)导致的位置反弹。卡尔曼滤波器是减少某些噪声影响的好方法。您还可以尝试过滤路径并通过线条简化来减少一些细节。在MyTracks项目的Apache 2.0下可以使用Douglas-Peucker算法来实现这一点: http://code.google.com/p/mytracks/source/browse/MyTracks/src/com/google/android/apps/mytracks/util/LocationUtils.java#78