使用GPS点云计算距离

时间:2014-02-20 11:52:12

标签: android google-maps gps distance

我有一个Android应用程序,我正在尝试使用GPS提供的坐标来计算行进的距离。我目前正在使用计算地球上两点之间弧度的方法。

public void onLocationChanged(Location location) 
{
Location loc= new Location("");
loc.setLatitude(prev_latitude);
loc.setLongitude(prev_longitude);
distance+=location.distanceTo(loc);
...
}

此外,完成此操作后,prev_ {纬度,经度}将设置为当前的纬度/经度。

然后将获得的弧的距离加到累积距离(代码的最后一行)。 现在,如果GPS接收足够好并且我们有足够的准确度,这种方法可以正常工作。一旦获取的坐标的精度变差,点就开始偏离实际位置,并且所有这个误差都被整合到总距离中。 android或单独的java库中是否有一个函数可以自动过滤错误并使正确的点/轨道适合一组原始GPS测量值,从而获得行进距离的准确估计值? 如果这样的库不存在,怎么会解决这个问题呢? 请参阅下面的图片以供参考。 Android中提供的方法现在正在使用,用蓝线表示。它在后续坐标之间分别计算距离。由于错误,距离不正确。实际路径以红色显示。

GPS points (black dots),wrong distance (blue), true distance (red)

1 个答案:

答案 0 :(得分:1)

你问了两个问题:

对第一个问题的回答:没有针对不良GPS定位的内置过滤,你必须自己做。

2) 过滤取决于应用需求:是仅用于车辆还是用于行人。

根据您的应用需求,您可以开发自己的过滤算法。 对于车辆,一种简单的方法是忽略位置低于某个阈值的所有位置。 (GPS以低速跳跃) 此外,如果未达到最低准确度阈值(您定义的),您可以查看location.gethoriconatlAccuracy并忽略该位置。