42 static ossimTrace traceExec (
"ossimCoarseGridModel:exec");
43 static ossimTrace traceDebug (
"ossimCoarseGridModel:debug");
45 static const char* MODEL_TYPE =
"ossimCoarseGridModel";
46 static const char* GRID_FILE_NAME_KW =
"grid_file_name";
47 static const char* CROSSES_DATELINE_KW =
"crosses_dateline";
61 theDlatDparamGrid (0),
62 theDlonDparamGrid (0),
63 theHeightEnabledFlag(
true)
66 <<
"DEBUG ossimCoarseGridModel::ossimCoarseGridModel: entering..." 77 <<
"DEBUG ossimCoarseGridModel::ossimCoarseGridModel: returning..." 88 theGridFilename (model.theGridFilename),
89 theLatGrid (model.theLatGrid),
90 theLonGrid (model.theLonGrid),
91 theDlatDhGrid (model.theDlatDhGrid),
92 theDlonDhGrid (model.theDlonDhGrid),
93 theDlatDparamGrid (0),
94 theDlonDparamGrid (0),
95 theHeightEnabledFlag(
true)
98 <<
"DEBUG ossimCoarseGridModel::ossimCoarseGridModel(model): entering..." 110 for (
int i=0; i<numberOfParams; i++)
118 <<
"DEBUG ossimCoarseGridModel::ossimCoarseGridModel: returning..." 131 theDlatDparamGrid (0),
132 theDlonDparamGrid (0),
133 theHeightEnabledFlag(
true)
166 theDlatDparamGrid (0),
167 theDlonDparamGrid (0),
168 theHeightEnabledFlag(
true)
187 bool enableHeightFlag,
188 bool makeAdjustableFlag)
192 buildGrid(imageBounds, geom.
get(), heightDelta, enableHeightFlag, makeAdjustableFlag);
202 bool enableHeightFlag,
203 bool makeAdjustableFlag)
222 double normSplit = 1.0;
228 (double)(imageBounds.
height()-1)/(gridSize.
y-1));
250 spacing =
ossimDpt((
double)(imageBounds.
width()-1)/(gridSize.
x-1),
251 (double)(imageBounds.
height()-1)/(gridSize.
y-1));
265 for(
y = 0;
y < gridSize.
y; ++
y)
267 for(
x = 0;
x < gridSize.
x; ++
x)
269 ossimDpt norm((
double)
x/(
double)(gridSize.
x-1),
270 (
double)
y/(
double)(gridSize.
y-1));
305 ossimDpt norm((
double)
x/(
double)(upperX-1),
306 (
double)
y/(
double)(upperY-1));
314 error = (testIpt-imagePoint).length();
330 if(adjustableParameters&&makeAdjustableFlag)
344 for(
int paramIdx = 0; paramIdx < numberOfParams; ++ paramIdx)
364 for(
int y = 0;
y < gridSize.
y; ++
y)
366 for(
int x = 0;
x < gridSize.
x; ++
x)
368 ossimDpt norm((
double)
x/(
double)(gridSize.
x-1),
369 (
double)
y/(
double)(gridSize.
y-1));
429 for (
int i=0; i<4; i++)
431 if (v[i].lon > 180.0)
462 <<
"DEBUG ossimCoarseGridModel::~ossimCoarseGridModel: entering..." 476 <<
"DEBUG ossimCoarseGridModel::~ossimCoarseGridModel: returning..." 514 const double& arg_hgt_above_ellipsoid,
526 double height = (
ossim::isnan(arg_hgt_above_ellipsoid)) ? 0.0 : arg_hgt_above_ellipsoid;
538 worldPt.
hgt = height;
549 for (
int p=0; p<numberOfParams; p++)
593 out <<
"\nDump of ossimCoarseGridModel object at: " <<
this <<
"\n" 600 <<
"\n GSD (row, col): " <<
theGSD 610 out <<
"[ line, samp] lat lon dLat/dH dLon/dH\n" 611 <<
"-------------------------------------------------------------------" 614 for (node.
y=0; node.
y<
size.y; node.
y++)
616 line = (int) (node.
y*spacing.y);
618 for (node.
x=0; node.
x<
size.x; node.
x++)
620 samp = (int) (node.
x*spacing.x);
622 sprintf(buf,
"[%5d, %5d] %+9.5f %+10.5f %+11.4e %+11.4e",
630 out <<
"-----------------------------------------------------------------" 634 out <<
"\n\nDump of lat/lon Partials w.r.t. Adjustable Parameters:"<<endl;
635 out <<
"\nEnd Dump of ossimCoarseGridModel.\n" << endl;
648 const char* prefix)
const 693 if (!value || (strcmp(value,
"ossimCoarseGridModel")))
699 value = kwl.
find(prefix,
"height_enabled_flag");
740 "encountered opening coarse grid file at "<<
"<" <<
theGridFilename <<
">." << std::endl;
803 if (!outstream.is_open())
807 "encountered creating coarse grid file <" <<
theGridFilename<<
">. Check that directory " 808 "exists and is writable." << std::endl;
821 for (
int p=0; p<numberOfParams; p++)
835 kwl.
write(geom_file);
866 if (!instream.is_open())
872 <<
">. Check that the file exists and is readable." << std::endl;
921 for (
int p=0; p<numberOfParams; p++)
1006 for (
int p=0; p<numberOfParams; p++)
1029 "//**************************************************************\n" 1030 "// Template for OCG model kewordlist\n" 1031 "//**************************************************************\n" 1037 <<
"// Derived-class ossimCoarseGridModel Keywords:\n" 1039 << GRID_FILE_NAME_KW <<
": <string>\n" << endl;
void reallocateGrid(const ossimIpt &size)
Deletes existing allocated memory and reallocates new space.
virtual bool isAffectedByElevation() const
image to ground faster
void setParameterDescription(ossim_uint32 idx, const ossimString &descrption)
virtual void initAdjustableParameters()
double computeParameterOffset(ossim_uint32 idx) const
void setProjection(ossimProjection *projection)
Sets the projection to be used for local-to-world coordinate transformation.
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
ossim_float64 width() const
static double theInterpolationError
static void setMinGridSpacing(ossim_int32 minSpacing=100)
double lond() const
Will convert the radian measure to degrees.
Represents serializable keyword/value map.
bool addFile(const char *file)
std::basic_ifstream< char > ifstream
Class for char input file streams.
const char * find(const char *key) const
ossimDblGrid theDlatDhGrid
ossimFilename expand() const
Method to do file name expansion.
ossim_uint32 getNumberOfAdjustableParameters() const
bool loadState(const ossimKeywordlist &kwl, const ossimString &prefix=ossimString(""))
double nan()
Method to return ieee floating point double precision NAN.
const ossimDpt & ul() const
const ossimIpt & size() const
ossim_uint32 height() const
virtual void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &gpt) const
void setDomainType(DomainType dt)
void setNullValue(double value)
const ossimIpt & ul() const
void initialize(const ossimIpt &size, const ossimDpt &origin, const ossimDpt &spacing, double null_value=OSSIM_DEFAULT_NULL_PIX_DOUBLE)
ossim_float64 hgt
Height in meters above the ellipsiod.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Fulfills ossimObject base-class pure virtuals.
static ossimElevManager * instance()
METHOD: instance() Implements singelton pattern.
virtual void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &world_point) const
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.
double latd() const
Will convert the radian measure to degrees.
ossim_uint32 getNumberOfAdjustableParameters() const
virtual bool write(const char *file, const char *comment=0) const
Methods to dump the ossimKeywordlist to a file on disk.
double distanceTo(const ossimGpt &arg_gpt) const
METHOD: distanceTo(ossimGpt) Computes straight-line distance in meters between this and arg gpt: ...
virtual ossimGpt extrapolate(const ossimDpt &imgPt, const double &height=ossim::nan()) const
Implements its own extrapolation since this can be handled by ossimDblGrid.
static const char * TYPE_KW
void changeDatum(const ossimDatum *datum)
This will actually perform a shift.
void enableExtrapolation(bool arg=true)
void limitLonTo180()
METHOD: limitLonTo180() Converts the lon data member to a value between -180 and +180: ...
ossimDpt imageSize() const
ossimString getParameterDescription(ossim_uint32 idx) const
void setAdjustment(const ossimAdjustmentInfo &adj, bool notify=false)
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
bool loadCoarseGrid(const ossimFilename &cgFileName)
Loads the coarse grid from the specified file.
ossimDpt theSubImageOffset
void add(const ossimFilename &f)
Add support data filename to the list:
static ossim_int32 theMinGridSpacing
ossimUnitType getParameterUnit(ossim_uint32 idx) const
bool load(std::istream &is)
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...
virtual void clearErrorStatus() const
bool localToWorld(const ossimDpt &local_pt, ossimGpt &world_pt) const
Exposes the 3D projection from image to world coordinates.
virtual double getHeightAboveEllipsoid(const ossimGpt &gpt)
ossimIpt midPoint() const
static void setInterpolationError(double error=.1)
This is used when building a grid from a projector.
bool saveState(ossimKeywordlist &kwl, const ossimString &prefix=ossimString("")) const
virtual std::ostream & print(std::ostream &out) const
Extends base-class implementation.
bool toBool() const
String to numeric methods.
virtual void lineSampleHeightToWorld(const ossimDpt &lineSampPt, const double &heightAboveEllipsoid, ossimGpt &worldPt) const =0
void newAdjustment(ossim_uint32 numberOfParameters=0)
const char * chars() const
For backward compatibility.
double getAdjustableParameter(ossim_uint32 idx) const
ossimPolygon theBoundGndPolygon
void addAdjustment(const ossimAdjustmentInfo &adj, bool notify)
static ossimDatumFactory * instance()
ossimFilename theGridFilename
const ossimFilename DEFAULT_GRID_FILE_EXT("ocg")
double getNode(const ossimIpt &p) const
void setParameterUnit(ossim_uint32 idx, ossimUnitType unit)
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const
static const char * GEOM_FILE_KW
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
ossim_uint32 width() const
ossimErrorCode theErrorStatus
const ossimFilename DEFAULT_GEOM_FILE_EXT("geom")
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...
ossim_float64 height() const
static void writeGeomTemplate(ostream &os)
bool theHeightEnabledFlag
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
bool save(std::ostream &os, const char *descr) const
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).
ossimDrect theImageClipRect
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Fulfills ossimObject base-class pure virtuals.
ossimDpt midPoint() const
virtual void setAdjustableParameter(ossim_uint32 idx, double value, bool notify=false)
virtual void setErrorStatus() const
bool saveCoarseGrid(const ossimFilename &cgFileName) const
Saves the coarse grid to the specified file.
void resizeAdjustableParameterArray(ossim_uint32 numberOfParameters)
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
ossimDblGrid theDlonDhGrid
void removeAllAdjustments()
void initializeModelParams(ossimIrect irect)
Initializes base class data members after grids have been assigned.
ossimFilename file() const
virtual bool insideImage(const ossimDpt &p) const
void getAdjustment(ossimAdjustmentInfo &adj) const
std::basic_ofstream< char > ofstream
Class for char output file streams.
static ossimSupportFilesList * instance()
const ossimDatum * wgs84() const
ossimDblGrid * theDlonDparamGrid
ossimDblGrid * theDlatDparamGrid
ossimFilename & setExtension(const ossimString &e)
Sets the extension of a file name.
void setParameterCenter(ossim_uint32 idx, double center, bool notify=false)
bool crossesDateline(H5::DataSet &dataset, const ossimIrect &validRect)
Checks for dateline cross.
RTTI_DEF1(ossimCoarseGridModel, "ossimCoarseGridModel", ossimSensorModel)
ossimFilename path() const
static void writeGeomTemplate(ostream &os)
Writes a template of geometry keywords processed by loadState and saveState to output stream...
void setParameterSigma(ossim_uint32 idx, double value, bool notify=false)
void setNode(const ossimIpt &p, const double &value)
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 ...
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
std::basic_ostream< char > ostream
Base class for char output streams.
double getParameterSigma(ossim_uint32 idx) const
const ossimDpt & spacing() const
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.