OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimDatum.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Garrett Potts (gpotts@imagelinks.com)
6 //
7 // Description:
8 //
9 // Contains class declaration for OssimDatum. This is a class wrapper
10 // for Geotrans datum. For more thorough description of each function
11 // look at the datum.h file.
12 //*******************************************************************
13 // $Id: ossimDatum.h 19793 2011-06-30 13:26:56Z gpotts $
14 #ifndef ossimDatum_HEADER
15 #define ossimDatum_HEADER
17 #include <ossim/base/ossimString.h>
18 #include <ossim/base/ossimGpt.h>
20 #include <ossim/base/ossimObject.h>
21 
23 {
24  friend class ossimDatumFactory;
25 
26 public:
38  ossimDatum(const ossimString &alpha_code, const ossimString &name,
39  const ossimEllipsoid* anEllipsoid,
40  ossim_float64 sigmaX, ossim_float64 sigmaY, ossim_float64 sigmaZ,
41  ossim_float64 westLongitude, ossim_float64 eastLongitude,
42  ossim_float64 southLatitude, ossim_float64 northLatitude);
43 
44  // Argument holds the source point and datum. Returns another
45  // point with this datum.
46  //
47  virtual ossimGpt shift(const ossimGpt &aPt)const=0;
48  //utility functions to shift to and from the standard coordinates.
49  //Users should use the shift instead!!!
50  //
51  virtual ossimGpt shiftToWgs84(const ossimGpt &aPt)const = 0;
52  virtual ossimGpt shiftFromWgs84(const ossimGpt &aPt)const = 0;
53 
54 
55  virtual bool isTheSameAs(const ossimDatum *aDatum)const
56  {return this == aDatum;}
57  virtual const ossimString& code()const{return theCode;}
58  virtual const ossimString& name()const{return theName;}
59  virtual ossim_uint32 epsgCode()const{return theEpsgCode;}
60  virtual const ossimEllipsoid* ellipsoid()const{return theEllipsoid;}
61  virtual ossim_float64 sigmaX()const{return theSigmaX;}
62  virtual ossim_float64 sigmaY()const{return theSigmaY;}
63  virtual ossim_float64 sigmaZ()const{return theSigmaZ;}
64 
65  virtual ossim_float64 westLongitude()const{return theWestLongitude;}
66  virtual ossim_float64 eastLongitude()const{return theEastLongitude;}
67  virtual ossim_float64 southLatitude()const{return theSouthLatitude;}
68  virtual ossim_float64 northLatitude()const{return theNorthLatitude;}
69 
70  virtual ossim_float64 param1()const=0;
71  virtual ossim_float64 param2()const=0;
72  virtual ossim_float64 param3()const=0;
73  virtual ossim_float64 param4()const=0;
74  virtual ossim_float64 param5()const=0;
75  virtual ossim_float64 param6()const=0;
76  virtual ossim_float64 param7()const=0;
77 
78  virtual bool isInside(ossim_float64 latitude, ossim_float64 longitude)const
79  {
80  return ((theSouthLatitude <= latitude) &&
81  (latitude <= theNorthLatitude) &&
82  (theWestLongitude <= longitude) &&
83  (longitude <= theEastLongitude));
84  }
85 
86  bool operator==(const ossimDatum& rhs) const;
87 
88  bool operator!=(const ossimDatum& rhs)const
89  {
90  return (!(*this == rhs));
91  }
92  virtual bool isEqualTo(const ossimObject& obj, ossimCompareType compareType=OSSIM_COMPARE_FULL)const;
93 
94 protected:
96  virtual ~ossimDatum(){};
97 
111  virtual void molodenskyShift( double a,
112  double da,
113  double f,
114  double df,
115  double dx,
116  double dy,
117  double dz,
118  double Lat_in,
119  double Lon_in,
120  double Hgt_in,
121  double &Lat_out,
122  double &Lon_out,
123  double &Hgt_out)const;
124  bool withinMolodenskyRange(const ossimGpt& pt)const
125  {
126  double lat = pt.latd();
127 
128  return ((lat < 89.75) && (lat > -89.75));
129  }
130 
131 
132 protected:
137 
141 
146 
148 };
149 
150 #endif
ossim_float64 theWestLongitude
Definition: ossimDatum.h:142
virtual bool isEqualTo(const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
#define OSSIMDLLEXPORT
const ossimEllipsoid * theEllipsoid
Definition: ossimDatum.h:136
virtual ossim_float64 sigmaY() const
Definition: ossimDatum.h:62
ossim_float64 theEastLongitude
Definition: ossimDatum.h:143
ossim_float64 theSouthLatitude
Definition: ossimDatum.h:144
virtual ossim_uint32 epsgCode() const
Definition: ossimDatum.h:59
ossim_float64 theSigmaX
Definition: ossimDatum.h:138
virtual const ossimString & code() const
Definition: ossimDatum.h:57
virtual const ossimString & name() const
Definition: ossimDatum.h:58
virtual ossim_float64 southLatitude() const
Definition: ossimDatum.h:67
ossimCompareType
virtual ossim_float64 northLatitude() const
Definition: ossimDatum.h:68
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
virtual ossim_float64 sigmaX() const
Definition: ossimDatum.h:61
virtual bool isTheSameAs(const ossimDatum *aDatum) const
Definition: ossimDatum.h:55
double ossim_float64
bool withinMolodenskyRange(const ossimGpt &pt) const
Definition: ossimDatum.h:124
virtual ossim_float64 westLongitude() const
Definition: ossimDatum.h:65
virtual ~ossimDatum()
Only friend ossimDatumFactory is permitted to delete.
Definition: ossimDatum.h:96
unsigned int ossim_uint32
virtual const ossimEllipsoid * ellipsoid() const
Definition: ossimDatum.h:60
ossim_float64 theNorthLatitude
Definition: ossimDatum.h:145
ossim_float64 theSigmaY
Definition: ossimDatum.h:139
bool operator==(const ossimRefPtr< _Tp1 > &__a, const ossimRefPtr< _Tp2 > &__b) noexcept
Definition: ossimRefPtr.h:101
virtual ossim_float64 sigmaZ() const
Definition: ossimDatum.h:63
virtual bool isInside(ossim_float64 latitude, ossim_float64 longitude) const
Definition: ossimDatum.h:78
ossimString theName
Definition: ossimDatum.h:135
ossim_float64 theSigmaZ
Definition: ossimDatum.h:140
bool operator!=(const ossimDatum &rhs) const
Definition: ossimDatum.h:88
virtual ossim_float64 eastLongitude() const
Definition: ossimDatum.h:66
ossimString theCode
Definition: ossimDatum.h:133
ossim_uint32 theEpsgCode
Definition: ossimDatum.h:134