我一直试图实现一个功能,以获得正确的高度,基于气压计传感器从安卓银河S5手机。唯一的问题是,我不认为它是准确的。根据我特定位置的http://www.whatismyelevation.com,它显示我的海拔在114米左右。然而,在我的手机上,它显示它是210米基于气压计传感器。不过,我在一幢高楼里,但我不认为它有100米高。
以下是我的简单代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.configure_settings);
context = getApplicationContext();
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensors = mSensorManager.getSensorList(Sensor.TYPE_PRESSURE);
if (sensors.size() > 0)
{
sensor = sensors.get(0);
mSensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
public void onSensorChanged(SensorEvent event)
{
float pressure = event.values[0];
altitude = String.valueOf(SensorManager.getAltitude(
SensorManager.PRESSURE_STANDARD_ATMOSPHERE, pressure));
}谢谢!
发布于 2015-07-21 20:30:39
首先:气压计非常精确,但不准确。如果你把10部Android手机放在一张桌子上,你可以发现设备之间的气压差高达3毫巴。这是一个错误的来源。
第二:不同的组将不同地定义“高度”,所以请确保使用相同的定义。例如,在Location类中,getAltitude被定义为
获得高度,如果可用,以米以上的WGS 84参考椭球。
http://developer.android.com/reference/android/location/Location.html#getAltitude()
第三,天气对气压计读数的影响高达40毫巴。如果你想从气压计中得到一个更准确的高度读数,你将不得不抵消当前天气的影响。大气可以改变局部压力高达每小时1-2毫巴(在极端情况下)。
第四:使用智能手机中的气压计还不可能获得完全准确的高度读数。目前还没有人解决这个问题--例如,仅仅依靠气压计就不足以实现地面探测。
顺便说一句,我是PressureNet的开发者--我从智能手机上收集了超过20亿份压力读数,我每天都会看到这些错误。
最后:如果你想达到“高度”的值,气压计提供给你的读数在使用之前需要有意义的解释。在默认情况下,从每个晴雨表读取的每个值都是“错误的”;根据您的确切需求,您必须做特定的工作才能使它为您工作。
github.com/cbsoftware/pressurenet
发布于 2020-07-11 13:46:10
智能手机式气压传感器的绝对精度很低.也就是说,当你处于静止状态时,读取的值可能不等于你从另一个源读取的值。
然而,它很擅长测量气压的变化.因此,如果你阅读了一个高度的气压,然后迅速移动到另一个高度,你将得到一个相当准确的海拔差异测量(前提是你使用正确的海拔公式,例如。https://physics.stackexchange.com/questions/333475/how-to-calculate-altitude-from-current-temperature-and-pressure)
也就是说,如果你知道你所在地点的绝对高度,你可以为另一个位置计算出一个相当精确的值。
同样重要的是要记住,由于天气的变化,任何位置的气压都是可变的。在多风的环境中,您通常会发现值不太准确,除非对值进行一些时间平均或低通滤波。
当谈到谷歌、全球定位系统或其他来源所提供的高度值时,他们通常会将某个位置的高度指为地球表面的理想化形状。这种形状通常被称为大地水准面(球体形状非常接近我们地球的实际形状)。地球的实际表面,无论是陆地还是海洋,在大多数地方都会偏离理想的大地水准面。对于在上一个冰期被厚厚的冰层覆盖的地区,陆地可能仍然比大地水准面参考值低30-50米。在这里可以找到更多的细节:https://www.esri.com/news/arcuser/0703/geoid1of3.html。
对于正常的测绘目的,高度被引用某种形式的常数。因此,当接近海平面时,LAT (最低天文潮汐)的== 0和当地地图对海拔的参考就会被传统地引用到这个水平。还使用了其他更“现代”的参考资料。谷歌,基于卫星的全球定位系统等不使用这个参考,因此你从他们得到的高度和你计算的高度(或阅读地图)当地一般不匹配。
发布于 2020-05-18 18:17:31
与气象站压力传感器/算法相比,三星S7智能手机上的Android8.1只是一份报告。
Samsung S7 phone=970 millibars
Weather station=1010 millibars (at the same time)这与这两个数值的算术平均值990毫巴相差约+/- 2%。
然而,GPS对高度的误差限制约为3%。在大约5分钟的时间内,消费者级全球定位系统报告说,附近山顶的高度一般在1080英尺到1150英尺之间,孤立的读数比那些低和高。算法的平均值为1115英尺,的上下值约为1115英尺的+/- 3%。国家大地测量图显示,山顶的官方高度为1110英尺,非常接近这两个值的平均值。
https://stackoverflow.com/questions/31541658
复制相似问题