【问题标题】:Jumps in location on using fused location api使用融合位置 api 跳转位置
【发布时间】:2016-03-07 13:56:11
【问题描述】:

我正在跟踪骑手的位置(骑自行车的人)并计算他每次骑行的总距离。我只使用了融合位置 API(没有 GPS)。有时我会在位置上跳跃,并且由于这些跳跃而增加了额外的距离,因此导致整体错误的距离。请帮助我找到这些错误的纬度和经度。是否有任何可以在 Android 中轻松实现的好过滤器或任何好的方法?

【问题讨论】:

  • 你做了什么?请至少添加一个 sn-p 代码。

标签: android fusedlocationproviderapi


【解决方案1】:

原始 GPS 数据上的距离测量总是有噪音,因为基础数据通常不准确。这些跳跃是由于位置测量不准确造成的。要实现准确的距离测量,您可能需要过滤数据中的噪声。

您可以探索的一些有用的过滤技术是:

  1. 使用卡尔曼滤波器平滑位置数据 - 请参阅 tutorial

  2. 使用 Google 地图snap-to-roads APIOSRM match service 捕捉道路。

如果您正在寻找能够提供准确位置数据和距离测量的端到端解决方案,您也可以尝试适用于 Android 或 iOS 的 HyperTrack SDK。您可以在their blog 上了解他们如何过滤位置以提高准确性。 (免责声明:我在HyperTrack工作。)

【讨论】:

    【解决方案2】:

    位置不准确。即使有 GPS 也不是。融合位置可以偏离数百米。如果你每隔几分钟就站着不动,你会得到一个真正偏离的读数。有时我从厨房走到浴室,它认为我已经走了四分之一英里。如果您查看它返回的准确性,请记住您有 2/3 的机会在该距离内。您仍然有 33% 的机会不在该范围内。

    你将不得不接受不准确。不过,您可以做一些想法

    1) 忽略所有更新,除非它们至少移动了一些最短距离。添加所有这些少量将很快增加很多不准确性。 2)在接受新位置之前,需要在新位置附近至少进行 2 次更新。

    但是,如果您使用网络位置进行短途移动,您将会遇到困难。

    【讨论】:

    • 我每 30 秒请求一次位置更新,总行驶距离出现大约 1-1.5 公里的误差。
    • 我对此并不感到惊讶。 FusedProvider 将其称为“街区准确性”是有原因的——他们希望它能够进入大约一个城市街区。另一面是,如果你站着不动,它会或多或少随机地在你的一个街区内给你一堆分数。
    • 阅读有关使用卡尔曼滤波器的信息,但我不确定如何在我的 Android 代码中实现这一点。如果有人帮助我实现具有当前纬度、经度、精度、时间和更改的纬度、经度在 locationChanged 上的卡尔曼滤波器,那就太好了。
    【解决方案3】:

    进入设置 -> 位置 -> 模式。 并确保模式设置为仅设备。 这将停止跳跃

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多