169 lines
4.8 KiB
C++
Executable File
169 lines
4.8 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* adapting GeISiR source to SituationMap
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "elevation_map_helper.h"
|
|
#include <ElevationMap/situationmapelevationmap_export.h>
|
|
|
|
#include <LtsUtilsCore/qpoint3d.h>
|
|
|
|
#include <Common/situation_map_logging.h>
|
|
|
|
#include <QFutureWatcher>
|
|
#include <QPointF>
|
|
#include <QRectF>
|
|
#include <QVector>
|
|
|
|
class QFileInfo;
|
|
namespace SituationMap
|
|
{
|
|
|
|
|
|
//------------------------------------------------------------------------------------------------------------
|
|
// ElevationMap
|
|
//------------------------------------------------------------------------------------------------------------
|
|
|
|
class SITUATIONMAPELEVATIONMAP_EXPORT ElevationMap final
|
|
{
|
|
|
|
friend class ElevationMapManager;
|
|
|
|
public:
|
|
ElevationMap() = delete;
|
|
ElevationMap(const ElevationMap &) = delete;
|
|
ElevationMap &operator = (const ElevationMap &) = delete;
|
|
|
|
explicit ElevationMap(const QFileInfo &fileInfo);
|
|
|
|
~ElevationMap();
|
|
|
|
bool waitForInitialization();
|
|
|
|
bool isValid() const;
|
|
|
|
QString filename() const;
|
|
|
|
QRectF extent() const;
|
|
|
|
QPair<double, double> elexelSize() const;
|
|
|
|
double elevation(double lon, double lat) const; // rad
|
|
|
|
double distance(const QPointF &start, const QPointF &end) const;
|
|
|
|
double profileDistance(const QPointF &start, const QPointF &end) const;
|
|
|
|
unsigned int elevationProfile(const QPointF &start, const QPointF &end, Vec3dVector &elevProfile) const;
|
|
|
|
void interpolation(bool on) { m_aproximation = on; }
|
|
bool interpolation() const { return m_aproximation; }
|
|
|
|
bool contains(const QPointF &point) const;
|
|
bool intersects(const QPolygonF &polygon) const;
|
|
|
|
// Line of Sight Profile: berücksichtigt Erdkrümmung und WGS84 Erdellipsoid
|
|
void LOSProfile(const QPointF &start, const QPointF &end, LOSVector &losProfile);
|
|
|
|
protected:
|
|
|
|
int getElevation(int column, int row) const;
|
|
double getElevation(double lon, double lat) const;
|
|
|
|
double getOrSubstituteElevation(int column, int row, double substitute) const;
|
|
|
|
// getSamplePoints rastert den Vector( start, end) in Lat/Lon entsprechend dem Höhenraster
|
|
void getSamplePoints(const QPointF &start, const QPointF &end, Vec3dVector &sPnts) const;
|
|
|
|
int clipp2Map(const QPointF &start, const QPointF &end, QPointF &cStart, QPointF &cEnd) const;
|
|
|
|
bool readFromFile();
|
|
|
|
struct Internal;
|
|
|
|
Internal *m_internal;
|
|
QString m_fileName;
|
|
bool m_aproximation;
|
|
bool m_valid;
|
|
QFutureWatcher<bool> m_gdalReadWatcher;
|
|
LOGGER_T m_logger; ///< Interface of the Logging-Facility
|
|
}; // ElevationMap
|
|
|
|
|
|
} // SituationMap
|
|
|
|
|
|
|
|
/* -----------------------------------------------------------------------------------------------
|
|
** CVS-Id/Release ...: $Header$
|
|
** -----------------------------------------------------------------------------------------------
|
|
**
|
|
** Historie:
|
|
**
|
|
** $Log: not supported by cvs2svn $
|
|
** Revision 1.20 2006/09/26 07:51:12 Jörg
|
|
** Syntax Fehler unter Suse Linux 10.1 behoben.
|
|
**
|
|
** Revision 1.19 2006/03/24 09:05:24 klaus
|
|
** Elevationprofile: Begrenzung auf Kartengröße aufgehoben ( Clipping)
|
|
**
|
|
** Revision 1.18 2005/11/09 11:12:27 klaus
|
|
** Anpassung an Linux: Kommentar hinter #endif mit "//" versehen
|
|
**
|
|
** Revision 1.17 2005/08/22 14:15:02 joerg
|
|
** typeId()
|
|
**
|
|
** Revision 1.16 2005/08/12 09:37:44 joerg
|
|
** Koordinaten-Umprojezieren bei Wechsel der Projektion
|
|
**
|
|
** Revision 1.15 2005/04/15 13:04:35 joerg
|
|
** Resource Control
|
|
**
|
|
** Revision 1.14 2005/03/04 14:29:13 klaus
|
|
** Elevationmap mit CachedTileList versehen und automatischem Entladen von Tiles
|
|
**
|
|
** Revision 1.13 2005/03/03 12:37:14 klaus
|
|
** dynamischen Laden und Entladen der ElevationTiles für Reliefmap
|
|
**
|
|
** Revision 1.12 2005/03/01 12:33:12 klaus
|
|
** Reliefmap eingeführt, aus Elevationmap entfernt
|
|
**
|
|
** Revision 1.11 2005/02/25 15:26:41 klaus
|
|
** Ergänzung um Reliefkarte
|
|
**
|
|
** Revision 1.10 2005/02/10 14:13:21 klaus
|
|
** Bias in Basisklasse MapObject überführt
|
|
**
|
|
** Revision 1.9 2005/02/10 13:51:01 klaus
|
|
** Bias für SightFans eingeführt
|
|
**
|
|
** Revision 1.8 2005/02/09 16:53:06 klaus
|
|
** 1. Version der SightFans
|
|
**
|
|
** Revision 1.7 2005/01/26 12:25:41 klaus
|
|
** todos bearbeitet, Fehlerrückmeldnugen
|
|
**
|
|
** Revision 1.6 2004/12/14 09:43:25 klaus
|
|
** 7. Erweiterung für Höhenkarten
|
|
**
|
|
** Revision 1.5 2004/12/07 11:07:20 klaus
|
|
** 5. Erweiterung für Höhenkarten
|
|
**
|
|
** Revision 1.4 2004/12/03 16:24:12 klaus
|
|
** 4. Erweiterung für Höhenkarten
|
|
**
|
|
** Revision 1.3 2004/11/30 13:15:28 klaus
|
|
** 3. Erweiterung für Höhenkarten
|
|
**
|
|
** Revision 1.2 2004/11/23 14:36:14 klaus
|
|
** 2. Erweiterung für Höhenkarten
|
|
**
|
|
**
|
|
** ----------------------------------------------------------------------------------------------- */
|
|
|