11 #include <matrix/coordTransform.h>
13 #include <vlutil/vlMutex.h>
18 #include <boost/noncopyable.hpp>
19 #include <boost/optional.hpp>
20 #include <boost/tuple/tuple.hpp>
28 class OGRSpatialReference;
32 typedef struct PJconsts
PJ;
35 class SpatialReference;
38 namespace MAKVRinTerra
41 class DtFeatureGeometry;
55 typedef std::shared_ptr<DtProj>
Ptr;
56 typedef std::shared_ptr<const DtProj>
CPtr;
59 typedef boost::error_info<DtProj, DtProj::CPtr>
ErrorInfo;
84 : point1(p1), point2(p2) { }
91 Bounds(
const DtProj& proj,
double xmin,
double ymin,
double xmax,
double ymax);
101 const DtProj& projection()
const;
106 Bounds makeSubBounds(
unsigned x,
unsigned y,
unsigned xgrid,
unsigned ygrid)
const;
107 Bounds makeSubBounds(
unsigned n,
unsigned xgrid,
unsigned ygrid)
const;
119 std::string wktString, boost::optional<AngleUnits> = boost::optional<AngleUnits>());
121 static DtProj::CPtr Make(std::unique_ptr<Coordinate_System>);
123 static DtProj::CPtr Make(
const osgEarth::SpatialReference*);
134 std::string wktString()
const;
136 std::string
print()
const;
137 std::string printDetailed()
const;
140 const DtCoordTransform* transform()
const;
146 bool isLocal2D()
const;
149 bool isRectangular()
const;
151 bool isLocalTopo()
const;
153 bool inRadians()
const;
154 bool inDegrees()
const;
155 bool isLatLong()
const;
156 bool isLongLat()
const;
158 bool isGeodetic()
const;
159 bool isGeocentric()
const;
160 bool isFlatEarth()
const;
177 long count,
int offset,
double* x,
double* y,
double* z);
181 static void Convert(
const DtProj & from,
const DtProj & to, std::vector<DtPoint> & points);
182 static void Convert(
const DtProj & from,
const DtProj & to, std::list<DtPoint> & points);
206 explicit DtProj(std::string wktString, boost::optional<AngleUnits>);
209 explicit DtProj(std::unique_ptr<Coordinate_System> cs);
218 std::shared_ptr<Coordinate_System>
myCS;
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:41
DtPoint point2
Definition: proj.h:86
AngleUnits
Definition: proj.h:64
struct PJconsts PJ
Definition: proj.h:32
DtTaggedException< DtProj > Exception
Definition: proj.h:61
double myXmax
Definition: proj.h:112
std::shared_ptr< const DtProj > CPtr
Definition: proj.h:56
std::shared_ptr< ProjData > myProjData
Definition: proj.h:217
struct pj_ctx PJ_CONTEXT
Definition: proj.h:30
double myYmax
Definition: proj.h:113
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
AngleOrder
Definition: proj.h:70
boost::optional< DtCoordTransform > myTransform
Definition: proj.h:221
boost::tuple< ErrorInfo, ErrorInfo > ConvertErrorInfo
Definition: proj.h:60
PJ * proj
Definition: proj.h:192
void print(double **a, int r, int c, const char *str)
Definition: coordSystem.h:54
double myYmin
Definition: proj.h:111
boost::error_info< DtProj, DtProj::CPtr > ErrorInfo
Exception stuff.
Definition: proj.h:59
boost::optional< AngleUnits > myAngleUnits
Definition: proj.h:219
Represents some coordinate system. The terms "coordinate system", "projection", "spatial reference"...
Definition: proj.h:52
std::shared_ptr< DtProj > Ptr
Definition: proj.h:55
std::shared_ptr< Coordinate_System > myCS
Definition: proj.h:218
Create a new MAK exception type that inherits from boost::exception. Tag is what differentiates this ...
Definition: taggedException.h:15
DtMutex mutex
Definition: proj.h:190
double myXmin
Definition: proj.h:110
DtProj::CPtr myProjection
Definition: proj.h:114
bool operator!=(const DtProj &p) const
Definition: proj.h:169
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
std::string wktString
Definition: proj.h:191
voidpf uLong offset
Definition: ioapi.h:42
boost::optional< AngleOrder > myAngleOrder
Definition: proj.h:220
Represents a feature geometry.
Definition: featureGeometry.h:40
LineSegment(const DtPoint &p1, const DtPoint &p2)
Definition: proj.h:83