1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Use the CT type for geographic/projected projections distinguishing

This commit is contained in:
Martin Tůma 2024-03-11 23:12:51 +01:00
parent 026ef5854d
commit ff50ffa003
2 changed files with 9 additions and 9 deletions

View File

@ -8,7 +8,6 @@
#include "proj/polarstereographic.h" #include "proj/polarstereographic.h"
#include "proj/obliquestereographic.h" #include "proj/obliquestereographic.h"
#include "proj/polyconic.h" #include "proj/polyconic.h"
#include "proj/latlon.h"
#include "datum.h" #include "datum.h"
#include "gcs.h" #include "gcs.h"
#include "pcs.h" #include "pcs.h"
@ -40,7 +39,7 @@ Projection::Method::Method(int id)
Projection::Projection(const PCS &pcs) Projection::Projection(const PCS &pcs)
: _gcs(pcs.gcs()), _ct(0), _units(pcs.conversion().units()), : _gcs(pcs.gcs()), _ct(0), _units(pcs.conversion().units()),
_cs(pcs.conversion().cs()), _geographic(false) _cs(pcs.conversion().cs())
{ {
const Ellipsoid &ellipsoid = _gcs.datum().ellipsoid(); const Ellipsoid &ellipsoid = _gcs.datum().ellipsoid();
const Projection::Setup &setup = pcs.conversion().setup(); const Projection::Setup &setup = pcs.conversion().setup();
@ -115,7 +114,7 @@ Projection::Projection(const PCS &pcs)
} }
Projection::Projection(const GCS &gcs, const CoordinateSystem &cs) Projection::Projection(const GCS &gcs, const CoordinateSystem &cs)
: _gcs(gcs), _units(LinearUnits(9001)), _cs(cs), _geographic(true) : _gcs(gcs), _units(LinearUnits(9001)), _cs(cs)
{ {
_ct = new LatLon(gcs.angularUnits()); _ct = new LatLon(gcs.angularUnits());
} }
@ -125,7 +124,6 @@ Projection::Projection(const Projection &p)
_gcs = p._gcs; _gcs = p._gcs;
_units = p._units; _units = p._units;
_ct = p._ct ? p._ct->clone() : 0; _ct = p._ct ? p._ct->clone() : 0;
_geographic = p._geographic;
_cs = p._cs; _cs = p._cs;
} }
@ -142,7 +140,6 @@ Projection &Projection::operator=(const Projection &p)
_gcs = p._gcs; _gcs = p._gcs;
_units = p._units; _units = p._units;
_ct = p._ct ? p._ct->clone() : 0; _ct = p._ct ? p._ct->clone() : 0;
_geographic = p._geographic;
_cs = p._cs; _cs = p._cs;
} }
@ -155,7 +152,7 @@ bool Projection::operator==(const Projection &p) const
return false; return false;
return (*_ct == *p._ct && _gcs == p._gcs && _units == p._units return (*_ct == *p._ct && _gcs == p._gcs && _units == p._units
&& _cs == p._cs && _geographic == p._geographic); && _cs == p._cs);
} }
PointD Projection::ll2xy(const Coordinates &c) const PointD Projection::ll2xy(const Coordinates &c) const

View File

@ -7,6 +7,7 @@
#include "linearunits.h" #include "linearunits.h"
#include "coordinatesystem.h" #include "coordinatesystem.h"
#include "gcs.h" #include "gcs.h"
#include "proj/latlon.h"
class PCS; class PCS;
class CT; class CT;
@ -70,7 +71,7 @@ public:
int _id; int _id;
}; };
Projection() : _ct(0), _geographic(false) {} Projection() : _ct(0) {}
Projection(const Projection &p); Projection(const Projection &p);
Projection(const PCS &pcs); Projection(const PCS &pcs);
Projection(const GCS &gcs, const CoordinateSystem &cs Projection(const GCS &gcs, const CoordinateSystem &cs
@ -90,7 +91,10 @@ public:
// and except of WMTS/WMS it is not needed. // and except of WMTS/WMS it is not needed.
return (_gcs.isValid() && _ct != 0 && _units.isValid()); return (_gcs.isValid() && _ct != 0 && _units.isValid());
} }
bool isGeographic() const {return _geographic;} bool isGeographic() const
{
return (dynamic_cast<const LatLon*>(_ct) != 0);
}
PointD ll2xy(const Coordinates &c) const; PointD ll2xy(const Coordinates &c) const;
Coordinates xy2ll(const PointD &p) const; Coordinates xy2ll(const PointD &p) const;
@ -103,7 +107,6 @@ private:
const CT *_ct; const CT *_ct;
LinearUnits _units; LinearUnits _units;
CoordinateSystem _cs; CoordinateSystem _cs;
bool _geographic;
}; };
#ifndef QT_NO_DEBUG #ifndef QT_NO_DEBUG