mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-02-17 16:20:48 +01:00
Use the CT type for geographic/projected projections distinguishing
This commit is contained in:
parent
026ef5854d
commit
ff50ffa003
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user