9 #include <geometry/point.h>
10 #include <matrix/coordTransform.h>
12 #include <vlutil/vlMutex.h>
15 #include <boost/enable_shared_from_this.hpp>
16 #include <boost/optional.hpp>
17 #include <boost/noncopyable.hpp>
18 #include <boost/tuple/tuple.hpp>
23 class Coordinate_System;
24 class OGRSpatialReference;
27 class SpatialReference;
30 namespace MAKVRinTerra
33 class DtFeatureGeometry;
47 typedef boost::shared_ptr<DtProj>
Ptr;
48 typedef boost::shared_ptr<const DtProj>
CPtr;
51 typedef boost::error_info<DtProj, DtProj::CPtr>
ErrorInfo;
75 Bounds(
const DtProj& proj,
double xmin,
double ymin,
double xmax,
double ymax);
85 const DtProj& projection()
const;
87 Bounds makeSubBounds(
unsigned x,
unsigned y,
unsigned xgrid,
unsigned ygrid)
const;
88 Bounds makeSubBounds(
unsigned n,
unsigned xgrid,
unsigned ygrid)
const;
100 std::string projString, boost::optional<AngleUnits> = boost::optional<AngleUnits>());
102 static DtProj::CPtr Make(std::auto_ptr<Coordinate_System>);
104 static DtProj::CPtr Make(
const osgEarth::SpatialReference*);
115 std::string projString()
const;
117 std::string print()
const;
118 std::string printDetailed()
const;
120 const Coordinate_System* coordinateSystem()
const;
121 const DtCoordTransform* transform()
const;
127 bool isLocal2D()
const;
130 bool isRectangular()
const;
132 bool isLocalTopo()
const;
134 bool inRadians()
const;
135 bool inDegrees()
const;
136 bool isLatLong()
const;
137 bool isLongLat()
const;
139 bool isGeodetic()
const;
140 bool isGeocentric()
const;
141 bool isFlatEarth()
const;
158 long count,
int offset,
double* x,
double* y,
double* z);
160 static void Convert(
const DtProj & from,
const DtProj & to,
long count, DtPoint* points);
161 static void Convert(
const DtProj & from,
const DtProj & to, DtPoint & point);
162 static void Convert(
const DtProj & from,
const DtProj & to, std::vector<DtPoint> & points);
163 static void Convert(
const DtProj & from,
const DtProj & to, std::list<DtPoint> & points);
176 static ProjData* Make(
const Coordinate_System*);
188 explicit DtProj(std::string projString, boost::optional<AngleUnits>);
191 explicit DtProj(std::auto_ptr<Coordinate_System> cs);
200 boost::shared_ptr<Coordinate_System>
myCS;