【问题标题】:Android Track Location IssueAndroid 跟踪位置问题
【发布时间】:2013-01-31 23:29:52
【问题描述】:

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

【问题讨论】:

    标签: android gps location


    【解决方案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

    【讨论】:

    • 非常感谢@Barbeau。感谢您的大力帮助。
    • Barbeau,如上所述,我的方法是否正确。(总距离 = dist at point[0,1]+ dist at point[1,2] + ... +dist at point[ n-1,n]。如果有其他方法,请告诉我。
    • 我认为这就是你的方法正在做的事情:对于一组点 A 到 Z,total_distance = dist(A to B) + dist(B to C) + dist(C to D )... + dist(Y 到 Z)。这对于计算给定一组地理坐标的总距离是正确的,尽管如上所述,它可能会根据 GPS 误差和采样率给出低估或高估。使用 Location.distanceTo 方法的示例 - goo.gl/U7vJM - 将是 total_distance = A.distanceTo(B) + B.distanceTo(C) + C.distanceTo(D)... + Y.distanceTo(Z)。跨度>
    • 谢谢巴博。我总是很感激你的帮助:)
    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2011-04-05
    相关资源
    最近更新 更多