如何在Android中衡量位置准确性?


95

有谁知道getAccuracy()返回的精度测量值的正确解释?例如,它们的计算公式为:

  • 圆误差概率(如果我理解正确,则意味着50%置信度圆的半径)?

  • 95%置信区间的半径?

  • 还有什么吗

此外,实际使用的计算是什么,我们可以依靠多少?它是否取决于位置估计的来源(GPS与网络)?

非常感谢您可以给我的任何建议。


4
问题不是位置如何获得,而是位置类中getAccuracy返回值的实际定义。
Janusz 2010年

Answers:


67

要回答问题的一部分,该数字the radius of 68% confidence,意味着真实位置有68%的机会位于以米为单位的被测点的半径内。假设误差是正态分布的(正如文档所说,不一定是真的),这意味着这是一个标准偏差。例如,如果Location.getAccuracy返回10,则设备的真实位置在所报告坐标的10米以内有68%的机会。

http://developer.android.com/reference/android/location/Location.html#getAccuracy()


谢谢,卡尔。我看到他们现在已经更新了文档,这非常有帮助。尽管我认为dscheffy的观点也很重要,但这正是我一直在寻找的东西。
约翰·RB·帕默

@paracycle还指出,准确性是由提供程序报告的,提供程序最终可以决定是否愿意对其进行处理。例如,使用DDMS将提供0.0的精度值,因为您要输入精确的坐标。
karl 2013年

11
@AidenStrydom,不。如果精度返回1000,则意味着真实位置有68%的机会在所提供位置的1000米范围内。
karl

精度受天气影响吗?
朱里·蒂希米罗

@karl您是说32%的距离超过10米吗?(例如11或12米或以上的米)。
大卫

44

当您的电池寿命有限,并且建筑物和建筑物很多的地方等地区都没有GPS信号时,位置定位是一项棘手的任务。但是Android使它变得更加容易。当您请求位置时,只需指定所需的精度即可。

如果您指定accuracy一个示例*100 meters*,则Android会尝试获取该位置,并且如果可以获取70米精度的位置,它将返回给您,但是如果Android可以获取精度高于100%的位置仪表,您的应用程序将等待,直到有如此精确的位置时才会收到任何信息。

通常,Android首先会获取Cell ID,然后将其发送到Google服务器,后者会映射此类Cell ID,并且服务器会返回经纬度,其精度在示例1000米内较低。到这个时候,Android还将尝试查看该区域中的所有WiFi网络,并将有关它们的信息也发送到Google服务器,并且如果可能的话,Google服务器将以例如800米的更高精度返回一个新位置。

此时,GPS将打开。GPS设备从冷启动起至少需要30秒钟才能获得修复,因此,如果可以修复,它将返回纬度和经度,但又具有精度,这对于100米的示例来说可能是最高的。GPS工作的时间越长,您获得的精度就越高。

重要说明:前两种方法需要Internet连接。如果没有数据连接,则必须等待GPS,但是如果设备在建筑物中,则可能会找不到位置。


14
这并没有真正回答“ 100m精度”是什么意思的问题。
Tomas

2
@vendor,请说明您从中获得此信息的参考。您的回答帮助我了解了它的工作原理,谢谢。
一个公平的参与者

@一个公平的参与者有些信息在developer.android.com中,我已经对Android中基于位置的服务进行了一些测试。
供应商

9
哪种API可让您指定100米的精度?我看到了ACCURACY_COARSE,ACCURACY_FINE,ACCURACY_HIGH,ACCURACY_LOW,ACCURACY_MEDIUM的条件,但看不到100米。
2012年

这个答案基于什么?
AlikElzin-kilaka '16

18

关于getAccuracy的文档说,它返回以米为单位的精度。我猜想这意味着如果您获得60的返回值,那么您将位于所提供位置周围半径60米的圆中。


1
如果我看着我的谷歌地图和我当前的位置,那是对的...在大多数情况下。也有发生,我的手机显示我的位置离我的真实位置约2到3公里...我也对这个问题感兴趣
poeschlorn 2010年

1
谢谢。我同意getAccuracy返回的值以米为单位,并且它必须是圆的半径(或者在位置估计中还给出高度时,可能是球体的半径)。但是也应该有一个与之相关的概率,而且奇怪的是,文档没有说明该概率是什么或如何得出。我在网上看到一个帖子,有人暗示这可能是CEP,但这似乎只是个猜测,所以我真的很想找到一种方法来确认这是95%的置信度还是其他。
John RB Palmer 2010年


12

据我一眼就可以看到Android源代码,这取决于设备的硬件以及它选择返回的值。

GpsLocationProvider.java文件有一个reportLocation方法,该方法被本机代码调用,并以精度作为值传递。因此,似乎至少没有在框架中进行任何计算。

该QCOM(我认为这是高通)GPS混帐回购协议是路过hor_unc_circular,这似乎暗示,至少,实现使用CER的准确性参数。


4

如果如文档中所引用的那样是准确的,则用户的实际位置在QUOTED_LOCATION +/-精度内。因此,精度定义了您可以期望用户达到的半径。文档没有说的是如何确定用户是否在半径范围内-标准为95%,所以我猜是这样。


1
如问题所示,我对这种信心更感兴趣。可能是众多衡量指标
塞缪尔

1

我知道您是在要求概率方面的肯定答案,但我认为这里有两件事要考虑。

首先,由提供商决定要在此值中添加什么,因此取决于提供商,这可能是一个错误的猜测。

其次,将其视为潜在的舍入问题可能会有所帮助。如果我试图根据多个输入来计算您的位置,而其中一些输入仅对一定数量的有效数字可用,那么就只能用给定数量的有效数字来计算位置。

这样想吧-什么是“约”加“约”一百。大概是100,因为100的精度可能小于1的数量级。如果我突然说答案大约是101,那么我可能最终暗示了一个不存在的精度水平。但是,如果我实际指定了精度,那么我可以说它的100正负10加1正负.1是101正负10。我知道这通常是指类似95%的置信度(标准错误),但同样,所有人都假设提供者了解统计信息而不仅仅是猜测。


谢谢-这非常有帮助。在第一个问题上,我使用位置跟踪的方法既要收集准确性估算值,又要通过计算连续点之间的距离和时间,然后丢弃那些需要不切实际的速度(即使有时情况下,据报道它们具有精确的准确性)。如果您还有其他建议,我很想听听他们的建议。
约翰·RB·帕默
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.