9 #include <boost/enable_shared_from_this.hpp>
13 #include <matrix/coordTransform.h>
15 class Coordinate_System;
16 class OGRSpatialReference;
19 class SpatialReference;
22 namespace MAKVRinTerra
25 class DtFeatureGeometry;
39 typedef boost::shared_ptr<DtProj>
Ptr;
40 typedef boost::shared_ptr<const DtProj>
CPtr;
43 typedef boost::error_info<DtProj, DtProj::CPtr>
ErrorInfo;
67 Bounds(
const DtProj& proj,
double xmin,
double ymin,
double xmax,
double ymax);
77 const DtProj& projection()
const;
89 std::string projString, boost::optional<AngleUnits> = boost::optional<AngleUnits>());
91 static DtProj::CPtr Make(std::auto_ptr<Coordinate_System>);
93 static DtProj::CPtr Make(
const osgEarth::SpatialReference*);
104 std::string projString()
const;
106 std::string print()
const;
107 std::string printDetailed()
const;
109 const Coordinate_System* coordinateSystem()
const;
110 const DtCoordTransform* transform()
const;
116 bool isRectangular()
const;
118 bool isLocalTopo()
const;
120 bool inRadians()
const;
121 bool inDegrees()
const;
122 bool isLatLong()
const;
123 bool isLongLat()
const;
125 bool isGeodetic()
const;
126 bool isGeocentric()
const;
127 bool isFlatEarth()
const;
135 bool operator==(
const DtProj &)
const;
144 long count,
int offset,
double* x,
double* y,
double* z);
146 static void Convert(
const DtProj & from,
const DtProj & to,
long count, DtPoint* points);
148 static void Convert(
const DtProj & from,
const DtProj & to, std::vector<DtPoint> & points);
149 static void Convert(
const DtProj & from,
const DtProj & to, std::list<DtPoint> & points);
162 static ProjData* Make(
const Coordinate_System*);
168 bool operator==(
const ProjData&)
const;
169 bool operator!=(
const ProjData&)
const;
174 explicit DtProj(std::string projString, boost::optional<AngleUnits>);
177 explicit DtProj(std::auto_ptr<Coordinate_System> cs);
186 boost::shared_ptr<Coordinate_System>
myCS;