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

#include <ossimCoarseGridModel.h>

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

Public Member Functions

 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 saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 Fulfills ossimObject base-class pure virtuals. 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...
 

Static Public Member Functions

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

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

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

static double theInterpolationError = .1
 
static ossim_int32 theMinGridSpacing = 100
 

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
}
 

Detailed Description

Definition at line 34 of file ossimCoarseGridModel.h.

Constructor & Destructor Documentation

◆ ossimCoarseGridModel() [1/4]

ossimCoarseGridModel::ossimCoarseGridModel ( )

Definition at line 58 of file ossimCoarseGridModel.cpp.

59  :
64 {
65  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
66  << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel: entering..."
67  << std::endl;
68 
73 
75 
76  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
77  << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel: returning..."
78  << std::endl;
79 }
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
void enableExtrapolation(bool arg=true)
Definition: ossimDblGrid.h:91
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ ossimCoarseGridModel() [2/4]

ossimCoarseGridModel::ossimCoarseGridModel ( const ossimCoarseGridModel copy_this)

Definition at line 85 of file ossimCoarseGridModel.cpp.

86  :
87  ossimSensorModel (model),
88  theGridFilename (model.theGridFilename),
89  theLatGrid (model.theLatGrid),
90  theLonGrid (model.theLonGrid),
91  theDlatDhGrid (model.theDlatDhGrid),
92  theDlonDhGrid (model.theDlonDhGrid),
96 {
97  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
98  << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel(model): entering..."
99  << std::endl;
100 
101  int numberOfParams = getNumberOfAdjustableParameters();
102  if(numberOfParams)
103  {
104  //***
105  // Allocate adjustable parameter partials grids then assign:
106  //***
107  theDlatDparamGrid = new ossimDblGrid [numberOfParams];
108  theDlonDparamGrid = new ossimDblGrid [numberOfParams];
109 
110  for (int i=0; i<numberOfParams; i++)
111  {
112  theDlatDparamGrid[i] = model.theDlatDparamGrid[i];
113  theDlonDparamGrid[i] = model.theDlonDparamGrid[i];
114  }
115  }
116 
117  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
118  << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel: returning..."
119  << std::endl;
120 }
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ ossimCoarseGridModel() [3/4]

ossimCoarseGridModel::ossimCoarseGridModel ( const ossimFilename geom_file)

Accepts name of geometry file.

This can be either MET ECG geom file, or OSSIM keywordlist geometry file.

Definition at line 128 of file ossimCoarseGridModel.cpp.

129  :
131  theDlatDparamGrid (0),
132  theDlonDparamGrid (0),
134 {
135  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel(geom_file): entering..." << std::endl;
136 
141 
142  ossimKeywordlist kwl;
143  if(geom_file.exists()&&kwl.addFile(geom_file))
144  {
145  loadState(kwl);
146  theGridFilename = geom_file.path();
147  }
148  else
149  {
150  ++theErrorStatus;
151  }
152 
153  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel(geom_file): returning..." << std::endl;
154  return;
155 }
Represents serializable keyword/value map.
bool addFile(const char *file)
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Fulfills ossimObject base-class pure virtuals.
void enableExtrapolation(bool arg=true)
Definition: ossimDblGrid.h:91
bool exists() const
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
ossimFilename path() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ ossimCoarseGridModel() [4/4]

ossimCoarseGridModel::ossimCoarseGridModel ( const ossimKeywordlist geom_kwl)

Accepts OSSIM keywordlist geometry file.

Definition at line 163 of file ossimCoarseGridModel.cpp.

164  :
166  theDlatDparamGrid (0),
167  theDlonDparamGrid (0),
169 {
170  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::ossimCoarseGridModel(geom_kwl): entering..." << std::endl;
171 
176 
177  // Parse keywordlist for geometry:
178  loadState(geom_kwl);
179 }
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Fulfills ossimObject base-class pure virtuals.
void enableExtrapolation(bool arg=true)
Definition: ossimDblGrid.h:91
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ ~ossimCoarseGridModel()

ossimCoarseGridModel::~ossimCoarseGridModel ( )

Definition at line 459 of file ossimCoarseGridModel.cpp.

460 {
461  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
462  << "DEBUG ossimCoarseGridModel::~ossimCoarseGridModel: entering..."
463  << std::endl;
464 
466  {
467  //***
468  // Deallocate memory:
469  //***
470  delete [] theDlatDparamGrid;
471  delete [] theDlonDparamGrid;
472  theDlatDparamGrid = NULL;
473  theDlonDparamGrid = NULL;
474  }
475  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG)
476  << "DEBUG ossimCoarseGridModel::~ossimCoarseGridModel: returning..."
477  << std::endl;
478 }
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

Member Function Documentation

◆ buildGrid() [1/2]

void ossimCoarseGridModel::buildGrid ( const ossimDrect imageBounds,
ossimProjection proj,
double  heightDelta = 500.0,
bool  enableHeightFlag = false,
bool  makeAdjustableFlag = true 
)
virtual

This method will build a grid from any projector.

Assigns the grid data given a projection (typically a rigorous sensor model)

The accuracy of the grid can be controlled by the static method setInterpolationError().

Parameters
imageBoundsMust be the image space bounds for the projection.
projThe projector that will be used to approximate a bilinear grid over.

Definition at line 184 of file ossimCoarseGridModel.cpp.

References ossimRefPtr< T >::get(), and ossimImageGeometry::setProjection().

189 {
191  geom->setProjection(proj);
192  buildGrid(imageBounds, geom.get(), heightDelta, enableHeightFlag, makeAdjustableFlag);
193 }
void setProjection(ossimProjection *projection)
Sets the projection to be used for local-to-world coordinate transformation.
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.
Container class that holds both 2D transform and 3D projection information for an image Only one inst...

◆ buildGrid() [2/2]

void ossimCoarseGridModel::buildGrid ( const ossimDrect imageBounds,
ossimImageGeometry geom,
double  heightDelta = 500.0,
bool  enableHeightFlag = false,
bool  makeAdjustableFlag = true 
)
virtual

Assigns the grid data given a geometry.

Definition at line 199 of file ossimCoarseGridModel.cpp.

References ossimImageGeometry::getProjection(), ossimDrect::hasNans(), ossimDrect::height(), ossimSensorModel::imageSize(), ossimDatumFactory::instance(), ossimImageGeometry::localToWorld(), ossimDrect::midPoint(), ossimAdjustableParameterInterface::resizeAdjustableParameterArray(), theDlatDparamGrid, theDlonDparamGrid, theHeightEnabledFlag, ossimDrect::ul(), ossimDatumFactory::wgs84(), ossimDrect::width(), ossimIpt::x, and ossimIpt::y.

204 {
205  theHeightEnabledFlag = enableHeightFlag;
206 
207  if (!geom->getProjection() || imageBounds.hasNans())
208  return;
209 
210  // don't let it get any smaller than 100, 100 pixels
211  // on the input projector
212  //
213  // may want this to be adjusted by outside
214  //
215  const ossimDatum* targetDatum = ossimDatumFactory::instance()->wgs84();
216  ossimIpt gridSize(2,2);
217  ossimDpt gridOrigin(0,0);
218  ossimGpt gpt;
219  ossimGpt gpt2;
220  ossimGpt bilinearGpt;
222  double normSplit = 1.0;
223  ossimIpt imageSize = ossimIpt(imageBounds.width(), imageBounds.height());
224  double error = 0.0;
225 
226  ossimIpt imageOrigin = imageBounds.ul();
227  ossimDpt spacing ((double)(imageBounds.width()-1)/(gridSize.x-1),
228  (double)(imageBounds.height()-1)/(gridSize.y-1));
229 
231  {
232  delete [] theDlatDparamGrid;
233  theDlatDparamGrid = NULL;
234  }
236  {
237  delete [] theDlonDparamGrid;
238  theDlonDparamGrid = NULL;
239  }
240 
241  geom->localToWorld(imageBounds.midPoint(), gpt);
242 
243  do
244  {
245  if(traceDebug())
246  {
247  ossimNotify(ossimNotifyLevel_DEBUG) << "Checking grid size " << gridSize << std::endl;
248  }
249 
250  spacing = ossimDpt((double)(imageBounds.width()-1)/(gridSize.x-1),
251  (double)(imageBounds.height()-1)/(gridSize.y-1));
252 
259  theLatGrid.initialize(gridSize, gridOrigin, spacing);
260  theLonGrid.initialize(gridSize, gridOrigin, spacing);
261  theDlatDhGrid.initialize(gridSize, gridOrigin, spacing);
262  theDlonDhGrid.initialize(gridSize, gridOrigin, spacing);
263  ossim_int32 x, y;
264 
265  for(y = 0; y < gridSize.y; ++y)
266  {
267  for(x = 0; x < gridSize.x; ++x)
268  {
269  ossimDpt norm((double)x/(double)(gridSize.x-1),
270  (double)y/(double)(gridSize.y-1));
271 
272  ossimDpt pt(imageOrigin.x + norm.x*(imageSize.x-1),
273  imageOrigin.y + norm.y*(imageSize.y-1));
274 
275  geom->localToWorld(pt, gpt);
276  double h = gpt.height();
277  if(ossim::isnan(h))
278  {
279  h += heightDelta;
280  }
281  ossimDpt fullPt;
282  geom->rnToFull(pt, 0, fullPt);
283  geom->getProjection()->lineSampleHeightToWorld(fullPt, h, gpt2);
284  gpt.changeDatum(targetDatum);
285  gpt2.changeDatum(targetDatum);
286 
287  theLatGrid.setNode(x, y, gpt.latd());
288  theLonGrid.setNode(x, y, gpt.lond());
289 
290  theDlatDhGrid.setNode(x, y, (gpt2.latd() - gpt.latd())/heightDelta);
291  theDlonDhGrid.setNode(x, y, (gpt2.lond() - gpt.lond())/heightDelta);
292  }
293  }
294  ossim_int32 upperY = 2*gridSize.y;
295  ossim_int32 upperX = 2*gridSize.x;
296  error = 0.0;
297 
298  // Set all base-class data members needed for subsequent calls to projection code:
299  initializeModelParams(imageBounds);
300 
301  for(y = 0; ((y < upperY)&&(error < theInterpolationError)); ++y)
302  {
303  for(x = 0; ((x < upperX)&&(error<theInterpolationError)); ++x)
304  {
305  ossimDpt norm((double)x/(double)(upperX-1),
306  (double)y/(double)(upperY-1));
307 
308  ossimDpt imagePoint(imageOrigin.x + norm.x*(imageSize.x-1),
309  imageOrigin.y + norm.y*(imageSize.y-1));
310  ossimDpt testIpt;
311 
312  geom->localToWorld(imagePoint, gpt);
313  worldToLineSample(gpt, testIpt);
314  error = (testIpt-imagePoint).length();
315  }
316  }
317 
318  gridSize.x *= 2;
319  gridSize.y *= 2;
320  normSplit *= .5;
321  } while((error > theInterpolationError) &&
322  ((imageSize.x*normSplit) > theMinGridSpacing) &&
323  ((imageSize.y*normSplit) > theMinGridSpacing));
324 
325  gridSize = theLatGrid.size();
326 
327  ossimAdjustableParameterInterface* adjustableParameters =
330  if(adjustableParameters&&makeAdjustableFlag)
331  {
332  if(adjustableParameters->getNumberOfAdjustableParameters() > 0)
333  {
334  newAdjustment(adjustableParameters->getNumberOfAdjustableParameters());
335 
336  int numberOfParams = getNumberOfAdjustableParameters();
337  if(numberOfParams)
338  {
339  //***
340  // Allocate adjustable parameter partials grids then assign:
341  //***
342  theDlatDparamGrid = new ossimDblGrid [numberOfParams];
343  theDlonDparamGrid = new ossimDblGrid [numberOfParams];
344  for(int paramIdx = 0; paramIdx < numberOfParams; ++ paramIdx)
345  {
346  theDlonDparamGrid[paramIdx].setNullValue(0.0);
347  theDlatDparamGrid[paramIdx].setNullValue(0.0);
348  theDlatDparamGrid[paramIdx].initialize(gridSize, gridOrigin, spacing);
349  theDlonDparamGrid[paramIdx].initialize(gridSize, gridOrigin, spacing);
350  setAdjustableParameter(paramIdx, 0.0);
351  setParameterSigma(paramIdx, adjustableParameters->getParameterSigma(paramIdx));
352  setParameterUnit(paramIdx, adjustableParameters->getParameterUnit(paramIdx));
353  setParameterCenter(paramIdx, 0.0);
354  setParameterDescription(paramIdx,
355  adjustableParameters->getParameterDescription(paramIdx));
356 
357  double oldParameter = adjustableParameters->getAdjustableParameter(paramIdx);
358  adjustableParameters->setAdjustableParameter(paramIdx, 1.0, true);
359  double adjust = adjustableParameters->computeParameterOffset(paramIdx);
360  double deltaLat = 0;
361  double deltaLon = 0;
362  if(adjust != 0.0)
363  {
364  for(int y = 0; y < gridSize.y; ++y)
365  {
366  for(int x = 0; x < gridSize.x; ++x)
367  {
368  ossimDpt norm((double)x/(double)(gridSize.x-1),
369  (double)y/(double)(gridSize.y-1));
370 
371  ossimDpt pt(imageOrigin.x + norm.x*(imageSize.x-1),
372  imageOrigin.y + norm.y*(imageSize.y-1));
373  geom->localToWorld(pt, gpt);
374 
375  gpt.changeDatum(targetDatum);
376  gpt2.latd(theLatGrid(pt));
377  gpt2.lond(theLonGrid(pt));
378  deltaLat = gpt.latd()-gpt2.latd();
379  deltaLon = gpt.lond()-gpt2.lond();
380 
381  theDlatDparamGrid[paramIdx].setNode(x, y, deltaLat/adjust);
382  theDlonDparamGrid[paramIdx].setNode(x, y, deltaLon/adjust);
383  }
384  }
385 
386  // The partials grids for this parameter are initialized, now initialize the
387  // grid's extrapolator:
390  }
391  adjustableParameters->setAdjustableParameter(paramIdx, oldParameter, true);
392  }
393  }
394  }
395  }
397 }
ossim_uint32 x
void setParameterDescription(ossim_uint32 idx, const ossimString &descrption)
ossim_float64 width() const
Definition: ossimDrect.h:522
static double theInterpolationError
double lond() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:97
ossim_uint32 y
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
const ossimDpt & ul() const
Definition: ossimDrect.h:339
const ossimIpt & size() const
Definition: ossimDblGrid.h:187
double y
Definition: ossimDpt.h:165
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
void setNullValue(double value)
Definition: ossimDblGrid.h:183
void initialize(const ossimIpt &size, const ossimDpt &origin, const ossimDpt &spacing, double null_value=OSSIM_DEFAULT_NULL_PIX_DOUBLE)
double latd() const
Will convert the radian measure to degrees.
Definition: ossimGpt.h:87
void changeDatum(const ossimDatum *datum)
This will actually perform a shift.
Definition: ossimGpt.cpp:316
void enableExtrapolation(bool arg=true)
Definition: ossimDblGrid.h:91
ossimDpt imageSize() const
ossimString getParameterDescription(ossim_uint32 idx) const
static ossim_int32 theMinGridSpacing
ossimUnitType getParameterUnit(ossim_uint32 idx) const
void rnToFull(const ossimDpt &rnPt, ossim_uint32 resolutionLevel, ossimDpt &fullPt) const
rnToFull is a utility method that takes a rn resolution image point and maps it to the full image poi...
bool localToWorld(const ossimDpt &local_pt, ossimGpt &world_pt) const
Exposes the 3D projection from image to world coordinates.
virtual void lineSampleHeightToWorld(const ossimDpt &lineSampPt, const double &heightAboveEllipsoid, ossimGpt &worldPt) const =0
void newAdjustment(ossim_uint32 numberOfParameters=0)
double height() const
Definition: ossimGpt.h:107
#define PTR_CAST(T, p)
Definition: ossimRtti.h:321
static ossimDatumFactory * instance()
void setParameterUnit(ossim_uint32 idx, ossimUnitType unit)
bool hasNans() const
Definition: ossimDrect.h:396
ossim_float64 height() const
Definition: ossimDrect.h:517
ossimAdjustmentInfo theInitialAdjustment
virtual void worldToLineSample(const ossimGpt &world_point, ossimDpt &image_point) const
const ossimProjection * getProjection() const
Access methods for projection (may be NULL pointer).
ossimDpt midPoint() const
Definition: ossimDrect.h:817
virtual void setAdjustableParameter(ossim_uint32 idx, double value, bool notify=false)
ossim_int32 y
Definition: ossimIpt.h:142
double x
Definition: ossimDpt.h:164
void resizeAdjustableParameterArray(ossim_uint32 numberOfParameters)
void initializeModelParams(ossimIrect irect)
Initializes base class data members after grids have been assigned.
ossim_int32 x
Definition: ossimIpt.h:141
void getAdjustment(ossimAdjustmentInfo &adj) const
const ossimDatum * wgs84() const
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
void setParameterCenter(ossim_uint32 idx, double center, bool notify=false)
void setParameterSigma(ossim_uint32 idx, double value, bool notify=false)
void setNode(const ossimIpt &p, const double &value)
Definition: ossimDblGrid.h:107
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
int ossim_int32
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

◆ dup()

virtual ossimObject* ossimCoarseGridModel::dup ( ) const
inlinevirtual

Returns pointer to a new instance, copy of this.

Implements ossimProjection.

Definition at line 85 of file ossimCoarseGridModel.h.

85 { return new ossimCoarseGridModel(*this); }

◆ extrapolate()

ossimGpt ossimCoarseGridModel::extrapolate ( const ossimDpt imgPt,
const double &  height = ossim::nan() 
) const
protectedvirtual

Implements its own extrapolation since this can be handled by ossimDblGrid.

Reimplemented from ossimSensorModel.

Definition at line 1048 of file ossimCoarseGridModel.cpp.

References lineSampleHeightToWorld().

Referenced by lineSampleToWorld(), and ossimH5GridModel::worldToLineSample().

1049 {
1050  ossimGpt gpt;
1051  lineSampleHeightToWorld(local_ip, height, gpt);
1052  return gpt;
1053 }
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 ...

◆ imagingRay()

void ossimCoarseGridModel::imagingRay ( const ossimDpt image_point,
ossimEcefRay image_ray 
) const
virtual

METHOD: imagingRay(image_point, &ossimEcefRay) Given an image point, returns a ray originating at some arbitrarily high point (ideally at the sensor position) and pointing towards the target. Implemented here but should be overriden for more efficient solution.

Reimplemented from ossimSensorModel.

Definition at line 578 of file ossimCoarseGridModel.cpp.

References ossimSensorModel::imagingRay().

580 {
581  ossimSensorModel::imagingRay(image_point, image_ray);
582 }
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const

◆ initAdjustableParameters()

void ossimCoarseGridModel::initAdjustableParameters ( )
virtual

◆ initializeModelParams()

void ossimCoarseGridModel::initializeModelParams ( ossimIrect  imageBounds)
protected

Initializes base class data members after grids have been assigned.

It is assumed that theImageSize and the origin image point were already set.

Definition at line 413 of file ossimCoarseGridModel.cpp.

References ossimGpt::distanceTo(), ossimDblGrid::getNode(), ossimIrect::height(), ossimDpt::lat, ossimGpt::lat, ossimDpt::line, ossimGpt::lon, ossimIrect::midPoint(), ossimDpt::samp, ossimDblGrid::size(), ossimDblGrid::spacing(), ossimSensorModel::theBoundGndPolygon, ossimSensorModel::theGSD, ossimSensorModel::theImageClipRect, ossimSensorModel::theImageSize, theLatGrid, theLonGrid, ossimSensorModel::theMeanGSD, ossimSensorModel::theRefGndPt, ossimSensorModel::theRefImgPt, ossimSensorModel::theSubImageOffset, ossimIrect::ul(), ossimIrect::width(), ossimDpt::x, and ossimDpt::y.

Referenced by ossimHdf5GridModel::initialize(), and ossimEnviCgModel::loadEnviGeocFile().

414 {
415  // NOTE: it is assumed that the grid size and spacing is the same for ALL grids:
416  ossimIpt gridSize (theLatGrid.size());
417  ossimDpt spacing (theLatGrid.spacing());
418  ossimDpt v[4];
419  v[0].lat = theLatGrid.getNode(0,0);
420  v[0].lon = theLonGrid.getNode(0,0);
421  v[1].lat = theLatGrid.getNode(gridSize.x-1, 0);
422  v[1].lon = theLonGrid.getNode(gridSize.x-1, 0);
423  v[2].lat = theLatGrid.getNode(gridSize.x-1, gridSize.y-2);
424  v[2].lon = theLonGrid.getNode(gridSize.x-1, gridSize.y-2);
425  v[3].lat = theLatGrid.getNode(0, gridSize.y-2);
426  v[3].lon = theLonGrid.getNode(0, gridSize.y-2);
427 
428  // Guaranty longitude values are -180 to 180
429  for (int i=0; i<4; i++)
430  {
431  if (v[i].lon > 180.0)
432  v[i].lon -= 360.0;
433  }
434 
436 
437  theImageSize = ossimDpt(imageBounds.width(), imageBounds.height());
438  theRefImgPt = imageBounds.midPoint();
441 
442  ossimDpt ref_ip_dx (theRefImgPt.x+1.0, theRefImgPt.y );
443  ossimDpt ref_ip_dy (theRefImgPt.x , theRefImgPt.y+1.0);
444  ossimGpt ref_gp_dx (theLatGrid(ref_ip_dx), theLonGrid(ref_ip_dx));
445  ossimGpt ref_gp_dy (theLatGrid(ref_ip_dy), theLonGrid(ref_ip_dy));
446 
447  theGSD.x = theRefGndPt.distanceTo(ref_gp_dx);
448  theGSD.y = theRefGndPt.distanceTo(ref_gp_dy);
449 
450  theMeanGSD = (theGSD.line + theGSD.samp)/2.0;
451  theImageClipRect = imageBounds;
452  theSubImageOffset = imageBounds.ul();
453 }
double samp
Definition: ossimDpt.h:164
const ossimIpt & size() const
Definition: ossimDblGrid.h:187
double y
Definition: ossimDpt.h:165
ossim_uint32 height() const
Definition: ossimIrect.h:487
const ossimIpt & ul() const
Definition: ossimIrect.h:274
double distanceTo(const ossimGpt &arg_gpt) const
METHOD: distanceTo(ossimGpt) Computes straight-line distance in meters between this and arg gpt: ...
Definition: ossimGpt.cpp:431
ossimDpt theSubImageOffset
double line
Definition: ossimDpt.h:165
double lat
Definition: ossimDpt.h:165
ossim_float64 lon
Definition: ossimGpt.h:266
ossimIpt midPoint() const
Definition: ossimIrect.h:750
ossimPolygon theBoundGndPolygon
double getNode(const ossimIpt &p) const
Definition: ossimDblGrid.h:111
ossim_uint32 width() const
Definition: ossimIrect.h:500
ossimDrect theImageClipRect
double x
Definition: ossimDpt.h:164
ossim_float64 lat
Definition: ossimGpt.h:265
ossim_float64 theMeanGSD
const ossimDpt & spacing() const
Definition: ossimDblGrid.h:189

◆ isAffectedByElevation()

bool ossimCoarseGridModel::isAffectedByElevation ( ) const
virtual

image to ground faster

Overrides base ossimSensorModel::isAffectedByElevation method.

Returns
true if height enabled, false if not.

Reimplemented from ossimSensorModel.

Definition at line 1055 of file ossimCoarseGridModel.cpp.

References theHeightEnabledFlag.

1056 {
1057  return theHeightEnabledFlag;
1058 }

◆ lineSampleHeightToWorld()

void ossimCoarseGridModel::lineSampleHeightToWorld ( const ossimDpt image_point,
const double &  heightEllipsoid,
ossimGpt world_pt 
) const
virtual

This is the virtual that performs the actual work of projecting the image point to the earth at some specified elevation.

Implements ossimSensorModel.

Definition at line 513 of file ossimCoarseGridModel.cpp.

Referenced by extrapolate(), lineSampleToWorld(), and ossimH5GridModel::worldToLineSample().

516 {
517  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::lineSampleHeightToWorld: entering..." << std::endl;
518 
519  if(theLatGrid.size().x < 1 ||
520  theLatGrid.size().y < 1)
521  {
522  worldPt.makeNan();
523  return;
524  }
525 
526  double height = (ossim::isnan(arg_hgt_above_ellipsoid)) ? 0.0 : arg_hgt_above_ellipsoid;
527 
528  // Note that there is no check for image point outside of valid image rect because this model
529  // uses the extrapolation inherent to the ossimDblGrid.
530 
531  // The image point may correspond to an offset sub-image. Need to convert
532  // to full image space before anything:
533  ossimDpt ip = lineSampPt + theSubImageOffset;
534 
535  // Establish the interpolated values from the grids:
536  worldPt.lat = theLatGrid(ip);
537  worldPt.lon = theLonGrid(ip);
538  worldPt.hgt = height;
539 
541  {
542  // Adjust horizontally due to elevation:
543  worldPt.lat += theDlatDhGrid(ip)*height;
544  worldPt.lon += theDlonDhGrid(ip)*height;
545  }
546  int numberOfParams = getNumberOfAdjustableParameters();
547 
548  // Now add increments due to adjustable parameter deltas:
549  for (int p=0; p<numberOfParams; p++)
550  {
551  worldPt.lat += (theDlatDparamGrid[p](ip) * computeParameterOffset(p));
552  worldPt.lon += (theDlonDparamGrid[p](ip) * computeParameterOffset(p));
553  }
554 
555  worldPt.limitLonTo180();
556 
557  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::lineSampleHeightToWorld: returning..." << std::endl;
558 }
const ossimIpt & size() const
Definition: ossimDblGrid.h:187
ossimDpt theSubImageOffset
double lat
Definition: ossimDpt.h:165
ossim_int32 y
Definition: ossimIpt.h:142
ossim_int32 x
Definition: ossimIpt.h:141
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

◆ lineSampleToWorld()

void ossimCoarseGridModel::lineSampleToWorld ( const ossimDpt image_point,
ossimGpt world_point 
) const
virtual

Implementation of base-class pure virtual projection methods. These methods may be overriden by derived classes if those have more efficient schemes. The implementations here are iterative (relatively slow). Both depend on calls to the pure virtual lineSampleHeightToWorld() method.

Reimplemented from ossimSensorModel.

Definition at line 483 of file ossimCoarseGridModel.cpp.

References extrapolate(), ossimSensorModel::insideImage(), lineSampleHeightToWorld(), ossimSensorModel::lineSampleToWorld(), and theHeightEnabledFlag.

485 {
487  {
488  //
489  // Extrapolate if image point is outside image:
490  //
491  if (!insideImage(image_point))
492  {
493  gpt = extrapolate(image_point);
494  return;
495  }
496 
497  lineSampleHeightToWorld(image_point, 0.0, gpt);
498  }
499  else
500  {
501  ossimSensorModel::lineSampleToWorld(image_point, gpt);
502  }
503 }
virtual void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &world_point) const
virtual ossimGpt extrapolate(const ossimDpt &imgPt, const double &height=ossim::nan()) const
Implements its own extrapolation since this can be handled by ossimDblGrid.
virtual bool insideImage(const ossimDpt &p) 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 ...

◆ loadCoarseGrid()

bool ossimCoarseGridModel::loadCoarseGrid ( const ossimFilename cgFileName)

Loads the coarse grid from the specified file.

Returns
Returns true if successful.

Definition at line 855 of file ossimCoarseGridModel.cpp.

856 {
857  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadCoarseGrid: entering..." << std::endl;
858 
859  ossimDpt v[4];
860  ossimIpt grid_size;
861 
862  //***
863  // Open existing grid file:
864  //***
865  ifstream instream (cgFileName.chars());
866  if (!instream.is_open())
867  {
868  theErrorStatus++;
869  if(traceDebug())
870  {
871  ossimNotify(ossimNotifyLevel_FATAL) << "FATAL ossimCoarseGridModel::loadCoarseGrid: Error encountered opening coarse grid file <" << cgFileName
872  << ">. Check that the file exists and is readable." << std::endl;
873  }
874  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "CEBUG ossimCoarseGridModel::loadCoarseGrid: returning with error..." << std::endl;
875  return false;
876  }
877  theGridFilename = cgFileName;
879  {
880  delete [] theDlatDparamGrid;
881  theDlatDparamGrid = NULL;
882  }
884  {
885  delete [] theDlonDparamGrid;
886  theDlonDparamGrid = NULL;
887  }
888  //
889  // Reallocate memory:
890  //
891  int numberOfParams = getNumberOfAdjustableParameters();
892  if(numberOfParams)
893  {
894  theDlatDparamGrid = new ossimDblGrid [numberOfParams];
895  theDlonDparamGrid = new ossimDblGrid [numberOfParams];
896  }
897  //***
898  // Let each grid object read itself from the input file:
899  //***
900  if (!theLatGrid.load(instream))
901  {
902  ++theErrorStatus;
903  return false;
904  }
905  if (!theLonGrid.load(instream))
906  {
907  ++theErrorStatus;
908  return false;
909  }
910  if (!theDlatDhGrid.load(instream))
911  {
912  ++theErrorStatus;
913  return false;
914  }
915  if (!theDlonDhGrid.load(instream))
916  {
917  ++theErrorStatus;
918  return false;
919  }
920 
921  for (int p=0; p<numberOfParams; p++)
922  {
923  if (!theDlatDparamGrid[p].load(instream))
924  {
925  ++theErrorStatus;
926  return false;
927  }
928  if (!theDlonDparamGrid[p].load(instream))
929  {
930  ++theErrorStatus;
931  return false;
932  }
933  }
934 
935  //***
936  // Initialize the bounding ground rectangle:
937  //***
938  grid_size = theLatGrid.size();
939 
940  v[0].lat = theLatGrid(0,0);
941  v[0].lon = theLonGrid(0,0);
942  v[1].lat = theLatGrid(theImageSize.x-1, 0);
943  v[1].lon = theLonGrid(theImageSize.x-1, 0);
944  v[2].lat = theLatGrid(theImageSize.x-1, theImageSize.y-1);
945  v[2].lon = theLonGrid(theImageSize.x-1, theImageSize.y-1);
946  v[3].lat = theLatGrid(0, theImageSize.y-1);
947  v[3].lon = theLonGrid(0, theImageSize.y-1);
948 
950 
951  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadCoarseGrid: returning..." << std::endl;
952  return true;
953 }
std::basic_ifstream< char > ifstream
Class for char input file streams.
Definition: ossimIosFwd.h:44
const ossimIpt & size() const
Definition: ossimDblGrid.h:187
bool load(std::istream &is)
double lat
Definition: ossimDpt.h:165
const char * chars() const
For backward compatibility.
Definition: ossimString.h:77
ossimPolygon theBoundGndPolygon
double lon
Definition: ossimDpt.h:164
ossim_int32 y
Definition: ossimIpt.h:142
ossim_int32 x
Definition: ossimIpt.h:141
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ loadState()

bool ossimCoarseGridModel::loadState ( const ossimKeywordlist kwl,
const char *  prefix = 0 
)
virtual

Fulfills ossimObject base-class pure virtuals.

Loads geometry KWL files.

Returns
Returns true if successful.

Reimplemented from ossimSensorModel.

Reimplemented in ossimH5GridModel.

Definition at line 680 of file ossimCoarseGridModel.cpp.

682 {
683  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadState: entering..." << std::endl;
684 
686  const char* value;
687  bool success;
688 
689  //***
690  // Assure this keywordlist contains correct type info:
691  //***
692  value = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
693  if (!value || (strcmp(value, "ossimCoarseGridModel")))
694  {
695  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadState: returning..." << std::endl;
696  theErrorStatus++;
697  return false;
698  }
699  value = kwl.find(prefix, "height_enabled_flag");
700  if(value)
701  {
703  }
704 
705  //***
706  // Pass on to the base-class for parsing first:
707  //***
708  success = ossimSensorModel::loadState(kwl, prefix);
709  if (!success)
710  {
711  theErrorStatus++;
712  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadState: returning with error..." << std::endl;
713  return false;
714  }
715 
716  //***
717  // Look for geom filename or explicit grid filename to establish path to grid:
718  //***
719  theGridFilename = kwl.find(prefix, GRID_FILE_NAME_KW);
720 
722  {
723  //---
724  // This is set in ossimProjectionFactoryBase::createProjectionFromGeometryFile
725  // so we can derive the dot.ocg from it.
726  //---
727  ossimFilename alt_path_to_grid = kwl.find("kwl_source");
729 
731  {
732  ossimFilename alt_path_to_grid = kwl.find(prefix, ossimKeywordNames::GEOM_FILE_KW);
734  }
735  }
736 
738  {
739  ossimNotify(ossimNotifyLevel_FATAL) << "ossimCoarseGridModel::loadState() -- Error "
740  "encountered opening coarse grid file at "<< "<" <<theGridFilename << ">." << std::endl;
741  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadState: returning with error..." << std::endl;
742  theErrorStatus++;
743  return false;
744  }
745 
746  // Load the coarse grid file specified in KWL. This method resets the
747  // theErrorStatus to OSSIM_OK if successful:
749  {
750  theErrorStatus++;
751  return false;
752  }
753 
754  // crossesDateline legacy. No longer saved.
755  bool crossesDateline = false;
756  kwl.getBoolKeywordValue(crossesDateline, CROSSES_DATELINE_KW, prefix);
757  if (crossesDateline)
759 
760  // Add the coarse grid filename to list of support files being referenced for logging purposes:
762 
763  ossimString initAdjPrefix = ossimString(prefix) + "init_adjustment.";
764  theInitialAdjustment.loadState(kwl, initAdjPrefix.c_str());
765 
766  if((ossim::isnan(theRefGndPt.hgt)) ||
767  (theRefGndPt.hgt == 0))
768  {
770  if(theRefGndPt.hgt < 0)
771  {
772  theRefGndPt.hgt = fabs(theRefGndPt.hgt);
773  }
774  }
775 
777  {
779  }
780  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::loadState: returning..." << std::endl;
781  if (theErrorStatus)
782  return false;
783 
784  return true;
785 }
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
const char * find(const char *key) const
ossimFilename expand() const
Method to do file name expansion.
ossim_uint32 getNumberOfAdjustableParameters() const
bool loadState(const ossimKeywordlist &kwl, const ossimString &prefix=ossimString(""))
void setDomainType(DomainType dt)
Definition: ossimDblGrid.h:156
ossim_float64 hgt
Height in meters above the ellipsiod.
Definition: ossimGpt.h:274
static ossimElevManager * instance()
METHOD: instance() Implements singelton pattern.
static const char * TYPE_KW
bool loadCoarseGrid(const ossimFilename &cgFileName)
Loads the coarse grid from the specified file.
void add(const ossimFilename &f)
Add support data filename to the list:
virtual double getHeightAboveEllipsoid(const ossimGpt &gpt)
bool toBool() const
String to numeric methods.
const ossimFilename DEFAULT_GRID_FILE_EXT("ocg")
static const char * GEOM_FILE_KW
bool getBoolKeywordValue(bool &rtn_val, const char *keyword, const char *prefix=0) const
[OLK, Aug/2008] Sets the boolean <rtn_val> depending on value associated with keyword for values = (y...
bool isReadable() const
ossimAdjustmentInfo theInitialAdjustment
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 getAdjustment(ossimAdjustmentInfo &adj) const
static ossimSupportFilesList * instance()
ossimFilename & setExtension(const ossimString &e)
Sets the extension of a file name.
bool crossesDateline(H5::DataSet &dataset, const ossimIrect &validRect)
Checks for dateline cross.
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.
Definition: ossimCommon.h:91

◆ print()

std::ostream & ossimCoarseGridModel::print ( std::ostream &  out) const
virtual

Extends base-class implementation.

Dumps contents of object to ostream.

Reimplemented from ossimSensorModel.

Definition at line 591 of file ossimCoarseGridModel.cpp.

References ossimDblGrid::getNode(), ossimDblGrid::size(), size, ossimDblGrid::spacing(), ossimSensorModel::theBoundGndPolygon, theDlatDhGrid, theDlonDhGrid, theGridFilename, ossimSensorModel::theGSD, ossimSensorModel::theImageID, ossimSensorModel::theImageSize, theLatGrid, theLonGrid, ossimSensorModel::theRefGndPt, ossimSensorModel::theRefImgPt, ossimSensorModel::theSensorID, ossimIpt::x, and ossimIpt::y.

592 {
593  out << "\nDump of ossimCoarseGridModel object at: " << this << "\n"
594  << "\n Grid File Name: " << theGridFilename
595  << "\n Image ID: " << theImageID
596  << "\n Sensor: " << theSensorID
597  << "\n Image Size (rows, cols): " << theImageSize
598  << "\n Ref Pt (samp, line): " << theRefImgPt
599  << "\n Ref Pt (lat, lon, hgt): " << theRefGndPt
600  << "\n GSD (row, col): " << theGSD
601  << "\n Bounding Ground Polygon: " << theBoundGndPolygon << endl;
602 // << "\n Number of Params: " << theNumParams << "\n"<<endl;
603 
604  char buf[256];
606  ossimDpt spacing (theLatGrid.spacing());
607  int line, samp;
608  ossimIpt node;
609 
610  out << "[ line, samp] lat lon dLat/dH dLon/dH\n"
611  << "-------------------------------------------------------------------"
612  <<endl;
613 
614  for (node.y=0; node.y<size.y; node.y++)
615  {
616  line = (int) (node.y*spacing.y);
617 
618  for (node.x=0; node.x<size.x; node.x++)
619  {
620  samp = (int) (node.x*spacing.x);
621 
622  sprintf(buf, "[%5d, %5d] %+9.5f %+10.5f %+11.4e %+11.4e",
623  line, samp,
624  theLatGrid.getNode(node),
625  theLonGrid.getNode(node),
626  theDlatDhGrid.getNode(node),
627  theDlonDhGrid.getNode(node));
628  out << buf << endl;
629  }
630  out <<"-----------------------------------------------------------------"
631  <<endl;
632  }
633 
634  out << "\n\nDump of lat/lon Partials w.r.t. Adjustable Parameters:"<<endl;
635  out << "\nEnd Dump of ossimCoarseGridModel.\n" << endl;
636  return out;
637 }
ossimString theSensorID
ossimString theImageID
const ossimIpt & size() const
Definition: ossimDblGrid.h:187
yy_size_t size
ossimPolygon theBoundGndPolygon
double getNode(const ossimIpt &p) const
Definition: ossimDblGrid.h:111
ossim_int32 y
Definition: ossimIpt.h:142
ossim_int32 x
Definition: ossimIpt.h:141
const ossimDpt & spacing() const
Definition: ossimDblGrid.h:189

◆ reallocateGrid()

void ossimCoarseGridModel::reallocateGrid ( const ossimIpt size)
protected

Deletes existing allocated memory and reallocates new space.

This may happen if a new grid is loaded over an existing one.

Definition at line 962 of file ossimCoarseGridModel.cpp.

963 {
964  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::reallocateGrid:entering..." << endl;
965 
966 
967  //***
968  // Deallocate memory:
969  //***
971  {
972  delete [] theDlatDparamGrid;
973  theDlatDparamGrid = NULL;
974  }
976  {
977  delete [] theDlonDparamGrid;
978  theDlonDparamGrid = NULL;
979  }
980  //***
981  // determine grid spacing given new info:
982  //***
983  ossimDpt spacing ((double)(theImageSize.x-1)/(double)(grid_size.x-1),
984  (double)(theImageSize.y-1)/(double)(grid_size.y-1));
985 
986  //***
987  // Allocate all:
988  //***
989  ossimDpt grid_origin(0.0, 0.0);
994  theLatGrid.initialize(grid_size, grid_origin, spacing);
995  theLonGrid.initialize(grid_size, grid_origin, spacing);
996  theDlatDhGrid.initialize(grid_size, grid_origin, spacing);
997  theDlonDhGrid.initialize(grid_size, grid_origin, spacing);
998 
999  int numberOfParams = getNumberOfAdjustableParameters();
1000  if(numberOfParams)
1001  {
1002 
1003  theDlatDparamGrid = new ossimDblGrid [numberOfParams];
1004  theDlonDparamGrid = new ossimDblGrid [numberOfParams];
1005  }
1006  for (int p=0; p<numberOfParams; p++)
1007  {
1010  theDlatDparamGrid[p].initialize(grid_size, grid_origin, spacing);
1011  theDlonDparamGrid[p].initialize(grid_size, grid_origin, spacing);
1012  }
1013 
1014  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::reallocateGrid: returning..." << std::endl;
1015  return;
1016 }
double nan()
Method to return ieee floating point double precision NAN.
Definition: ossimCommon.h:135
void setNullValue(double value)
Definition: ossimDblGrid.h:183
void initialize(const ossimIpt &size, const ossimDpt &origin, const ossimDpt &spacing, double null_value=OSSIM_DEFAULT_NULL_PIX_DOUBLE)
ossim_int32 y
Definition: ossimIpt.h:142
ossim_int32 x
Definition: ossimIpt.h:141
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ saveCoarseGrid()

bool ossimCoarseGridModel::saveCoarseGrid ( const ossimFilename cgFileName) const

Saves the coarse grid to the specified file.

Returns
Returns true if successful.

Definition at line 795 of file ossimCoarseGridModel.cpp.

Referenced by ossimHdf5Tool::execute().

796 {
797  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveCoarseGrid: entering..." << std::endl;
798 
799  // Create and open grid file as stream:
800  theGridFilename = fileName.expand();
802  ofstream outstream (theGridFilename.chars());
803  if (!outstream.is_open())
804  {
805  theErrorStatus++;
806  ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveCoarseGrid: Error "
807  "encountered creating coarse grid file <" << theGridFilename<< ">. Check that directory "
808  "exists and is writable." << std::endl;
809  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveCoarseGrid: returning with error..." << std::endl;
810  return false;
811  }
812 
813  // Let each grid object write itself to the output file:
814  theLatGrid.save(outstream, "Latitude Grid");
815  theLonGrid.save(outstream, "Longitude Grid");
816  theDlatDhGrid.save(outstream, "dLat/dH Grid");
817  theDlonDhGrid.save(outstream, "dLon_dH Grid");
818 
819  ossimString descr;
820  int numberOfParams = getNumberOfAdjustableParameters();
821  for (int p=0; p<numberOfParams; p++)
822  {
823  descr = getParameterDescription(p) + " dLat_dParam Grid";
824  theDlatDparamGrid[p].save(outstream, descr.chars());
825  descr = getParameterDescription(p) + " dLon_dParam Grid";
826  theDlonDparamGrid[p].save(outstream, descr.chars());
827  }
828 
829  // Since the geom file is needed in the same path as the grid file, take this opportunity to
830  // write the geom file out as well:
831  ossimFilename geom_file (theGridFilename);
832  geom_file.setExtension(DEFAULT_GEOM_FILE_EXT);
833  ossimKeywordlist kwl;
834  saveState(kwl);
835  kwl.write(geom_file);
836 
837  // Add to the list of support files referenced (though technically it has not yet been
838  // referenced, but will be next time this image is opened):
839  ossimSupportFilesList::instance()->add(geom_file);
841 
842  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveCoarseGrid: returning..." << std::endl;
843  return true;
844 }
Represents serializable keyword/value map.
ossimFilename expand() const
Method to do file name expansion.
virtual bool write(const char *file, const char *comment=0) const
Methods to dump the ossimKeywordlist to a file on disk.
ossimString getParameterDescription(ossim_uint32 idx) const
void add(const ossimFilename &f)
Add support data filename to the list:
const char * chars() const
For backward compatibility.
Definition: ossimString.h:77
const ossimFilename DEFAULT_GRID_FILE_EXT("ocg")
const ossimFilename DEFAULT_GEOM_FILE_EXT("geom")
bool save(std::ostream &os, const char *descr) const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Fulfills ossimObject base-class pure virtuals.
std::basic_ofstream< char > ofstream
Class for char output file streams.
Definition: ossimIosFwd.h:47
static ossimSupportFilesList * instance()
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
ossimFilename & setExtension(const ossimString &e)
Sets the extension of a file name.
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ saveState()

bool ossimCoarseGridModel::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 ossimSensorModel.

Reimplemented in ossimH5GridModel, ossimHdf5GridModel, and ossimEnviCgModel.

Definition at line 647 of file ossimCoarseGridModel.cpp.

Referenced by ossimEnviCgModel::saveState(), ossimHdf5GridModel::saveState(), and ossimH5GridModel::saveState().

649 {
650  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveState: entering..." << std::endl;
651 
652  kwl.add(prefix, ossimKeywordNames::TYPE_KW, "ossimCoarseGridModel");
653 
654  //---
655  // Save just the file part so that the geometry stuff is relocatable.
656  // Code was added to ossimProjectionFactoryBase::createProjectionFromGeometryFile
657  // to handle this.
658  //---
659  kwl.add( prefix, GRID_FILE_NAME_KW, theGridFilename.file() );
660 
661  kwl.add(prefix, "height_enabled_flag", theHeightEnabledFlag, true);
662  ossimSensorModel::saveState(kwl, prefix);
663  ossimString initAdjPrefix = ossimString(prefix) + "init_adjustment.";
664  theInitialAdjustment.saveState(kwl, initAdjPrefix);
665 
666  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::saveState: returning..." << std::endl;
667 
668  return true;
669 }
static const char * TYPE_KW
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
bool saveState(ossimKeywordlist &kwl, const ossimString &prefix=ossimString("")) const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
ossimAdjustmentInfo theInitialAdjustment
ossimFilename file() const
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

◆ setInterpolationError()

void ossimCoarseGridModel::setInterpolationError ( double  error = .1)
static

This is used when building a grid from a projector.

You can set the interpolation error. The default is subpixel accuracy (within .1 of a pixel).

Definition at line 399 of file ossimCoarseGridModel.cpp.

References theInterpolationError.

Referenced by ossimplugins::ossimGeometricSarSensorModel::createReplacementOCG().

400 {
401  theInterpolationError = error;
402 }
static double theInterpolationError

◆ setMinGridSpacing()

void ossimCoarseGridModel::setMinGridSpacing ( ossim_int32  minSpacing = 100)
static

Definition at line 404 of file ossimCoarseGridModel.cpp.

References theMinGridSpacing.

405 {
406  theMinGridSpacing = minSpacing;
407 }
static ossim_int32 theMinGridSpacing

◆ useForward()

virtual bool ossimCoarseGridModel::useForward ( ) const
inlinevirtual

ossimOptimizableProjection

Implements ossimOptimizableProjection.

Definition at line 111 of file ossimCoarseGridModel.h.

111 {return false;}

◆ writeGeomTemplate()

void ossimCoarseGridModel::writeGeomTemplate ( ostream &  os)
static

Writes a template of geometry keywords processed by loadState and saveState to output stream.

Definition at line 1024 of file ossimCoarseGridModel.cpp.

1025 {
1026  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::writeGeomTemplate: entering..." << std::endl;
1027 
1028  os <<
1029  "//**************************************************************\n"
1030  "// Template for OCG model kewordlist\n"
1031  "//**************************************************************\n"
1032  << ossimKeywordNames::TYPE_KW << ": " << MODEL_TYPE << endl;
1033 
1035 
1036  os << "//\n"
1037  << "// Derived-class ossimCoarseGridModel Keywords:\n"
1038  << "//\n"
1039  << GRID_FILE_NAME_KW << ": <string>\n" << endl;
1040 
1041  if (traceExec()) ossimNotify(ossimNotifyLevel_DEBUG) << "DEBUG ossimCoarseGridModel::writeGeomTemplate: returning..." << std::endl;
1042  return;
1043 }
static const char * TYPE_KW
static void writeGeomTemplate(ostream &os)
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)

Member Data Documentation

◆ theDlatDhGrid

ossimDblGrid ossimCoarseGridModel::theDlatDhGrid
protected

◆ theDlatDparamGrid

ossimDblGrid* ossimCoarseGridModel::theDlatDparamGrid
protected

Definition at line 134 of file ossimCoarseGridModel.h.

Referenced by buildGrid().

◆ theDlonDhGrid

ossimDblGrid ossimCoarseGridModel::theDlonDhGrid
protected

◆ theDlonDparamGrid

ossimDblGrid* ossimCoarseGridModel::theDlonDparamGrid
protected

Definition at line 135 of file ossimCoarseGridModel.h.

Referenced by buildGrid().

◆ theGridFilename

ossimFilename ossimCoarseGridModel::theGridFilename
mutableprotected

Definition at line 129 of file ossimCoarseGridModel.h.

Referenced by print().

◆ theHeightEnabledFlag

bool ossimCoarseGridModel::theHeightEnabledFlag
protected

◆ theInitialAdjustment

ossimAdjustmentInfo ossimCoarseGridModel::theInitialAdjustment
protected

Definition at line 139 of file ossimCoarseGridModel.h.

Referenced by initAdjustableParameters().

◆ theInterpolationError

double ossimCoarseGridModel::theInterpolationError = .1
staticprotected

Definition at line 137 of file ossimCoarseGridModel.h.

Referenced by setInterpolationError().

◆ theLatGrid

ossimDblGrid ossimCoarseGridModel::theLatGrid
protected

◆ theLonGrid

ossimDblGrid ossimCoarseGridModel::theLonGrid
protected

◆ theMinGridSpacing

ossim_int32 ossimCoarseGridModel::theMinGridSpacing = 100
staticprotected

Definition at line 138 of file ossimCoarseGridModel.h.

Referenced by setMinGridSpacing().


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