0

我正在开发应用程序,我必须在其中计算从起点到终点的总距离。我使用 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%。请指导是否有其他替代方法可以使用。请指导我如何获得更准确的结果。

4

1 回答 1

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

于 2012-09-07T16:52:55.340 回答