我有下面的代码似乎工作正常:
// GPS Reader // Criteria Criteria criteria = new Criteria(); //criteria.setAccuracy(Criteria.ACCURACY_COARSE); // Used when we can't get a GPS Fix criteria.setAccuracy(Criteria.ACCURACY_FINE); // Used when we can get a GPS Fix criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); LocationListener locationListener = new MyLocationListener(); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, locationListener);
然而,当我在谷歌地图上绘制我收集的数据时,GPS坐标在某些情况下非常分散,或者它会沿着我正在行走的路径前进,然后突然跳到一英里外的一个点然后回来。有没有什么办法解决这一问题?我猜是某种准确性检查?
更新:
基本上我的问题看起来像这样 - GPS Jitter
更新 2:
我考虑过不要把这当作赏金,但我想我不妨完全了解这里发生的事情,看看我的方法是否过度杀戮。尽管我的精度为 3m 等,但我仍然遇到同样的问题,即我的坐标中有抖动。现在这可能是可用的卫星等。我不知道,但基本上我想了解如何所有这些其他应用程序,尤其是运动应用程序,是否能够在相同的情况下获得如此流畅的读数。
我在 Quora 上找到了这个是否有任何正在运行的应用程序具有过滤 GPS 数据以获得更准确跟踪的功能?不幸的是,它并没有深入了解我的问题,除非您可以根据需要使用卡尔曼滤波器,但肯定有不太复杂的方法,因为我怀疑大多数应用程序都在实现这一点。
无论如何,如果一位开发人员想分享他们正在做的一些伪代码,我们将不胜感激。我的意思是,如果我坚持使用卡尔曼,我会,但我确信必须有更容易实现的算法,并且希望学习这些以及如何实现它们,这很合适。
上下文:这是一个移动行人应用程序。
相关的 SO 问题我试图从 Create a smooth curve from a series of GPS coordinates Smooth gps data中收集信息:这是一个好的开始,虽然我不确定我需要实现什么伪代码才能正确获得最小二乘拟合正常工作,这样我就有了一个样条 GPS 数据,然后我可以在谷歌地图之类的东西上查看它,以确认我做得正确。我认为问题在于,如果这是我正在处理的一般 X 和 Y 数据,而不是 GEO 坐标,我可以在 matlab 中写一些东西来测试它,然后继续。
更新 3
我收到的混乱 GPS 数据的图像 https://www.dropbox.com/s/ilsf8snao2no65e/gpsdata2.png