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

#include <ossimNadconNasDatum.h>

Inheritance diagram for ossimNadconNasDatum:
ossimNadconGridDatum ossimThreeParamDatum ossimDatum ossimObject ossimReferenced

Public Member Functions

 ossimNadconNasDatum (const ossimFilename &nadconDirectory)
 
virtual ossimGpt shift (const ossimGpt &aPt) const
 
- Public Member Functions inherited from ossimNadconGridDatum
 ossimNadconGridDatum (const ossimFilename &datumDirectory, const ossimString &code, const ossimString &name, const ossimEllipsoid *anEllipsoid, double sigmaX, double sigmaY, double sigmaZ, double westLongitude, double eastLongitude, double southLatitude, double northLatitude, double param1, double param2, double param3)
 
- Public Member Functions inherited from 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)
 
virtual ~ossimThreeParamDatum ()
 
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
 

Public Attributes

 TYPE_DATA
 

Additional Inherited Members

- Protected Member Functions inherited from ossimNadconGridDatum
void checkGrid (const ossimDpt &latLon) const
 
- 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 ()
 
- Protected Attributes inherited from ossimNadconGridDatum
ossimDrect theConusRect
 
ossimDrect theHawaiiRect
 
ossimDrect theAlaskaRect
 
ossimDrect theStGeorgeRect
 
ossimDrect theLatStLaurenceRect
 
ossimDrect theStPaulRect
 
ossimDrect thePrviRect
 
ossimNadconGridFile theLatGrid
 
ossimNadconGridFile theLonGrid
 
ossimDrect theCurrentGridRect
 
ossimFilename theDatumDirectory
 
 TYPE_DATA
 
- Protected Attributes inherited from ossimThreeParamDatum
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
 

Detailed Description

Definition at line 8 of file ossimNadconNasDatum.h.

Constructor & Destructor Documentation

◆ ossimNadconNasDatum()

ossimNadconNasDatum::ossimNadconNasDatum ( const ossimFilename nadconDirectory)

Definition at line 4 of file ossimNadconNasDatum.cpp.

5  :
6  ossimNadconGridDatum(nadconDirectory,
7  ossimString("NAS"),
8  ossimString("NORTH AMERICAN 1927 NADCON, CONUS GRID"),
10  5.000000000000000, 5.000000000000000, 6.000000000000000,
11  -135, -60.0, 15.0, 60.0, -8.0, 160.0, 176.0)
12 {
13 }
static ossimEllipsoidFactory * instance()
ossimNadconGridDatum(const ossimFilename &datumDirectory, const ossimString &code, const ossimString &name, const ossimEllipsoid *anEllipsoid, double sigmaX, double sigmaY, double sigmaZ, double westLongitude, double eastLongitude, double southLatitude, double northLatitude, double param1, double param2, double param3)

Member Function Documentation

◆ shift()

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

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

Reimplemented from ossimThreeParamDatum.

Definition at line 15 of file ossimNadconNasDatum.cpp.

References ossimString::begin(), ossimNadconGridDatum::checkGrid(), ossimDatum::code(), ossimGpt::datum(), ossimNadconGridFile::getFileOkFlag(), ossimNadconGridFile::getShiftAtLatLon(), ossimGpt::height(), ossimDpt::lat, ossimGpt::latd(), ossimDrect::ll(), ossimDpt::lon, ossimGpt::lond(), ossimThreeParamDatum::shift(), ossimNadconGridDatum::theCurrentGridRect, ossimNadconGridDatum::theLatGrid, ossimNadconGridDatum::theLonGrid, ossimDrect::ul(), and ossimDrect::ur().

16 {
17  const ossimDatum* datum = aPt.datum();
18  ossimString code = datum->code();
19  ossimString subCode(code.begin(),
20  code.begin() + 3);
21  if(subCode == "NAS")
22  {
23  return aPt;
24  }
25  else
26  {
27  if(subCode == "NAR")
28  {
29  checkGrid(aPt);
32  {
33  return ossimThreeParamDatum::shift(aPt);
34  }
35  ossimDpt pt;
36  ossimDpt tempPt;
37  ossimDpt deltaPt;
38  double shiftLat;
39  double shiftLon;
40  double minLat = theCurrentGridRect.ll().lat;
41  double maxLat = theCurrentGridRect.ul().lat;
42  double minLon = theCurrentGridRect.ul().lon;
43  double maxLon = theCurrentGridRect.ur().lon;
44  int maxIter = 20;
45  double epsilon = 1.0e-9;
46  int c = 0;
47 
48  pt.lat = aPt.latd();
49  pt.lon = aPt.lond();
50  ossimDpt pt2;
51  tempPt = pt;
52  ossimDpt delta2;
53  while(c < maxIter)
54  {
55  if(tempPt.lat < minLat) tempPt.lat = minLat;
56  if(tempPt.lat > maxLat) tempPt.lat = maxLat;
57  if(tempPt.lon < minLon) tempPt.lon = minLon;
58  if(tempPt.lon > maxLon) tempPt.lon = maxLon;
59 
60  shiftLat = theLatGrid.getShiftAtLatLon(tempPt.lat, tempPt.lon);
61  shiftLon = theLonGrid.getShiftAtLatLon(tempPt.lat, tempPt.lon);
62 
63 
64  pt2.lat = tempPt.lat + shiftLat/3600.0;
65  pt2.lon = tempPt.lon - shiftLon/3600.0;
66 
67  delta2 = pt2-pt;
68  if(c == 0)
69  {
70  if(fabs(deltaPt.lon) > epsilon)
71  {
72  tempPt.lon = pt.lon - shiftLon/3600.0;
73  }
74  if(fabs(deltaPt.lat) > epsilon)
75  {
76  tempPt.lat = pt.lat + shiftLat/3600.0;
77  }
78  }
79  else
80  {
81  if(fabs(delta2.lon) > epsilon)
82  {
83  tempPt.lon = tempPt.lon - delta2.lon;
84  }
85  if(fabs(delta2.lat) > epsilon)
86  {
87  tempPt.lat =tempPt.lat - delta2.lat;
88  }
89  }
90  if((fabs(delta2.lat) < epsilon)&&
91  (fabs(delta2.lon) < epsilon))
92  {
93  break;
94  }
95  else
96  {
97  ++c;
98  }
99  }
100  return ossimGpt(tempPt.lat,
101  tempPt.lon,
102  aPt.height(),
103  this);
104  }
105  }
106  return ossimThreeParamDatum::shift(aPt);
107 }
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
const ossimDpt & ul() const
Definition: ossimDrect.h:339
virtual const ossimString & code() const
Definition: ossimDatum.h:57
void checkGrid(const ossimDpt &latLon) const
ossimNadconGridFile theLatGrid
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
const ossimDatum * datum() const
datum().
Definition: ossimGpt.h:196
double lat
Definition: ossimDpt.h:165
std::string::iterator begin()
Definition: ossimString.h:420
double height() const
Definition: ossimGpt.h:107
double lon
Definition: ossimDpt.h:164
virtual ossimGpt shift(const ossimGpt &aPt) const
const ossimDpt & ur() const
Definition: ossimDrect.h:340
double getShiftAtLatLon(double lat, double lon) const
ossimNadconGridFile theLonGrid
const ossimDpt & ll() const
Definition: ossimDrect.h:342

Member Data Documentation

◆ TYPE_DATA

ossimNadconNasDatum::TYPE_DATA

Definition at line 17 of file ossimNadconNasDatum.h.


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