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>
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;
76 : point1(p1), point2(p2) { }
83 Bounds(
const DtProj& proj,
double xmin,
double ymin,
double xmax,
double ymax);
93 const DtProj& projection()
const;
98 Bounds makeSubBounds(
unsigned x,
unsigned y,
unsigned xgrid,
unsigned ygrid)
const;
99 Bounds makeSubBounds(
unsigned n,
unsigned xgrid,
unsigned ygrid)
const;
111 std::string projString, boost::optional<AngleUnits> = boost::optional<AngleUnits>());
113 static DtProj::CPtr Make(std::auto_ptr<Coordinate_System>);
115 static DtProj::CPtr Make(
const osgEarth::SpatialReference*);
126 std::string projString()
const;
128 std::string
print()
const;
129 std::string printDetailed()
const;
132 const DtCoordTransform* transform()
const;
138 bool isLocal2D()
const;
141 bool isRectangular()
const;
143 bool isLocalTopo()
const;
145 bool inRadians()
const;
146 bool inDegrees()
const;
147 bool isLatLong()
const;
148 bool isLongLat()
const;
150 bool isGeodetic()
const;
151 bool isGeocentric()
const;
152 bool isFlatEarth()
const;
169 long count,
int offset,
double* x,
double* y,
double* z);
173 static void Convert(
const DtProj & from,
const DtProj & to, std::vector<DtPoint> & points);
174 static void Convert(
const DtProj & from,
const DtProj & to, std::list<DtPoint> & points);
199 explicit DtProj(std::string projString, boost::optional<AngleUnits>);
202 explicit DtProj(std::auto_ptr<Coordinate_System> cs);
211 boost::shared_ptr<Coordinate_System>
myCS;