2014-02-20 61 views
0

我有一个Android应用程序,我试图使用GPS提供的坐标来计算旅行的距离。我目前正在使用计算地球上两点之间的弧长的方法。使用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)

+0

试着阅读这篇文章,也许会帮助你。 http://stackoverflow.com/questions/3412416/improve-gps-accuracy-android – totonho

回答

1

你问了两个问题:

答案第一:没有没有内置在恶劣的GPS位置过滤,你必须自己做。

2) 过滤依赖于应用需求:无论是仅用于车辆,还是用于行人。

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

+0

因此,例如,走最好的事情要做的是收集点的时间量,并尝试适合功能(多项式?)到数据? – Jaka