【发布时间】:2012-12-21 13:02:04
【问题描述】:
下面的代码似乎工作正常:
// 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 上找到了这个 Does any running app have a feature of filtering GPS data to get more accurate tracking? 不幸的是,它并没有对我的问题提供太多洞察,除非你可以根据需要使用卡尔曼滤波器,但肯定有不太复杂的方法,因为我怀疑大多数应用程序都实现了这一点。
无论如何,如果有开发人员想分享他们正在用一些伪代码做的事情,我们将不胜感激。我的意思是,如果我坚持使用 Kalman,我会坚持下去,但我确信必须有更容易实现的算法,并且希望学习这些算法以及如何实现它们,这很合适。
上下文:这是一个移动行人应用程序。
我试图从中收集信息的相关 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
【问题讨论】:
-
您的功率要求和准确性似乎相互矛盾。为您提供 ACCURACY_FINE 结果的唯一提供者是 LocationManager.GPS_PROVIDER。你为什么不直接使用它而不是像这样创建某种标准:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, MyLocationListener)?
-
另外,也可能是因为设备不在露天/其他原因导致修复接收延迟。
-
好的,我会回到那个状态——因为我最初有那个设置,但认为标准会做得更好,明天再试一次。关于开放天空的注意事项 - 我在运行测试时处于开放天空区域 - 但是当我运行像 mapmywalk 这样的程序时,没有散射。
-
好的,我实现了,然后我记录了收集到的每个数据点的准确性。他们都回来了不到 10 米,但我仍然遇到和以前一样的问题 - 虽然也使用 GPS 的运动步行应用程序不存在这个问题。
-
你的位置跳了多少米? (分散)
标签: android geolocation gps