我有一个Android应用程序,它使用GPS进行跟踪。此应用程序在安装在驾驶室中的Android设备中运行,以便我可以跟踪驾驶室。我在应用程序上启用了日志记录。最近我在跟踪驾驶室时观察到一个奇怪的情况。有一次,GPS正在提供一个位置,80秒后,它给出了距离第一个位置几公里的位置。令人惊讶的是,在这两种情况下,准确度<1。 20(米)这是我考虑检查跟踪位置的检查。请查看我从设备收集的日志。
----some logs
26 Dec,05:55:01.645 PM; GPS Fix state = true; NetworkLocation = Fri Dec 26 17:54:02 GMT+05:30 2014 17.805544,83.352301 Accuracy 3139.0; GPS Location = Fri Dec 26 17:54:58 GMT+05:30 2014 17.805017,83.35345 Accuracy 8.0;
----some logs
26 Dec,05:56:34.705 PM; GPS Fix state = true; NetworkLocation = Fri Dec 26 17:55:35 GMT+05:30 2014 17.81825,83.352313 Accuracy 3048.0; GPS Location = Fri Dec 26 17:56:09 GMT+05:30 2014 16.570113,82.055219 Accuracy 14.0;
----some logs
正如您所看到的那样,网络仍然指向初始位置周围的某个位置,因为GPS指向某个位置,该位置远离第一个位置且仍具有精确度14。!
android的Location类的javadoc说 -
* We define accuracy as the radius of 68% confidence. In other
* words, if you draw a circle centered at this location's
* latitude and longitude, and with a radius equal to the accuracy,
* then there is a 68% probability that the true location is inside
* the circle.
这是否意味着,我在第二条曲线中获得的准确度下降到另外32%,可能是错误的。我想知道是否有可靠的方法来决定是否考虑gps位置而不是检查准确性。?
提前致谢
编辑:忘记提及GPS定位在40分钟后回到驾驶室的位置。你可以在这里看到。26 Dec,06:35:21.851 PM; GPS Fix state = true; NetworkLocation = Fri Dec 26 18:35:20 GMT+05:30 2014 17.800334,83.352941 Accuracy 2887.0 GPS Location = Fri Dec 26 18:35:22 GMT+05:30 2014 17.799875,83.351936 Accuracy 14.0;
更新:今天我浏览了运行此应用程序的所有几个设备的日志,我在多个设备中观察到这个错误的GPS位置具有良好的准确性值。所有设备都是相同的,并使用相同网络提供商的SIM卡。
答案 0 :(得分:0)
你的情况很奇怪,这通常不会发生在GPS上。 它可能跳30米,有时50米。 无论是你遇到极其罕见的情况,看看成千上万的设备, 或者您正在使用的GPS芯片中存在错误。
或者很可能您正在使用其他位置信息源,例如Cell-Tower位置,已知其准确度不超过1公里。确保仅使用GPS提供程序。
你的日志输出&#34; NetworkLocation&#34;让我怀疑你只使用GPS。 如果您100%确定该位置是由GPS提供的(它必须具有有效的速度和有效的航线,那么它来自GPS,或者您能够读出哪个提供商提供了该位置(GPS提供商或网络提供商) )然后进一步阅读:
一旦我看到300公里的跳跃,这可能是由GPS卫星缺陷或GPS芯片实施中的错误引起的。
您可以做的是过滤掉只能以不切实际的高车速实现的动作。
在你的情况下它是几公里&#34;让我们假设它是3。 那是80s中的3000m = 37m / s = 135km / h,这是高速公路上车辆的实际速度。 要进行适当的过滤,您需要每秒检查一次位置,并寻找不切实际的跳跃。
除此之外,GPS无法保证。所有准确性都是估计值。 如果估计水平精度为14米,则无法确定距离实际位置是50米还是2米。