mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-08 12:45:35 +08:00
[GFS] Use Pressure at MSL instead of surface
Pressure at surface level was the wrong value. All barometers and altimeters use pressure reduced to mean sea level. Reading that value from GFS instead returns much more reasonable values. ref T537
This commit is contained in:
committed by
Mat Sutcliffe
parent
d50811c941
commit
9d1299741e
@@ -246,7 +246,7 @@ namespace BlackMisc
|
||||
simconnectMetar += QLatin1String(" Q");
|
||||
// NNNN = altimeter in millibars
|
||||
static const QString arg1s("%1");
|
||||
const auto altimeter = gridPoint.getSurfacePressure().valueInteger(CPressureUnit::mbar());
|
||||
const auto altimeter = gridPoint.getPressureAtMsl().valueInteger(CPressureUnit::mbar());
|
||||
simconnectMetar += arg1s.arg(altimeter, 4, 10, QLatin1Char('0'));
|
||||
|
||||
return simconnectMetar;
|
||||
|
||||
@@ -33,14 +33,14 @@ namespace BlackMisc
|
||||
const CTemperatureLayerList &temperatureLayers,
|
||||
const CVisibilityLayerList &visibilityLayers,
|
||||
const CWindLayerList &windLayers,
|
||||
const CPressure &surfacePressure) :
|
||||
const CPressure &pressureAtMsl) :
|
||||
m_identifier(identifier),
|
||||
m_position(position),
|
||||
m_cloudLayers(cloudLayers),
|
||||
m_temperatureLayers(temperatureLayers),
|
||||
m_visibilityLayers(visibilityLayers),
|
||||
m_windLayers(windLayers),
|
||||
m_surfacePressure(surfacePressure)
|
||||
m_pressureAtMsl(pressureAtMsl)
|
||||
{ }
|
||||
|
||||
void CGridPoint::copyWeatherDataFrom(const CGridPoint &other)
|
||||
@@ -49,7 +49,7 @@ namespace BlackMisc
|
||||
setTemperatureLayers(other.getTemperatureLayers());
|
||||
setVisibilityLayers(other.getVisibilityLayers());
|
||||
setWindLayers(other.getWindLayers());
|
||||
setSurfacePressure(other.getSurfacePressure());
|
||||
setPressureAtMsl(other.getPressureAtMsl());
|
||||
}
|
||||
|
||||
CVariant CGridPoint::propertyByIndex(const BlackMisc::CPropertyIndex &index) const
|
||||
@@ -68,8 +68,8 @@ namespace BlackMisc
|
||||
return CVariant::fromValue(m_temperatureLayers);
|
||||
case IndexWindLayers:
|
||||
return CVariant::fromValue(m_windLayers);
|
||||
case IndexSurfacePressure:
|
||||
return CVariant::fromValue(m_surfacePressure);
|
||||
case IndexPressureAtMsl:
|
||||
return CVariant::fromValue(m_pressureAtMsl);
|
||||
default:
|
||||
return CValueObject::propertyByIndex(index);
|
||||
}
|
||||
@@ -96,8 +96,8 @@ namespace BlackMisc
|
||||
case IndexWindLayers:
|
||||
setWindLayers(variant.value<CWindLayerList>());
|
||||
break;
|
||||
case IndexSurfacePressure:
|
||||
setSurfacePressure(variant.value<CPressure>());
|
||||
case IndexPressureAtMsl:
|
||||
setPressureAtMsl(variant.value<CPressure>());
|
||||
break;
|
||||
default:
|
||||
CValueObject::setPropertyByIndex(index, variant);
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace BlackMisc
|
||||
IndexCloudLayers,
|
||||
IndexTemperatureLayers,
|
||||
IndexWindLayers,
|
||||
IndexSurfacePressure
|
||||
IndexPressureAtMsl
|
||||
};
|
||||
|
||||
//! Default constructor.
|
||||
@@ -64,7 +64,7 @@ namespace BlackMisc
|
||||
const CTemperatureLayerList &temperatureLayers,
|
||||
const CVisibilityLayerList &visibilityLayers,
|
||||
const CWindLayerList &windLayers,
|
||||
const PhysicalQuantities::CPressure &surfacePressure);
|
||||
const PhysicalQuantities::CPressure &pressureAtMsl);
|
||||
|
||||
//! Set identifier
|
||||
void setIdentifier(const QString &identifier) { m_identifier = identifier; }
|
||||
@@ -105,11 +105,11 @@ namespace BlackMisc
|
||||
//! Copies all weather data from other without modifying identifier and position.
|
||||
void copyWeatherDataFrom(const CGridPoint &other);
|
||||
|
||||
//! Set surface pressure
|
||||
void setSurfacePressure(const PhysicalQuantities::CPressure &pressure) { m_surfacePressure = pressure; }
|
||||
//! Set pressure at mean sea level
|
||||
void setPressureAtMsl(const PhysicalQuantities::CPressure &pressure) { m_pressureAtMsl = pressure; }
|
||||
|
||||
//! Get surface pressure
|
||||
const PhysicalQuantities::CPressure &getSurfacePressure() const { return m_surfacePressure; }
|
||||
//! Get pressure at mean sea level
|
||||
const PhysicalQuantities::CPressure &getPressureAtMsl() const { return m_pressureAtMsl; }
|
||||
|
||||
//! \copydoc BlackMisc::Mixin::Index::propertyByIndex
|
||||
CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const;
|
||||
@@ -127,7 +127,7 @@ namespace BlackMisc
|
||||
CTemperatureLayerList m_temperatureLayers;
|
||||
CVisibilityLayerList m_visibilityLayers;
|
||||
CWindLayerList m_windLayers;
|
||||
PhysicalQuantities::CPressure m_surfacePressure = { PhysicalQuantities::CPhysicalQuantitiesConstants::ISASeaLevelPressure() };
|
||||
PhysicalQuantities::CPressure m_pressureAtMsl = { PhysicalQuantities::CPhysicalQuantitiesConstants::ISASeaLevelPressure() };
|
||||
|
||||
BLACK_METACLASS(
|
||||
CGridPoint,
|
||||
@@ -137,7 +137,7 @@ namespace BlackMisc
|
||||
BLACK_METAMEMBER(temperatureLayers),
|
||||
BLACK_METAMEMBER(visibilityLayers),
|
||||
BLACK_METAMEMBER(windLayers),
|
||||
BLACK_METAMEMBER(surfacePressure)
|
||||
BLACK_METAMEMBER(pressureAtMsl)
|
||||
);
|
||||
};
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user