代码之家  ›  专栏  ›  技术社区  ›  John R.B. Palmer

如何在Android中测量位置精度?

  •  88
  • John R.B. Palmer  · 技术社区  · 15 年前

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

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

    • 95%置信圆半径?

    • 还有别的吗?

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

    非常感谢你给我的任何建议。

    6 回复  |  直到 9 年前
        1
  •  61
  •   dramzy    9 年前

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

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

        2
  •  40
  •   vendor    12 年前

    当你的电池寿命有限,在建筑物和有许多大建筑物等的区域没有GPS信号时,定位是一个棘手的任务,但是Android使定位变得容易得多。当您请求一个位置时,您只需指定您需要的精度。

    如果指定要 accuracy 举个例子 *100 meters* ,android将尝试获取位置,如果它可以获得精度为70米的位置,它将返回给您,但如果android可以获得精度高于100米的位置,您的应用程序将等待并不会收到任何东西,直到有一个这样的精度的位置。

    通常情况下,Android会首先获取手机ID,然后将其发送到谷歌服务器,谷歌服务器会映射这些手机ID,而服务器会返回纬度和经度,精度很低,例如1000米。此时,安卓也将尝试查看该区域内的所有WiFi网络,安卓也将向谷歌服务器发送有关这些网络的信息,如果可能,谷歌服务器将返回一个新的位置,以更高的精度为例,例如800米。

    此时GPS将开启。GPS设备需要从冷启动至少30秒才能获得定位,因此如果能够获得定位,它将返回纬度和经度,但再次具有准确度,这将是例如100米的最高可能值。GPS工作的时间越长,您将获得更好的精度。

    重要提示: 前两种方法需要Internet连接。如果没有数据连接,您将不得不等待GPS,但如果设备在建筑物中,您可能没有位置。

        3
  •  17
  •   Janusz Daniel Rindt    15 年前

    有关的文档 getAccuracy 它返回以米为单位的精度。 我想这意味着,如果你得到一个60的返回值,你就在一个半径为60米的圆中的某个地方。

        4
  •  10
  •   paracycle    14 年前

    从Android源代码的快速浏览中可以看出,这取决于设备的硬件以及它选择返回的值。

    这个 GpsLocationProvider.java 文件有 reportLocation method 它由本机代码调用,并以值的形式传递精度。因此,框架中似乎至少没有进行任何计算。

    QCOM(我认为是高通公司)GPS Git回购 is passing 这个 hor_unc_circular 参数的准确性,这似乎意味着,至少,该实现正在使用CER。

        5
  •  4
  •   Joseph Earl    14 年前

    如果在文档中引用它,它是一个准确性,那么用户的实际位置在引用的位置+/-准确性内。所以精度定义了一个半径,你可以期望用户在那里。医生们没有说的是,你有多确定用户在半径范围内——标准是95%,所以我猜是这样的。

        6
  •  1
  •   dscheffy    13 年前

    我知道你在要求一个明确的概率回答,但我认为这里有两件事要考虑。首先,由提供者来决定他们要在这个值中放入什么,所以根据提供者的不同,这可能只是一个错误的猜测。其次,这可能有助于将其视为一个潜在的舍入问题。如果我试图根据输入的数量来计算您的位置,并且其中一些输入只能用于特定数量的有效数字,那么只能使用给定数量的有效数字来计算位置。这样想——一加一百是什么意思?大概一百个,因为一百个的精度可能小于1的量级。如果我突然说答案大约是101,那么我最终可能暗示出一个不存在的精确水平。但是,如果我真的指定了准确度,那么我可以说它是100正负10正负1正负。1是101正负10。我知道这通常指的是95%的置信水平(标准错误),但同样的,所有这些都假定提供者理解统计数据,而不仅仅是猜测。

    推荐文章