快速高度室内不准确

问题描述 投票:1回答:1

我试图收集用户在他们所在的建筑物上下移动时的高度。我使用guard let lastLocation = locations.last else {return} let altitude = lastLocation.altitude通过CoreLocation收集高度,但海拔高度似乎非常不准确。有人知道如何更准确地收集这些信息吗?

swift core-location
1个回答
1
投票

GPS在建筑物内不是很准确,特别是钢框架建筑(这在商业建筑中很常见)。即使它的准确性很好,"good" GPS accuracy for a cell phone is expected to be about 5m,或超过楼层之间的常见距离。 iPhone使用各种其他技术,如WiFi定位,以改善这一点。我自己的开发经验是,你通常可以达到3米的准确度。

但那些是横向的。由于角度变化很小,因此海拔高度往往不那么准确。如果你告诉我你的测量距离垂直10米(约3层),那将会让我感到惊讶。听起来你想要增量(高度变化),但即使这在建筑物中也很困难。

WiFi定位是这个故事的重要组成部分。谷歌和苹果(以及其他公司)在GPS信息和WiFi信息之间进行了大量关联。当用户使用他们的地图产品时,他们会了解许多WiFi接入点。它们将来自接入点的信息(例如RSSI信号强度)与来自数百万部电话的GPS信息相关联,并使用它来计算接入点所在的位置,并使用它来创建更好的位置信息,尤其是内部信息。 (请记住,GPS卫星距离大约2万公里,你已经用一个巨大的金属盒包裹着自己。他们正在尽力而为。)确保整个地点都有稳定的WiFi接入点(以及各种各样的地板)应该随着时间的推移帮助系统学习你的建筑。遗憾的是,这不是一个非常可靠的解决方案。

这个非常长的答案的简短答案是,您改进位置信息的方式是获取大量读数并对其求平均值,通过惯性(加速度)信息来补偿运动。操作系统已经执行了此操作,但您可以保持平均更多数据点(位置和速度),以尝试获得更高的准确性。

当然,使用尽可能高的位置精度。 kCLLocationAccuracyBest通常是最好的,你可以得到没有插入(它当然是一个耗电,所以你不能一直运行)。如果你有外部电源,你可以使用kCLLocationAccuracyBestForNavigation

否则,你只需要平均很多测量值来决定你何时认为你真的改变了地板。

© www.soinside.com 2019 - 2024. All rights reserved.