Newer
Older
#ifndef TERRAINTILE_H
#define TERRAINTILE_H
#include "QGCLoggingCategory.h"
#include <QGeoCoordinate>
Q_DECLARE_LOGGING_CATEGORY(TerrainTileLog)
/**
* @brief The TerrainTile class
*
* Implements an interface for https://developers.airmap.com/v2.0/docs/elevation-api
*/
class TerrainTile
{
public:
TerrainTile();
~TerrainTile();
/**
* Constructor from json doc with elevation data (either from file or web)
*
/**
* Constructor from serialized elevation data (either from file or web)
*
* @param document
*/
TerrainTile(QByteArray byteArray);
/**
* Check for whether a coordinate lies within this tile
*
* @param coordinate
* @return true if within
*/
/**
* Check whether valid data is loaded
*
* @return true if data is valid
*/
/**
* Evaluates the elevation at the given coordinate
*
* @param coordinate
* @return elevation
*/
/**
* Accessor for the minimum elevation of the tile
*
* @return minimum elevation
*/
/**
* Accessor for the maximum elevation of the tile
*
* @return maximum elevation
*/
/**
* Accessor for the average elevation of the tile
*
* @return average elevation
*/
/**
* Accessor for the center coordinate
*
* @return center coordinate
*/
QGeoCoordinate centerCoordinate(void) const;
/**
* Serialize data
*
* @return serialized data
*/
static QByteArray serialize(QJsonDocument document);
inline int _latToDataIndex(double latitude) const;
inline int _lonToDataIndex(double longitude) const;
QGeoCoordinate _southWest; /// South west corner of the tile
QGeoCoordinate _northEast; /// North east corner of the tile
int _minElevation; /// Minimum elevation in tile
int _maxElevation; /// Maximum elevation in tile
double _avgElevation; /// Average elevation of the tile
double** _data; /// 2D elevation data array
int _gridSizeLat; /// data grid size in latitude direction
int _gridSizeLon; /// data grid size in longitude direction
bool _isValid; /// data loaded is valid
// Json keys
static const char* _jsonStatusKey;
static const char* _jsonDataKey;
static const char* _jsonBoundsKey;
static const char* _jsonSouthWestKey;
static const char* _jsonNorthEastKey;
static const char* _jsonStatsKey;
static const char* _jsonMaxElevationKey;
static const char* _jsonMinElevationKey;
static const char* _jsonAvgElevationKey;
static const char* _jsonCarpetKey;
};
#endif // TERRAINTILE_H