【发布时间】:2014-06-28 04:23:56
【问题描述】:
计算气压高度需要哪些数据?我如何得到它们然后计算高度?
与 GPS 高度相比,气压的准确度如何?我尝试了 GPS,但在网上搜索了几个小时后,我找不到合适的大地水准面库。
如果我有任何概念,请纠正我。
【问题讨论】:
标签: java android geolocation geo altitude
计算气压高度需要哪些数据?我如何得到它们然后计算高度?
与 GPS 高度相比,气压的准确度如何?我尝试了 GPS,但在网上搜索了几个小时后,我找不到合适的大地水准面库。
如果我有任何概念,请纠正我。
【问题讨论】:
标签: java android geolocation geo altitude
您需要使用pressure sensor 来测量压力,然后使用SensorManager.getAltitude(float, float) 调用将测量压力与参考海平面压力一起转换以获得海拔高度。
棘手的一点是使用什么作为参考压力。这会随着天气的变化而变化,并且会随着时间的推移而漂移。通常,您会进行某种校准以设置此值并可能对其进行更新。这取决于您的用例,什么是正确的解决方案。
如果正确校准的基于压力的高度比基于 gps 的高度要准确得多,特别是如果您希望对高度差异而不是绝对高度感兴趣。通过对原始压力传感器值进行一些过滤,您可以轻松地检测到您将手机保持在面部水平或头顶上方手臂长度,您希望使用 gps 进行操作。
【讨论】:
参数是:GPS 高度(最好使用从测量数组计算的平均值)和气压。方法返回海平面的压力(来自SensorManager.getAltitude(float p0, float p) 的反向公式)。
public static float getSealevelPressure (float alt, float p)
{
float p0 = (float) (p / Math.pow(1 - (alt/44330.0f), 5.255f));
return p0;
}
我使用默认值:SensorManager.PRESSURE_STANDARD_ATMOSPHERE 直到 GPS 收集 10 次锁定。之后调用上述方法。
【讨论】: