2016-03-07 27 views
2

我跟踪骑手的位置(自行车骑手)并计算他每次走过的总距离。我只使用融合的位置api(没有GPS)。有些时候我在跳跃的位置,并由于这些跳跃额外的距离被添加,从而导致整体错误的距离。请帮助我找到这些错误的纬度和经度。有什么好的过滤器可以很容易地在Android中实现,或者有什么好的方法可以实现吗?在使用融合位置api的位置跳转

+0

你做了什么?请至少添加一段代码。 –

回答

0

位置不确切。即使使用GPS,它也不是。熔融的位置可能会偏离数百米。如果你每隔几分钟就会站立一次,你会得到一个真正关闭的阅读。有时我从厨房走到浴室,它认为我走了四分之一英里。如果你看看它返回的准确性,记住你在这个距离内有2/3的机会。在这个半径范围内你仍然有33%的可能性。

你将不得不接受不准确。有几个想法,你可以做,虽然

1)忽略所有更新,除非他们旅行至少一些最小距离。加入所有这些小数量会快速增加很多不准确性。 2)在接受新位置之前,需要在新位置附近至少进行2次更新。

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

+0

我在每30秒后请求位置更新,并在总行程中得到大约1-1.5公里的误差。 –

+0

我对此并不感到惊讶。 FusedProvider称之为“块精度”是有原因的 - 他们期望它能在大约一个城市街区范围内。另一方面,如果你站在一个地方,它会给你一堆或多或少的随机点。 –

+0

阅读有关使用卡尔曼滤波器相同,但我不知道如何在我的Android代码中实现这一点。如果有人帮助我用当前的纬度,经度,精度,时间来实现卡尔曼滤波器,并且在locationChanged上改变纬度和经度,那将会很棒。 –

0

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

1

对原始GPS数据的距离测量始终是嘈杂的,因为底层数据通常不准确。这些跳跃是由于不准确的位置测量。要实现精确的距离测量,您可能需要过滤数据中的噪音。

,你可以探索

一些有用的过滤技术主要有:

  1. 利用卡尔曼滤波器平滑位置数据 - 见tutorial

  2. 捕捉到的道路与谷歌地图snap-to-roads API,或OSRM match service

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

相关问题