OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Attributes | List of all members
ossimThreeParamDatum Class Reference

#include <ossimThreeParamDatum.h>

Inheritance diagram for ossimThreeParamDatum:
ossimDatum ossimObject ossimReferenced ossimNadconGridDatum ossimWgs72Datum ossimWgs84Datum ossimNadconNarDatum ossimNadconNasDatum

Public Member Functions

 ossimThreeParamDatum (const ossimString &code, const ossimString &name, const ossimEllipsoid *anEllipsoid, ossim_float64 sigmaX, ossim_float64 sigmaY, ossim_float64 sigmaZ, ossim_float64 westLongitude, ossim_float64 eastLongitude, ossim_float64 southLatitude, ossim_float64 northLatitude, ossim_float64 param1, ossim_float64 param2, ossim_float64 param3)
 
virtual ~ossimThreeParamDatum ()
 
virtual ossimGpt shift (const ossimGpt &aPt) const
 
virtual ossimGpt shiftToWgs84 (const ossimGpt &aPt) const
 
virtual ossimGpt shiftFromWgs84 (const ossimGpt &aPt) const
 
virtual ossim_float64 param1 () const
 
virtual ossim_float64 param2 () const
 
virtual ossim_float64 param3 () const
 
virtual ossim_float64 param4 () const
 
virtual ossim_float64 param5 () const
 
virtual ossim_float64 param6 () const
 
virtual ossim_float64 param7 () const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
- Public Member Functions inherited from ossimDatum
 ossimDatum (const ossimString &alpha_code, const ossimString &name, const ossimEllipsoid *anEllipsoid, ossim_float64 sigmaX, ossim_float64 sigmaY, ossim_float64 sigmaZ, ossim_float64 westLongitude, ossim_float64 eastLongitude, ossim_float64 southLatitude, ossim_float64 northLatitude)
 
virtual bool isTheSameAs (const ossimDatum *aDatum) const
 
virtual const ossimStringcode () const
 
virtual const ossimStringname () const
 
virtual ossim_uint32 epsgCode () const
 
virtual const ossimEllipsoidellipsoid () const
 
virtual ossim_float64 sigmaX () const
 
virtual ossim_float64 sigmaY () const
 
virtual ossim_float64 sigmaZ () const
 
virtual ossim_float64 westLongitude () const
 
virtual ossim_float64 eastLongitude () const
 
virtual ossim_float64 southLatitude () const
 
virtual ossim_float64 northLatitude () const
 
virtual bool isInside (ossim_float64 latitude, ossim_float64 longitude) const
 
bool operator== (const ossimDatum &rhs) const
 
bool operator!= (const ossimDatum &rhs) const
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Protected Attributes

ossim_float64 theParam1
 
ossim_float64 theParam2
 
ossim_float64 theParam3
 
 TYPE_DATA
 
- Protected Attributes inherited from ossimDatum
ossimString theCode
 
ossim_uint32 theEpsgCode
 
ossimString theName
 
const ossimEllipsoidtheEllipsoid
 
ossim_float64 theSigmaX
 
ossim_float64 theSigmaY
 
ossim_float64 theSigmaZ
 
ossim_float64 theWestLongitude
 
ossim_float64 theEastLongitude
 
ossim_float64 theSouthLatitude
 
ossim_float64 theNorthLatitude
 
 TYPE_DATA
 

Additional Inherited Members

- Protected Member Functions inherited from ossimDatum
virtual ~ossimDatum ()
 Only friend ossimDatumFactory is permitted to delete. More...
 
virtual void molodenskyShift (double a, double da, double f, double df, double dx, double dy, double dz, double Lat_in, double Lon_in, double Hgt_in, double &Lat_out, double &Lon_out, double &Hgt_out) const
 
bool withinMolodenskyRange (const ossimGpt &pt) const
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Detailed Description

Definition at line 18 of file ossimThreeParamDatum.h.

Constructor & Destructor Documentation

◆ ossimThreeParamDatum()

ossimThreeParamDatum::ossimThreeParamDatum ( const ossimString code,
const ossimString name,
const ossimEllipsoid anEllipsoid,
ossim_float64  sigmaX,
ossim_float64  sigmaY,
ossim_float64  sigmaZ,
ossim_float64  westLongitude,
ossim_float64  eastLongitude,
ossim_float64  southLatitude,
ossim_float64  northLatitude,
ossim_float64  param1,
ossim_float64  param2,
ossim_float64  param3 
)
inline
Parameters
codenew datum code. (input)
nameName of the new datum (input)
SigmaXStandard error in X in meters (input)
SigmaYStandard error in Y in meters (input)
SigmaZStandard error in Z in meters (input)
southLatitudeSouthern edge of validity rectangle in radians(input)
northLatitudeNorthern edge of validity rectangle in radians(input)
westLongitudeWestern edge of validity rectangle in radians (input)
eastLongitudeEastern edge of validity rectangle in radians (input)
param1X translation
param2Y translation
param3Z translation

Definition at line 35 of file ossimThreeParamDatum.h.

47  : ossimDatum(code, name, anEllipsoid,
54  {}
virtual ossim_float64 sigmaY() const
Definition: ossimDatum.h:62
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
virtual ossim_float64 northLatitude() const
Definition: ossimDatum.h:68
virtual ossim_float64 sigmaX() const
Definition: ossimDatum.h:61
virtual ossim_float64 param1() const
virtual ossim_float64 westLongitude() const
Definition: ossimDatum.h:65
ossimDatum(const ossimString &alpha_code, const ossimString &name, const ossimEllipsoid *anEllipsoid, ossim_float64 sigmaX, ossim_float64 sigmaY, ossim_float64 sigmaZ, ossim_float64 westLongitude, ossim_float64 eastLongitude, ossim_float64 southLatitude, ossim_float64 northLatitude)
Definition: ossimDatum.cpp:18
virtual ossim_float64 sigmaZ() const
Definition: ossimDatum.h:63
virtual ossim_float64 param2() const
virtual ossim_float64 eastLongitude() const
Definition: ossimDatum.h:66
virtual ossim_float64 param3() const

◆ ~ossimThreeParamDatum()

virtual ossimThreeParamDatum::~ossimThreeParamDatum ( )
inlinevirtual

Definition at line 55 of file ossimThreeParamDatum.h.

55 {}

Member Function Documentation

◆ isEqualTo()

bool ossimThreeParamDatum::isEqualTo ( const ossimObject obj,
ossimCompareType  compareType = OSSIM_COMPARE_FULL 
) const
virtual

Reimplemented from ossimDatum.

Definition at line 148 of file ossimThreeParamDatum.cpp.

References ossim::almostEqual(), ossimDatum::isEqualTo(), theParam1, theParam2, and theParam3.

149 {
150  const ossimThreeParamDatum* datum = dynamic_cast<const ossimThreeParamDatum*> (&obj);
151 
152  bool result = datum&&ossimDatum::isEqualTo(obj, compareType);
153 
154  if(result)
155  {
156  result = (ossim::almostEqual(theParam1, datum->theParam1)&&
159  }
160 
161  return result;
162 }
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
Definition: ossimCommon.h:53
virtual bool isEqualTo(const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
Definition: ossimDatum.cpp:179

◆ param1()

virtual ossim_float64 ossimThreeParamDatum::param1 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 65 of file ossimThreeParamDatum.h.

Referenced by shiftFromWgs84(), and shiftToWgs84().

65 {return theParam1;}

◆ param2()

virtual ossim_float64 ossimThreeParamDatum::param2 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 66 of file ossimThreeParamDatum.h.

Referenced by shiftFromWgs84(), and shiftToWgs84().

66 {return theParam2;}

◆ param3()

virtual ossim_float64 ossimThreeParamDatum::param3 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 67 of file ossimThreeParamDatum.h.

Referenced by shiftFromWgs84(), and shiftToWgs84().

67 {return theParam3;}

◆ param4()

virtual ossim_float64 ossimThreeParamDatum::param4 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 68 of file ossimThreeParamDatum.h.

68 {return 0.0;}

◆ param5()

virtual ossim_float64 ossimThreeParamDatum::param5 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 69 of file ossimThreeParamDatum.h.

69 {return 0.0;}

◆ param6()

virtual ossim_float64 ossimThreeParamDatum::param6 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 70 of file ossimThreeParamDatum.h.

70 {return 0.0;}

◆ param7()

virtual ossim_float64 ossimThreeParamDatum::param7 ( ) const
inlinevirtual

Implements ossimDatum.

Definition at line 71 of file ossimThreeParamDatum.h.

71 {return 1.0;}

◆ shift()

ossimGpt ossimThreeParamDatum::shift ( const ossimGpt aPt) const
virtual

Will shift a ground point to this datum. If they are the same datum then nothing happens.

Implements ossimDatum.

Reimplemented in ossimWgs84Datum, ossimWgs72Datum, ossimNadconNasDatum, and ossimNadconNarDatum.

Definition at line 131 of file ossimThreeParamDatum.cpp.

References ossimDatum::code(), ossimGpt::datum(), ossimGpt::height(), ossimGpt::latd(), ossimGpt::lond(), shiftFromWgs84(), and ossimDatum::shiftToWgs84().

Referenced by ossimNadconNarDatum::shift(), and ossimNadconNasDatum::shift().

132 {
133  const ossimDatum *aDatum = aPt.datum();
134 
135  if( code() == aDatum->code())
136  {
137  return ossimGpt(aPt.latd(), aPt.lond(), aPt.height(), this);
138  }
139 
140  if(aDatum)
141  {
142  return shiftFromWgs84(aDatum->shiftToWgs84(aPt));
143  }
144 
145  return aPt;
146 }
virtual ossimGpt shiftToWgs84(const ossimGpt &aPt) const =0
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
virtual const ossimString & code() const
Definition: ossimDatum.h:57
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
const ossimDatum * datum() const
datum().
Definition: ossimGpt.h:196
double height() const
Definition: ossimGpt.h:107
virtual ossimGpt shiftFromWgs84(const ossimGpt &aPt) const

◆ shiftFromWgs84()

ossimGpt ossimThreeParamDatum::shiftFromWgs84 ( const ossimGpt aPt) const
virtual

Implements ossimDatum.

Reimplemented in ossimWgs84Datum, and ossimWgs72Datum.

Definition at line 77 of file ossimThreeParamDatum.cpp.

References ossim::almostEqual(), ossimDatum::ellipsoid(), ossimEllipsoid::getA(), ossimEllipsoid::getFlattening(), ossimGpt::height(), ossimGpt::isHgtNan(), ossimGpt::latd(), ossimGpt::latr(), ossimGpt::lond(), ossimGpt::lonr(), ossimDatum::molodenskyShift(), param1(), param2(), param3(), theParam1, theParam2, theParam3, ossimDatum::withinMolodenskyRange(), ossimEcefPoint::x(), ossimEcefPoint::y(), and ossimEcefPoint::z().

Referenced by shift().

78 {
79  if(ossim::almostEqual(param1(), 0.0)&&
80  ossim::almostEqual(param2(), 0.0)&&
81  ossim::almostEqual(param3(), 0.0))
82  {
83  return ossimGpt(aPt.latd(),
84  aPt.lond(),
85  aPt.latd(),
86  this);
87  }
88  ossimEcefPoint p1=aPt;
89  ossimEcefPoint p2=aPt;
90 
91  if(withinMolodenskyRange(aPt.latd()))
92  {
93  ossimWgs84Datum wgs84;
94  double latin, lonin, hgtin;
95  double latout, lonout, hgtout;
96 
97  double da = ellipsoid()->getA() - wgs84.ellipsoid()->getA();
98  double df = ellipsoid()->getFlattening() - wgs84.ellipsoid()->getFlattening();
99 
100  latin = aPt.latr();
101  lonin = aPt.lonr();
102  hgtin = aPt.height();
103 
104  if(aPt.isHgtNan())
105  {
106  hgtin = 0.0;
107  }
108  molodenskyShift(wgs84.ellipsoid()->getA(), da, wgs84.ellipsoid()->getFlattening(), df, -param1(), -param2(), -param3(),
109  latin, lonin, hgtin,
110  latout, lonout, hgtout);
111  ossimGpt g;
112 
113  g.latr(latout);
114  g.lonr(lonout);
115  g.height(hgtout);
116  g.datum(this);
117  return g;
118  }
119  else
120  {
121  p2 = ossimEcefPoint(p1.x() - theParam1,
122  p1.y() - theParam2,
123  p1.z() - theParam3);
124  }
125 
126 
127  return ossimGpt(p2, this);
128 }
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
Definition: ossimCommon.h:53
double x() const
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
bool isHgtNan() const
Definition: ossimGpt.h:143
virtual ossim_float64 param1() const
bool withinMolodenskyRange(const ossimGpt &pt) const
Definition: ossimDatum.h:124
const double & getA() const
double lonr() const
Returns the longitude in radian measure.
Definition: ossimGpt.h:76
virtual const ossimEllipsoid * ellipsoid() const
Definition: ossimDatum.h:60
double height() const
Definition: ossimGpt.h:107
virtual void molodenskyShift(double a, double da, double f, double df, double dx, double dy, double dz, double Lat_in, double Lon_in, double Hgt_in, double &Lat_out, double &Lon_out, double &Hgt_out) const
Definition: ossimDatum.cpp:38
double y() const
virtual ossim_float64 param2() const
double latr() const
latr().
Definition: ossimGpt.h:66
const double & getFlattening() const
virtual ossim_float64 param3() const
double z() const

◆ shiftToWgs84()

ossimGpt ossimThreeParamDatum::shiftToWgs84 ( const ossimGpt aPt) const
virtual

Implements ossimDatum.

Reimplemented in ossimWgs84Datum, and ossimWgs72Datum.

Definition at line 22 of file ossimThreeParamDatum.cpp.

References ossim::almostEqual(), ossimGpt::datum(), ossimDatum::ellipsoid(), ossimEllipsoid::getA(), ossimEllipsoid::getFlattening(), ossimGpt::height(), ossimGpt::isHgtNan(), ossimGpt::latd(), ossimGpt::latr(), ossimGpt::lond(), ossimGpt::lonr(), ossimDatum::molodenskyShift(), param1(), param2(), param3(), theParam1, theParam2, theParam3, ossimDatum::withinMolodenskyRange(), ossimEcefPoint::x(), ossimEcefPoint::y(), and ossimEcefPoint::z().

23 {
24 
25  if(ossim::almostEqual(param1(), 0.0)&&
26  ossim::almostEqual(param2(), 0.0)&&
27  ossim::almostEqual(param3(), 0.0))
28  {
29  return ossimGpt(aPt.latd(),
30  aPt.lond(),
31  aPt.latd(),
32  ossimGpt().datum());
33  }
34 
35  ossimEcefPoint p1 = aPt;
36  ossimEcefPoint p2;
37 
38 
39  if(withinMolodenskyRange(aPt.latd()))
40  {
41  ossimWgs84Datum wgs84;
42  double latin, lonin, hgtin;
43  double latout, lonout, hgtout;
44 
45  double da = wgs84.ellipsoid()->getA() - ellipsoid()->getA();
46  double df = wgs84.ellipsoid()->getFlattening() - ellipsoid()->getFlattening();
47 
48  latin = aPt.latr();
49  lonin = aPt.lonr();
50  hgtin = aPt.height();
51 
52  if(aPt.isHgtNan())
53  {
54  hgtin = 0.0;
55  }
56  molodenskyShift(ellipsoid()->getA(), da, ellipsoid()->getFlattening(), df, param1(), param2(), param3(),
57  latin, lonin, hgtin,
58  latout, lonout, hgtout);
59  ossimGpt g;
60 
61  g.latr(latout);
62  g.lonr(lonout);
63  g.height(hgtout);
64  g.datum(this);
65  return g;
66  }
67  else
68  {
69  p2 = ossimEcefPoint(p1.x() + theParam1,
70  p1.y() + theParam2,
71  p1.z() + theParam3);
72  }
73 
74  return ossimGpt(p2); // defaults to WGS84
75 }
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
bool almostEqual(T x, T y, T tolerance=FLT_EPSILON)
Definition: ossimCommon.h:53
double x() const
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
bool isHgtNan() const
Definition: ossimGpt.h:143
const ossimDatum * datum() const
datum().
Definition: ossimGpt.h:196
virtual ossim_float64 param1() const
bool withinMolodenskyRange(const ossimGpt &pt) const
Definition: ossimDatum.h:124
const double & getA() const
double lonr() const
Returns the longitude in radian measure.
Definition: ossimGpt.h:76
virtual const ossimEllipsoid * ellipsoid() const
Definition: ossimDatum.h:60
double height() const
Definition: ossimGpt.h:107
virtual void molodenskyShift(double a, double da, double f, double df, double dx, double dy, double dz, double Lat_in, double Lon_in, double Hgt_in, double &Lat_out, double &Lon_out, double &Hgt_out) const
Definition: ossimDatum.cpp:38
double y() const
virtual ossim_float64 param2() const
double latr() const
latr().
Definition: ossimGpt.h:66
const double & getFlattening() const
virtual ossim_float64 param3() const
double z() const

Member Data Documentation

◆ theParam1

ossim_float64 ossimThreeParamDatum::theParam1
protected

Definition at line 77 of file ossimThreeParamDatum.h.

Referenced by isEqualTo(), shiftFromWgs84(), and shiftToWgs84().

◆ theParam2

ossim_float64 ossimThreeParamDatum::theParam2
protected

Definition at line 78 of file ossimThreeParamDatum.h.

Referenced by isEqualTo(), shiftFromWgs84(), and shiftToWgs84().

◆ theParam3

ossim_float64 ossimThreeParamDatum::theParam3
protected

Definition at line 79 of file ossimThreeParamDatum.h.

Referenced by isEqualTo(), shiftFromWgs84(), and shiftToWgs84().

◆ TYPE_DATA

ossimThreeParamDatum::TYPE_DATA
protected

Definition at line 81 of file ossimThreeParamDatum.h.


The documentation for this class was generated from the following files: