/** * @RDE_HEADER@ * Manage and combine several ElevationMap * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "elevation_map_helper.h" #include #include #include namespace SituationMap { // forward: class ElevationMap; //------------------------------------------------------------------------------------------------------------ // ElevationMapManager //------------------------------------------------------------------------------------------------------------ class SITUATIONMAPELEVATIONMAP_EXPORT ElevationMapManager final : public QObject { using BaseClass = QObject; public: ElevationMapManager(); ElevationMapManager(const ElevationMapManager &) = delete; ElevationMapManager &operator = (const ElevationMapManager &) = delete; ~ElevationMapManager(); int init(const QStringList &filePaths_rough_to_fine); void cleanupCurrentContent(); bool waitForInitialization(); bool isValid() const; double elevation(double lon_rad, double lat_rad, bool *bIsCovered = nullptr) const; double elevation(double lon_rad, double lat_rad, double defaultValue, bool *bIsCovered = nullptr) const; // united extent of seperate files: QRectF simpleUnitedExtent() const; bool contains(const QPointF &point) const; // Line of Sight Profile: berücksichtigt Erdkrümmung und WGS84 Erdellipsoid void LOSProfile(const QPointF &start, const QPointF &end, LOSVector &losProfile); /*! \name Line of Sight */ //@{ enum class LineOfSight { LOS_UNDEFINED, LOS_ERROR, LOS_VISIBLE, LOS_INVISIBLE }; LineOfSight lineOfSightCalculation(const LOSVector &losProfile, double centerHat, double objHat) const; LineOfSight lineOfSightCalculation(const LtsUtils::QPoint3D &startPointGeo_absZ, const LtsUtils::QPoint3D &endPointGeo_absZ); LineOfSight lineOfSightCalculation(const QPointF &startPointGeo, double startHat, const QPointF &endPointGeo, double endHat); //@} protected: class Private; Private *d; LOGGER_T m_logger; ///< Interface of the Logging-Facility }; // ElevationMapManager } // SituationMap