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

#include <ossimEnviCgModel.h>

Inheritance diagram for ossimEnviCgModel:
ossimCoarseGridModel ossimSensorModel ossimProjection ossimOptimizableProjection ossimAdjustableParameterInterface ossimObject ossimErrorStatusInterface ossimReferenced

Public Member Functions

 ossimEnviCgModel ()
 
 ossimEnviCgModel (const ossimFilename &geoc_file)
 
bool loadEnviGeocFile (const ossimFilename &geoc_file)
 
bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Fulfills ossimObject base-class pure virtuals. More...
 
- Public Member Functions inherited from ossimCoarseGridModel
 ossimCoarseGridModel ()
 
 ossimCoarseGridModel (const ossimCoarseGridModel &copy_this)
 
 ossimCoarseGridModel (const ossimFilename &geom_file)
 Accepts name of geometry file. More...
 
 ossimCoarseGridModel (const ossimKeywordlist &geom_kwl)
 Accepts OSSIM keywordlist geometry file. More...
 
 ~ossimCoarseGridModel ()
 
virtual void buildGrid (const ossimDrect &imageBounds, ossimProjection *proj, double heightDelta=500.0, bool enableHeightFlag=false, bool makeAdjustableFlag=true)
 This method will build a grid from any projector. More...
 
virtual void buildGrid (const ossimDrect &imageBounds, ossimImageGeometry *geom, double heightDelta=500.0, bool enableHeightFlag=false, bool makeAdjustableFlag=true)
 Assigns the grid data given a geometry. More...
 
virtual std::ostream & print (std::ostream &out) const
 Extends base-class implementation. More...
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 Fulfills ossimObject base-class pure virtuals. More...
 
virtual ossimObjectdup () const
 Returns pointer to a new instance, copy of this. More...
 
bool saveCoarseGrid (const ossimFilename &cgFileName) const
 Saves the coarse grid to the specified file. More...
 
bool loadCoarseGrid (const ossimFilename &cgFileName)
 Loads the coarse grid from the specified file. More...
 
virtual void imagingRay (const ossimDpt &image_point, ossimEcefRay &image_ray) const
 
virtual void lineSampleToWorld (const ossimDpt &image_point, ossimGpt &gpt) const
 
virtual void lineSampleHeightToWorld (const ossimDpt &image_point, const double &heightEllipsoid, ossimGpt &world_pt) const
 This is the virtual that performs the actual work of projecting the image point to the earth at some specified elevation. More...
 
virtual void initAdjustableParameters ()
 
virtual bool useForward () const
 
virtual bool isAffectedByElevation () const
 image to ground faster More...
 
- Public Member Functions inherited from ossimSensorModel
 ossimSensorModel ()
 
 ossimSensorModel (const ossimSensorModel &copy_this)
 
 ossimSensorModel (const ossimKeywordlist &geom_kwl)
 
const ossimSensorModeloperator= (const ossimSensorModel &rhs)
 assignment operator More...
 
virtual ossimObjectgetBaseObject ()
 
virtual const ossimObjectgetBaseObject () const
 
virtual ossimGpt origin () const
 
virtual ossimDpt getMetersPerPixel () const
 
virtual const double & getNominalPosError () const
 Returns the estimated Absolute horizontal position error (CE90) of the sensor model. More...
 
virtual const double & getRelativePosError () const
 Returns the estimated RELATIVE horizontal position error (CE90) of the sensor model. More...
 
virtual void setNominalPosError (const double &ce90)
 Assigns the absolute image position error uncertainty (abs CE90) More...
 
virtual void setRelativePosError (const double &ce90)
 Assigns the relative image position error uncertainty (rel CE90) More...
 
virtual void worldToLineSample (const ossimGpt &world_point, ossimDpt &image_point) const
 
void setRefImgPt (const ossimDpt &pt)
 Sets the center line sampe of the image. More...
 
void setRefGndPt (const ossimGpt &pt)
 Sets the center latitude, longitude, height of the image. More...
 
void setImageRect (const ossimDrect &imageRect)
 
void setGroundRect (const ossimGpt &ul, const ossimGpt &ur, const ossimGpt &lr, const ossimGpt &ll)
 
ossimDpt imageSize () const
 
void setImageSize (const ossimDpt &size)
 
virtual void adjustableParametersChanged ()
 
virtual void updateModel ()
 
virtual bool insideImage (const ossimDpt &p) const
 
virtual bool operator== (const ossimProjection &proj) const
 
const ossimStringgetImageID () const
 Access methods: More...
 
const ossimDrectgetImageClipRect () const
 
virtual ossim_uint32 degreesOfFreedom () const
 
virtual bool needsInitialState () const
 needsInitialState() More...
 
virtual double optimizeFit (const ossimTieGptSet &tieSet, double *targetVariance=0)
 
virtual ossimDpt getForwardDeriv (int parmIdx, const ossimGpt &gpos, double hdelta=1e-11)
 
virtual ossimGpt getInverseDeriv (int parmIdx, const ossimDpt &ipos, double hdelta=1e-11)
 
virtual ossimSensorModel::CovMatStatus getObsCovMat (const ossimDpt &ipos, NEWMAT::SymmetricMatrix &Cov, const ossim_float64 defPointingSigma=0.5) const
 Gives 2X2 covariance matrix of observations. More...
 
void computeGsd ()
 This method computes the ground sample distance(gsd) and sets class attributes theGSD and theMeanGSD by doing a lineSampleHeightToWorld on four points and calculating the distance from them. More...
 
virtual bool getImageGeometry (const ossimString &, const ossimString &, ossimKeywordlist &) const
 Extracts geometry info from a non-ossim key,value pair to an ossim keyword list. More...
 
- Public Member Functions inherited from ossimProjection
 ossimProjection ()
 
virtual ~ossimProjection ()
 
virtual ossimDpt forward (const ossimGpt &wp) const
 
virtual ossimGpt inverse (const ossimDpt &pp) const
 
virtual void getRoundTripError (const ossimDpt &imagePoint, ossimDpt &errorResult) const
 
virtual void getRoundTripError (const ossimGpt &groundPoint, ossimDpt &errorResult) const
 
virtual void getGroundClipPoints (ossimGeoPolygon &gpts) const
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual bool operator!= (const ossimProjection &projection) const
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
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 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 Member Functions inherited from ossimErrorStatusInterface
 ossimErrorStatusInterface ()
 
virtual ~ossimErrorStatusInterface ()
 
virtual ossimErrorCode getErrorStatus () const
 
virtual ossimString getErrorStatusString () const
 
virtual void setErrorStatus (ossimErrorCode error_status) const
 
virtual void setErrorStatus () const
 
virtual void clearErrorStatus () const
 
bool hasError () const
 
- Public Member Functions inherited from ossimOptimizableProjection
 ossimOptimizableProjection ()
 
 ossimOptimizableProjection (const ossimOptimizableProjection &source)
 
virtual ~ossimOptimizableProjection ()
 
virtual ossimOptimizableProjectionoperator= (const ossimOptimizableProjection &source)
 
virtual bool setupOptimizer (const ossimString &setup)
 setupFromString() Derived classes should implement as needed. Initialize parameters needed for optimizeFit and degreesOfFreedom More...
 
- Public Member Functions inherited from ossimAdjustableParameterInterface
 ossimAdjustableParameterInterface ()
 
 ossimAdjustableParameterInterface (const ossimAdjustableParameterInterface &rhs)
 
virtual ~ossimAdjustableParameterInterface ()
 
void newAdjustment (ossim_uint32 numberOfParameters=0)
 
void setAdjustmentDescription (const ossimString &description)
 
ossimString getAdjustmentDescription () const
 
ossimString getAdjustmentDescription (ossim_uint32 adjustmentIdx) const
 Returns adjustmentDescription of specific adjustmentInfo. More...
 
void setCurrentAdjustment (ossim_uint32 adjustmentIndex, bool notify=false)
 
bool setCurrentAdjustment (const ossimString &description, bool notify=false)
 Sets the current adjustment to the adjustment with a matching description. More...
 
void eraseAdjustment (bool notify)
 
void eraseAdjustment (ossim_uint32 idx, bool notify)
 
void resetAdjustableParameters (bool notify=false)
 
void copyAdjustment (ossim_uint32 idx, bool notify)
 
void copyAdjustment (bool notify=false)
 
void keepAdjustment (ossim_uint32 idx, bool createCopy)
 
virtual void keepAdjustment (bool createCopy=true)
 
const ossimAdjustableParameterInterfaceoperator= (const ossimAdjustableParameterInterface &rhs)
 
void removeAllAdjustments ()
 
ossim_uint32 getNumberOfAdjustableParameters () const
 
double getAdjustableParameter (ossim_uint32 idx) const
 
virtual void setAdjustableParameter (ossim_uint32 idx, double value, bool notify=false)
 
virtual void setAdjustableParameter (ossim_uint32 idx, double value, double sigma, bool notify=false)
 
double getParameterSigma (ossim_uint32 idx) const
 
void setParameterSigma (ossim_uint32 idx, double value, bool notify=false)
 
ossimUnitType getParameterUnit (ossim_uint32 idx) const
 
void setParameterUnit (ossim_uint32 idx, ossimUnitType unit)
 
void setParameterUnit (ossim_uint32 idx, const ossimString &unit)
 
void setParameterCenter (ossim_uint32 idx, double center, bool notify=false)
 
double getParameterCenter (ossim_uint32 idx) const
 
double computeParameterOffset (ossim_uint32 idx) const
 
void setParameterOffset (ossim_uint32 idx, ossim_float64 value, bool notify=false)
 
ossimString getParameterDescription (ossim_uint32 idx) const
 
void setParameterDescription (ossim_uint32 idx, const ossimString &descrption)
 
ossim_int32 findParameterIdxGivenDescription (ossim_uint32 adjustmentIdx, const ossimString &name) const
 
ossim_int32 findParameterIdxContainingDescription (ossim_uint32 adjustmentIdx, const ossimString &name) const
 
bool isParameterLocked (ossim_uint32 idx) const
 
void setParameterLockFlag (ossim_uint32 idxParam, bool flag)
 
bool getParameterLockFlag (ossim_uint32 idx) const
 
void lockAllParametersCurrentAdjustment ()
 
void unlockAllParametersCurrentAdjustment ()
 
void lockAllParameters (ossim_uint32 idxAdjustment)
 
void unlockAllParameters (ossim_uint32 idxAdjustment)
 
void resizeAdjustableParameterArray (ossim_uint32 numberOfParameters)
 
void setAdjustment (const ossimAdjustmentInfo &adj, bool notify=false)
 
void setAdjustment (ossim_uint32 idx, const ossimAdjustmentInfo &adj, bool notify=false)
 
void addAdjustment (const ossimAdjustmentInfo &adj, bool notify)
 
void getAdjustment (ossimAdjustmentInfo &adj) const
 
void getAdjustment (ossim_uint32 idx, ossimAdjustmentInfo &adj) const
 
ossim_uint32 getNumberOfAdjustments () const
 
ossim_uint32 getCurrentAdjustmentIdx () const
 
void setDirtyFlag (bool flag=true)
 
void setAllDirtyFlag (bool flag=true)
 
bool hasDirtyAdjustments () const
 
virtual void saveCurrentAdjustmentOnly (ossimKeywordlist &kwl, const ossimString &prefix=ossimString(""))
 Saves the current active adjustment to the KWL file. More...
 
bool saveAdjustments (ossimKeywordlist &kwl, const ossimString &prefix=ossimString("")) const
 Save all adjustments to the KWL file. More...
 
bool loadAdjustments (const ossimKeywordlist &kwl, const ossimString &prefix=ossimString(""))
 
std::ostream & print (std::ostream &out) const
 Dumps the currently active adjustment to ostream. More...
 

Private Member Functions

double readValue (ifstream &s, bool bigEndian) const
 

Additional Inherited Members

- Public Types inherited from ossimSensorModel
enum  CovMatStatus { COV_INVALID = 0, COV_PARTIAL = 1, COV_FULL = 2 }
 
enum  DeriveMode {
  OBS_INIT =-99, EVALUATE =-98, P_WRT_X = -1, P_WRT_Y = -2,
  P_WRT_Z = -3
}
 
- Static Public Member Functions inherited from ossimCoarseGridModel
static void setInterpolationError (double error=.1)
 This is used when building a grid from a projector. More...
 
static void setMinGridSpacing (ossim_int32 minSpacing=100)
 
static void writeGeomTemplate (ostream &os)
 Writes a template of geometry keywords processed by loadState and saveState to output stream. More...
 
- Static Public Member Functions inherited from ossimSensorModel
static void writeGeomTemplate (ostream &os)
 
- Protected Member Functions inherited from ossimCoarseGridModel
void reallocateGrid (const ossimIpt &size)
 Deletes existing allocated memory and reallocates new space. More...
 
void initializeModelParams (ossimIrect irect)
 Initializes base class data members after grids have been assigned. More...
 
virtual ossimGpt extrapolate (const ossimDpt &imgPt, const double &height=ossim::nan()) const
 Implements its own extrapolation since this can be handled by ossimDblGrid. More...
 
- Protected Member Functions inherited from ossimSensorModel
virtual ~ossimSensorModel ()
 
virtual ossimDpt extrapolate (const ossimGpt &gp) const
 
void buildNormalEquation (const ossimTieGptSet &tieSet, NEWMAT::SymmetricMatrix &A, NEWMAT::ColumnVector &residue, NEWMAT::ColumnVector &projResidue, double pstep_scale)
 
NEWMAT::ColumnVector getResidue (const ossimTieGptSet &tieSet)
 
NEWMAT::ColumnVector solveLeastSquares (NEWMAT::SymmetricMatrix &A, NEWMAT::ColumnVector &r) const
 
NEWMAT::Matrix invert (const NEWMAT::Matrix &m) const
 stable invert stolen from ossimRpcSolver More...
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimAdjustableParameterInterface
bool paramChanged (ossim_uint32 param_idx) const
 Returns true if specified parameter has been modified since last setAllChangeFlag(false) call. More...
 
void setAllChangeFlags (bool areChanged)
 Sets all the change flags to the boolean indicated to indicate parameters are changed (TRUE) or not (FALSE). More...
 
void initChangeFlags ()
 Initializes the change flags to TRUE. More...
 
- Protected Attributes inherited from ossimCoarseGridModel
ossimFilename theGridFilename
 
ossimDblGrid theLatGrid
 
ossimDblGrid theLonGrid
 
ossimDblGrid theDlatDhGrid
 
ossimDblGrid theDlonDhGrid
 
ossimDblGridtheDlatDparamGrid
 
ossimDblGridtheDlonDparamGrid
 
ossimAdjustmentInfo theInitialAdjustment
 
bool theHeightEnabledFlag
 
- Protected Attributes inherited from ossimSensorModel
ossimIpt theImageSize
 
ossimDpt theSubImageOffset
 
ossimString theImageID
 
ossimString theSensorID
 
ossimDpt theGSD
 
ossim_float64 theMeanGSD
 
ossimGpt theRefGndPt
 
ossimDpt theRefImgPt
 
ossimPolygon theBoundGndPolygon
 
ossimDrect theImageClipRect
 
ossim_float64 theRelPosError
 
ossim_float64 theNominalPosError
 
ossimDpt theParWRTx
 Partials for current point. More...
 
ossimDpt theParWRTy
 
ossimDpt theParWRTz
 
ossimDpt theObs
 Observations & residuals for current point. More...
 
ossimDpt theResid
 
ossimRefPtr< ossimProjectiontheSeedFunction
 Used as an initial guess for iterative solutions and a guess for points outside the support bounds. More...
 
bool theExtrapolateImageFlag
 
bool theExtrapolateGroundFlag
 
- Protected Attributes inherited from ossimErrorStatusInterface
ossimErrorCode theErrorStatus
 
- Static Protected Attributes inherited from ossimCoarseGridModel
static double theInterpolationError = .1
 
static ossim_int32 theMinGridSpacing = 100
 

Detailed Description

Definition at line 13 of file ossimEnviCgModel.h.

Constructor & Destructor Documentation

◆ ossimEnviCgModel() [1/2]

ossimEnviCgModel::ossimEnviCgModel ( )

Definition at line 32 of file ossimEnviCgModel.cpp.

◆ ossimEnviCgModel() [2/2]

ossimEnviCgModel::ossimEnviCgModel ( const ossimFilename geoc_file)

Definition at line 37 of file ossimEnviCgModel.cpp.

References loadEnviGeocFile().

39 {
40  loadEnviGeocFile(geoc_file);
41 }
bool loadEnviGeocFile(const ossimFilename &geoc_file)

Member Function Documentation

◆ loadEnviGeocFile()

bool ossimEnviCgModel::loadEnviGeocFile ( const ossimFilename geoc_file)

Definition at line 45 of file ossimEnviCgModel.cpp.

References ossimString::after(), ossimString::c_str(), ossimString::contains(), ossimDblGrid::fill(), ossimSensorModel::imageSize(), ossimDblGrid::initialize(), ossimCoarseGridModel::initializeModelParams(), readValue(), ossimDblGrid::SAWTOOTH_90, ossimDblGrid::setDomainType(), ossimErrorStatusInterface::setErrorStatus(), ossimDblGrid::setNode(), ossimCoarseGridModel::theDlatDhGrid, ossimCoarseGridModel::theDlonDhGrid, ossimCoarseGridModel::theHeightEnabledFlag, ossimCoarseGridModel::theLatGrid, ossimCoarseGridModel::theLonGrid, ossimString::toInt(), ossimString::trim(), ossimDblGrid::WRAP_180, ossimDpt::x, x, ossimDpt::y, and y.

Referenced by ossimEnviCgModel().

46 {
47  theHeightEnabledFlag = false;
49 
50  ossimFilename geoc_hdr (geoc_file + ".hdr");
51 
52  ifstream geocHdrStream (geoc_hdr.c_str());
53  if (geocHdrStream.fail())
54  {
55  cout << "ossimEnviCgModel:loadEnviGeocFile() Error encountered opening GEOC header file <"<<geoc_hdr<<">"<<endl;
56  return false;
57  }
58 
59  char line[1024];
61  geocHdrStream.getline(line, 1024);
62  ossimString oline(line);
63  int bigEndian=0;
64  if (!oline.contains("ENVI"))
65  {
66  cout << "ossimEnviCgModel:loadEnviGeocFile() Error: GEOC header file <"<<geoc_hdr
67  <<"> missing \"ENVI\" magic number."<<endl;
68  return false;
69  }
70  while (!geocHdrStream.eof())
71  {
72  geocHdrStream.getline(line, 1024);
73  oline = line;
74  vector<ossimString> strSplit;
75  if (oline.contains("samples"))
76  imageSize.x = oline.after("=").trim().toInt();
77  else if (oline.contains("lines"))
78  imageSize.y = oline.after("=").trim().toInt();
79  else if (oline.contains("byte order"))
80  bigEndian = oline.after("=").trim().toInt();
81  }
82 
83  ossimDpt gridOrigin(0,0);
84 
85  ifstream geocStream (geoc_file.c_str(), ios_base::binary|ios_base::in);
86  if (geocStream.fail())
87  {
88  cout << "ossimEnviCgModel:Ctor Error encountered opening GEOC file <"<<geoc_file<<">"<<endl;
89  return false;
90  }
91 
92  ossimDpt spacing (1,1);
93  theLatGrid.initialize(imageSize, gridOrigin, spacing);
94  theLonGrid.initialize(imageSize, gridOrigin, spacing);
95  theDlatDhGrid.initialize(imageSize, gridOrigin, spacing);
96  theDlonDhGrid.initialize(imageSize, gridOrigin, spacing);
97 
98  double value;
99  for (int y=0; (y<imageSize.y) && !geocStream.eof() ; ++y)
100  {
101  for (int x=0; (x<imageSize.x) && !geocStream.eof() ; ++x)
102  {
103  value = readValue(geocStream, (bool) bigEndian);
104  theLonGrid.setNode(x, y, value);
105  }
106  }
107  for (int y=0; (y<imageSize.y) && !geocStream.eof() ; ++y)
108  {
109  for (int x=0; (x<imageSize.x) && !geocStream.eof() ; ++x)
110  {
111  value = readValue(geocStream, (bool) bigEndian);
112  theLatGrid.setNode(x, y, value);
113  }
114  }
115 
116  theDlatDhGrid.fill(0.0);
117  theDlonDhGrid.fill(0.0);
120 
121  ossimIrect imageBounds(0, 0, imageSize.x-1, imageSize.y-1);
122  initializeModelParams(imageBounds);
123 
124  return true;
125 }
ossim_uint32 x
ossim_uint32 y
std::basic_ifstream< char > ifstream
Class for char input file streams.
Definition: ossimIosFwd.h:44
double readValue(ifstream &s, bool bigEndian) const
double y
Definition: ossimDpt.h:165
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
void initialize(const ossimIpt &size, const ossimDpt &origin, const ossimDpt &spacing, double null_value=OSSIM_DEFAULT_NULL_PIX_DOUBLE)
ossimDpt imageSize() const
double x
Definition: ossimDpt.h:164
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string&#39;s contents...
Definition: ossimString.h:396
void initializeModelParams(ossimIrect irect)
Initializes base class data members after grids have been assigned.
void fill(double fill_value)
void setNode(const ossimIpt &p, const double &value)
Definition: ossimDblGrid.h:107

◆ readValue()

double ossimEnviCgModel::readValue ( ifstream &  s,
bool  bigEndian 
) const
private

Definition at line 135 of file ossimEnviCgModel.cpp.

Referenced by loadEnviGeocFile().

136 {
137  double value;
138  s.read( reinterpret_cast<char*>(&value) , sizeof(double) );
139  if (bigEndian)
140  {
141  char * pc = reinterpret_cast<char *>(&value);
142  std::swap(pc[0], pc[7]);
143  std::swap(pc[1], pc[6]);
144  std::swap(pc[2], pc[5]);
145  std::swap(pc[3], pc[4]);
146  cout<<endl;
147  }
148  return value;
149 }

◆ saveState()

bool ossimEnviCgModel::saveState ( ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Fulfills ossimObject base-class pure virtuals.

Saves geometry KWL files.

Returns
Returns true if successful.

Reimplemented from ossimCoarseGridModel.

Definition at line 127 of file ossimEnviCgModel.cpp.

References ossimKeywordlist::add(), ossimCoarseGridModel::saveState(), and status.

128 {
129  bool status = ossimCoarseGridModel::saveState(kwl, prefix);
130  if (status)
131  kwl.add(prefix, "type", "ossimCoarseGridModel");
132  return status;
133 }
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
return status
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Fulfills ossimObject base-class pure virtuals.

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