【发布时间】:2019-06-06 16:57:15
【问题描述】:
我无法弄清楚horizontalAccuracy 在 Android 上的含义。文档说如下:
我们将水平精度定义为 68% 置信度的半径。换句话说,如果你以这个位置的经纬度为中心画一个圆,半径等于精度,那么真实位置在圆内的概率为 68%。
听起来好像他们在暗示概率分布在半径上是高斯分布(从现在起称为 r),因此 68% 的数据在均值的 1 个标准差以内。问题是,这是不可能的,因为:
r 只能是正数
应该是 P(r=0)=0 的情况,因为 r=0 处的区域非常小,因此存在的概率也很小
听起来分布是一个二维高斯分布,也就是说是一个像exp(-(x^2 + y^2) / sigma^2)这样的函数。但是这个函数在半径 r 中变成了Rayleigh distribution,而不是高斯函数。
因此,我看到了 4 种不同的可能性:
-
1234563
准确度阈值是瑞利分布包含 68% 数据的点,因此它不是标准偏差,因为此分布不是高斯分布 - 这将同意与 Android 开发人员所说的一样,但这似乎是一种非常奇怪和任意的准确度衡量标准,因此对我来说似乎不太可能
准确度阈值是瑞利分布的标准差,因此不包含 68% 的数据 - 这可能是有道理的,因为标准差是准确度的常用度量,但它不同意 Android 开发人员所说的,因为它不包含 68% 的数据。这似乎有可能,但我假设 Google 员工犯了一些非常基本的错误,然后多年来完全没有注意到 - 这似乎不太可能
准确率阈值其实就是x,y中二维高斯的标准差(即方程中的sigma exp( -(x^2 + y^2) / sigma^2)),因此在 x,y 中确实包含 68% 的点,但在 r 中不包含。在这种情况下,Android 开发人员会错误地假设 r 中的标准差与 x,y 中的标准差相同——再一次,这可能是有道理的,但前提是我们假设整个 Google 团队都在犯相当基本的数学错误,然后多年来一直被社区忽视。同样,我有点不愿意假设这一点。
我花了一段时间浏览文档和网络,但收效甚微。 我已经看到了不同人提供的选项 1-4 中的每一个,但我发现所有这些选项都令人难以置信,并且看不出有任何理由选择其中一个。
有什么想法可能有意义吗?这四个选项的任何潜在替代方案?我可以查看任何资源吗?关于与 Google 讨论此问题的任何建议?我从其他程序员那里听说,接触到开发团队真的很困难
【问题讨论】:
-
“我可以浏览任何资源吗?” -- 搜索与 GPS 接收器一起实际工作的核心操作系统代码的源代码,看看您是否找到任何有用的信息。 “关于与谷歌讨论这件事有什么建议吗?” -- 参加 Google I|O 并向高天祈祷,你会偶然发现可以引导你走向正确方向的人。如果可以用一只手来数出能回答您问题的 Google 工程师的数量,我不会感到惊讶。
-
您确实了解您正在查看 Google/Android 框架 API 的准确性定义,这对于具有
ACCESS_COARSE_LOCATION权限的 WiFi 或基于蜂窝塔的位置也是有效的。此后,Google 已从 Android 框架 Location/NetworkProvider 转向他们自己的 Google Play 服务 API,称为 FusedLocation。
标签: java android gps location horizontal-accuracy