2017-04-17 18:03:04 +02:00
|
|
|
#ifndef DATUM_H
|
|
|
|
#define DATUM_H
|
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
#include <cmath>
|
|
|
|
#include <QList>
|
|
|
|
#include <QDebug>
|
2017-04-17 18:03:04 +02:00
|
|
|
#include "ellipsoid.h"
|
2017-11-26 18:54:03 +01:00
|
|
|
#include "common/coordinates.h"
|
2017-04-17 18:03:04 +02:00
|
|
|
|
|
|
|
class Datum
|
|
|
|
{
|
|
|
|
public:
|
2018-01-08 23:47:45 +01:00
|
|
|
Datum() : _ellipsoid(Ellipsoid()), _dx(NAN), _dy(NAN), _dz(NAN),
|
|
|
|
_WGS84(false) {}
|
|
|
|
Datum(const Ellipsoid &ellipsoid, double dx, double dy, double dz);
|
|
|
|
Datum(const QString &name);
|
|
|
|
Datum(int id);
|
2017-04-17 18:03:04 +02:00
|
|
|
|
|
|
|
const Ellipsoid &ellipsoid() const {return _ellipsoid;}
|
|
|
|
double dx() const {return _dx;}
|
|
|
|
double dy() const {return _dy;}
|
|
|
|
double dz() const {return _dz;}
|
|
|
|
|
2017-07-12 21:23:56 +02:00
|
|
|
bool isNull() const
|
2018-01-08 23:47:45 +01:00
|
|
|
{return (_ellipsoid.isNull() && std::isnan(_dx) && std::isnan(_dy)
|
|
|
|
&& std::isnan(_dz));}
|
2017-06-29 19:53:42 +02:00
|
|
|
|
|
|
|
Coordinates toWGS84(const Coordinates &c) const;
|
2018-01-08 23:47:45 +01:00
|
|
|
Coordinates fromWGS84(const Coordinates &c) const;
|
2017-04-17 18:03:04 +02:00
|
|
|
|
|
|
|
static bool loadList(const QString &path);
|
|
|
|
static const QString &errorString() {return _errorString;}
|
|
|
|
static int errorLine() {return _errorLine;}
|
|
|
|
|
|
|
|
private:
|
2018-01-08 23:47:45 +01:00
|
|
|
class Entry;
|
|
|
|
|
|
|
|
static QList<Entry> WGS84();
|
2018-01-09 23:19:35 +01:00
|
|
|
static void error(const QString &str);
|
2018-01-08 23:47:45 +01:00
|
|
|
|
2017-04-17 18:03:04 +02:00
|
|
|
Ellipsoid _ellipsoid;
|
|
|
|
double _dx, _dy, _dz;
|
2018-01-08 23:47:45 +01:00
|
|
|
bool _WGS84;
|
2017-04-17 18:03:04 +02:00
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
static QList<Entry> _datums;
|
2017-04-17 18:03:04 +02:00
|
|
|
static QString _errorString;
|
|
|
|
static int _errorLine;
|
|
|
|
};
|
|
|
|
|
2018-01-08 23:47:45 +01:00
|
|
|
QDebug operator<<(QDebug dbg, const Datum &datum);
|
|
|
|
|
2017-04-17 18:03:04 +02:00
|
|
|
#endif // DATUM_H
|