26 static ossimTrace traceDebug(
"ossimApplanixEcefModel:debug");
30 #ifdef OSSIM_ID_ENABLED 31 static const char OSSIM_ID[] =
"$Id: ossimApplanixEcefModel.cpp 23564 2015-10-02 14:12:25Z dburken $";
54 <<
"ossimApplanixEcefModel::ossimApplanixEcefModel DEBUG:" << endl;
55 #ifdef OSSIM_ID_ENABLED 92 <<
"ossimApplanixEcefModel Constructor caught Exception:\n" 93 << e.
what() << std::endl;
99 <<
"ossimApplanixEcefModel::ossimApplanixEcefModel DEBUG:" << endl;
100 #ifdef OSSIM_ID_ENABLED 154 ecf_ray_dir = ecf_ray_dir*(1.0/ecf_ray_dir.
magnitude());
205 const double& heightEllipsoid,
246 ossimDpt film (scale*camRayDir[0], scale*camRayDir[1]);
270 double degreePerMeter = 1.0/metersPerDegree;
275 double height = gpt.
height();
384 const char* prefix)
const 388 kwl.
add(prefix,
"type",
"ossimApplanixEcefModel",
true);
396 kwl.
add(prefix,
"ecef_platform_position",
416 std::cout <<
"ossimApplanixEcefModel::loadState: ......... entered" << std::endl;
433 const char* roll = kwl.
find(prefix,
"roll");
434 const char* pitch = kwl.
find(prefix,
"pitch");
435 const char* heading = kwl.
find(prefix,
"heading");
436 const char* principal_point = kwl.
find(prefix,
"principal_point");
437 const char* pixel_size = kwl.
find(prefix,
"pixel_size");
438 const char* focal_length = kwl.
find(prefix,
"focal_length");
439 const char* ecef_platform_position = kwl.
find(prefix,
"ecef_platform_position");
440 const char* latlonh_platform_position = kwl.
find(prefix,
"latlonh_platform_position");
441 const char* compute_gsd_flag = kwl.
find(prefix,
"compute_gsd_flag");
442 const char* eo_file = kwl.
find(prefix,
"eo_file");
443 const char* camera_file = kwl.
find(prefix,
"camera_file");
444 const char* eo_id = kwl.
find(prefix,
"eo_id");
472 theRoll = (*record)[rollIdx].toDouble();
473 thePitch = (*record)[pitchIdx].toDouble();
474 theHeading = (*record)[headingIdx].toDouble();
476 (*record)[yIdx].toDouble(),
477 (*record)[zIdx].toDouble());
512 if(ecef_platform_position)
514 std::vector<ossimString> splitString;
517 if(splitString.size() > 2)
520 splitString[1].toDouble(),
521 splitString[2].toDouble());
524 else if(latlonh_platform_position)
526 std::vector<ossimString> splitString;
529 std::string datumString;
530 double lat=0.0, lon=0.0, h=0.0;
531 if(splitString.size() > 2)
533 lat = splitString[0].toDouble();
534 lon = splitString[1].toDouble();
535 h = splitString[2].toDouble();
546 cameraKwl.
add(camera_file);
547 const char* sensor = cameraKwl.
find(
"sensor");
548 const char* image_size = cameraKwl.
find(prefix,
"image_size");
549 principal_point = cameraKwl.
find(
"principal_point");
550 focal_length = cameraKwl.
find(
"focal_length");
551 pixel_size = cameraKwl.
find(prefix,
"pixel_size");
552 focal_length = cameraKwl.
find(prefix,
"focal_length");
553 const char* distortion_units = cameraKwl.
find(prefix,
"distortion_units");
568 std::vector<ossimString> splitString;
572 if(splitString.size() == 2)
574 w = splitString[0].toDouble();
575 h = splitString[1].toDouble();
587 std::vector<ossimString> splitString;
590 if(splitString.size() == 2)
598 std::vector<ossimString> splitString;
601 if(splitString.size() == 1)
606 else if(splitString.size() == 2)
621 vector<ossimString> keys;
623 long numberOfDistortions = (long)keys.size();
626 std::vector<int> numberList(numberOfDistortions);
627 for(idx = 0; idx < numberList.size();++idx)
631 numberList[idx] = numberStr.
toInt();
633 std::sort(numberList.begin(), numberList.end());
634 double distance=0.0, distortion=0.0;
636 for(idx = 0; idx < numberList.size(); ++idx)
647 std::vector<ossimString> splitString;
649 tempString = tempString.
trim();
650 tempString.
split(splitString,
" ");
651 std::cout << splitString.size() << std::endl;
652 if(splitString.size() >= 2)
654 distance = splitString[0].toDouble();
655 distortion = splitString[1].toDouble();
659 tool.
setValue(distortion, unitType);
667 lensKwl.
add(
"convergence_threshold",
693 std::vector<ossimString> splitString;
696 if(splitString.size() == 2)
712 std::vector<ossimString> splitString;
715 if(splitString.size() == 1)
720 else if(splitString.size() == 2)
777 <<
"ossimApplanixEcefModel::loadState Caught Exception:\n" 778 << e.
what() << std::endl;
787 <<
"pitch: " <<
thePitch << std::endl
void setParameterDescription(ossim_uint32 idx, const ossimString &descrption)
ossimRefPtr< ossimMeanRadialLensDistortion > theLensDistortion
double computeParameterOffset(ossim_uint32 idx) const
static NEWMAT::Matrix createRotationYMatrix(double angle, ossimCoordSysOrientMode orientationMode=OSSIM_RIGHT_HANDED)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
double lond() const
Will convert the radian measure to degrees.
ossimEcefPoint intersectAboveEarthEllipsoid(const double &heightAboveEllipsoid, const ossimDatum *aDatum=ossimDatumFactory::instance() ->wgs84()) const
Represents serializable keyword/value map.
bool addFile(const char *file)
bool intersectRay(const ossimEcefRay &ray, ossimGpt &gpt, double defaultElevValue=0.0)
METHOD: intersectRay()
bool theExtrapolateGroundFlag
const char * find(const char *key) const
void setRollPitchHeading(double roll, double pitch, double heading)
const ossimDpt & ul() const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
static ossimString toString(bool aValue)
Numeric to string methods.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
NEWMAT::Matrix theCompositeMatrixInverse
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
virtual ossim_int32 getEntryNumber(const char *entry_string, bool case_insensitive=true) const
void setFocalLength(double focalLength)
static ossimElevManager * instance()
METHOD: instance() Implements singelton pattern.
void setOrigin(const ossimEcefPoint &orig)
double latd() const
Will convert the radian measure to degrees.
ossim_uint32 getNumberOfAdjustableParameters() const
NEWMAT::Matrix theCompositeMatrix
uses file path to init model
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const
bool theExtrapolateImageFlag
void setPixelSize(const ossimDpt &pixelSize)
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
ossimEcefPoint theAdjEcefPlatformPosition
RTTI_DEF1(ossimApplanixEcefModel, "ossimApplanixEcefModel", ossimSensorModel)
void setPrincipalPoint(ossimDpt principalPoint)
const NEWMAT::Matrix & lsrToEcefRotMatrix() const
void computeGsd()
This method computes the ground sample distance(gsd) and sets class attributes theGSD and theMeanGSD ...
void setPlatformPosition(const ossimGpt &gpt)
OSSIM_DLL std::istream & skipws(std::istream &in)
virtual const char * what() const
Returns the error message.
std::string::size_type size() const
static NEWMAT::Matrix createRotationXMatrix(double angle, ossimCoordSysOrientMode orientationMode=OSSIM_RIGHT_HANDED)
ossimDpt thePrincipalPoint
ossimEcefPoint theEcefPlatformPosition
unsigned int ossim_uint32
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
ossimPolygon theBoundGndPolygon
virtual void initAdjustableParameters()
virtual bool setupOptimizer(const ossimString &init_file)
ground to image faster (you don't need DEM)
bool hasNans() const
will sequence through the polygon and check to see if any values are NAN
void setParameterUnit(ossim_uint32 idx, ossimUnitType unit)
virtual void undistort(const ossimDpt &input, ossimDpt &output) const
virtual ossimObject * dup() const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
bool pointWithin(const ossimDpt &point) const
METHOD: pointWithin(ossimDpt) Returns TRUE if point is inside polygon.
virtual void updateModel()
const ossimRefPtr< ossimApplanixEORecord > getRecordGivenId(const ossimString &id) const
Given an ID it will search and find an EO record that matches the ID.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
virtual void worldToLineSample(const ossimGpt &world_point, ossimDpt &image_point) const
std::vector< ossimString > getSubstringKeyList(const ossimString ®ularExpression) const
void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &gpt) const
ossim_uint32 getNumberOfVertices() const
ossimDrect theImageClipRect
static NEWMAT::Matrix createIdentity()
ossimDpt midPoint() const
virtual void setAdjustableParameter(ossim_uint32 idx, double value, bool notify=false)
ossim_int32 getFieldIdx(const ossimString &searchKey) const
Is a case insensitive parse of the column names for the orientation record.
const ossimDpt & ur() const
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...
const ossimColumnVector3d & data() const
ossimDpt metersPerDegree() const
const ossimDpt & ll() const
void setImageRect(const ossimDrect &rect)
std::basic_istringstream< char > istringstream
Class for char input memory streams.
void resize(ossim_uint32 newSize)
void setDirection(const ossimEcefVector &d)
bool parseFile(const ossimFilename &file)
Will parse the entire Exterior orientation file and then index any record ID's found.
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
float distance(double lat1, double lon1, double lat2, double lon2, int units)
static ossimUnitTypeLut * instance()
Returns the static instance of an ossimUnitTypeLut object.
const ossimDpt & lr() const
virtual void distort(const ossimDpt &input, ossimDpt &output) const
void setParameterSigma(ossim_uint32 idx, double value, bool notify=false)
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
ossimKeywordlist & trimAllValues(const ossimString &valueToTrim=ossimString(" \\))
virtual void lineSampleHeightToWorld(const ossimDpt &image_point, const double &heightEllipsoid, ossimGpt &worldPoint) const