mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T773, average elevation from cached (on ground) elevations
This commit is contained in:
committed by
Mat Sutcliffe
parent
33b1e26460
commit
55b28e24a6
@@ -7,6 +7,8 @@
|
||||
*/
|
||||
|
||||
#include "simulationenvironmentprovider.h"
|
||||
#include "blackmisc/aviation/aircraftsituationchange.h"
|
||||
|
||||
#include "verify.h"
|
||||
#include <QStringBuilder>
|
||||
|
||||
@@ -165,6 +167,12 @@ namespace BlackMisc
|
||||
return m_elvCoordinatesGnd;
|
||||
}
|
||||
|
||||
CElevationPlane ISimulationEnvironmentProvider::averageElevationOfOnGroundAircraft(const CAircraftSituation &reference, const CLength &range, int minValues) const
|
||||
{
|
||||
const CCoordinateGeodeticList coordinates = this->getElevationCoordinatesOnGround();
|
||||
return coordinates.averageGeodeticHeight(reference, range, CAircraftSituationChange::allowedAltitudeDeviation(), minValues);
|
||||
}
|
||||
|
||||
CCoordinateGeodeticList ISimulationEnvironmentProvider::getAllElevationCoordinates(int &maxRemembered) const
|
||||
{
|
||||
QReadLocker l(&m_lockElvCoordinates);
|
||||
@@ -515,6 +523,12 @@ namespace BlackMisc
|
||||
return this->provider()->findClosestElevationWithinRangeOrRequest(reference, range, callsign);
|
||||
}
|
||||
|
||||
CElevationPlane CSimulationEnvironmentAware::averageElevationOfOnGroundAircraft(const CAircraftSituation &reference, const CLength &range, int minValues) const
|
||||
{
|
||||
if (!this->hasProvider()) { return CElevationPlane::null(); }
|
||||
return this->provider()->averageElevationOfOnGroundAircraft(reference, range, minValues);
|
||||
}
|
||||
|
||||
bool CSimulationEnvironmentAware::requestElevation(const ICoordinateGeodetic &reference, const CCallsign &callsign)
|
||||
{
|
||||
if (!this->hasProvider()) { return false; }
|
||||
|
||||
@@ -42,6 +42,14 @@ namespace BlackMisc
|
||||
//! \threadsafe
|
||||
Geo::CCoordinateGeodeticList getElevationCoordinatesOnGround() const;
|
||||
|
||||
//! Average elevation of "on ground" cached values
|
||||
//! \threadsafe
|
||||
Geo::CElevationPlane averageElevationOfOnGroundAircraft(const Aviation::CAircraftSituation &reference, const PhysicalQuantities::CLength &range, int minValues) const;
|
||||
|
||||
//! Highest elevation
|
||||
//! \threadsafe
|
||||
Aviation::CAltitude highestElevation() const;
|
||||
|
||||
//! Find closest elevation (or return NULL)
|
||||
//! \threadsafe
|
||||
Geo::CElevationPlane findClosestElevationWithinRange(const Geo::ICoordinateGeodetic &reference, const PhysicalQuantities::CLength &range) const;
|
||||
@@ -285,6 +293,9 @@ namespace BlackMisc
|
||||
//! \copydoc ISimulationEnvironmentProvider::findClosestElevationWithinRangeOrRequest
|
||||
Geo::CElevationPlane findClosestElevationWithinRangeOrRequest(const Geo::ICoordinateGeodetic &reference, const PhysicalQuantities::CLength &range, const Aviation::CCallsign &callsign);
|
||||
|
||||
//! \copydoc ISimulationEnvironmentProvider::averageElevationOfOnGroundAircraft
|
||||
Geo::CElevationPlane averageElevationOfOnGroundAircraft(const Aviation::CAircraftSituation &reference, const PhysicalQuantities::CLength &range, int minValues) const;
|
||||
|
||||
//! \copydoc ISimulationEnvironmentProvider::requestElevation
|
||||
bool requestElevation(const Geo::ICoordinateGeodetic &reference, const Aviation::CCallsign &callsign);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user