/** * @RDE_HEADER@ * Interface-Implementation of Map * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "situation_map_types.h" // ESRI // Qt #include namespace Esri { namespace ArcGISRuntime { class Point; } } namespace SituationMap { /** * @brief The CoordTranslationFunctor is a base class translating between * the GeographicCoordinats (WGS84 - EPSG:4326) and the * EsriMap working on map coordinates. * * Forward (geographicToMap): * Geo (lon, lat) to map. * * Backward (mapToGeographic): * Map to Geo (lon, lat). */ class CoordTranslationFunctor { public: /*! \name Construction, Destruction */ //@{ explicit CoordTranslationFunctor() = default; ///< Contructor virtual ~CoordTranslationFunctor() = default; ///< Destructor //@} /*! \name Complete translation */ //@{ Q_REQUIRED_RESULT virtual QPointF geographicToMap(const double lon, const double lat) const = 0; ///< Forward: geographic coord to mapCoord, in radian Q_REQUIRED_RESULT virtual QPointF mapToGeographic(const double x, const double y) const = 0; ///< Backward: mapCoord to geographic Coord Q_REQUIRED_RESULT virtual QPointF geographicToMap(const QPointF &coord) const = 0; ///< Forward: geographic coord to mapCoord Q_REQUIRED_RESULT virtual QPointF mapToGeographic(const QPointF &coord) const = 0; ///< Backward: mapCoord to geographic Coord Q_REQUIRED_RESULT virtual QPointF geographicToMap(const Esri::ArcGISRuntime::Point &coord) const = 0; ///< Forward: geographic coord to mapCoord Q_REQUIRED_RESULT virtual QPointF mapToGeographic(const Esri::ArcGISRuntime::Point &coord) const = 0; ///< Backward: mapCoord to geographic Coord Q_REQUIRED_RESULT virtual Point3D geographicToMap(const Point3D &point3D) const = 0; ///< Forward: geographic coord to mapCoord Q_REQUIRED_RESULT virtual Point3D mapToGeographic(const Point3D &point3D) const = 0; ///< Backward: mapCoord to geographic Coord Q_REQUIRED_RESULT virtual bool mapIsGeographic() const = 0; virtual void geographicToUtm(const double referenceLon, QList &points) const = 0; ///< tanslate to proper utm coordinate system virtual void utmToGeographic(const double referenceLon, QList &points) const = 0; ///< translate back to goegraphic coordiante system //@} /*! \name For statistic or tests */ //@{ virtual int projectionCounter() const = 0; virtual void resetProjectionCounter() = 0; //@} }; //------------------------------------------------------------------------------ } // namespace SituationMap