/usr/include/ossim/base/ossimAdjustmentExecutive.h is in libossim-dev 1.8.16-4ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | //----------------------------------------------------------------------------
//
// License: See top level LICENSE.txt file.
//
// Author: David Hicks
// test
//
// Description: Executive class for adjustment operations.
//----------------------------------------------------------------------------
#ifndef ossimAdjustmentExecutive_HEADER
#define ossimAdjustmentExecutive_HEADER
#include <ossim/base/ossimObject.h>
#include <ossim/base/ossimObservationSet.h>
#include <ossim/base/ossimDpt.h>
#include <ossim/base/ossimGpt.h>
#include <ossim/base/ossimString.h>
#include <ossim/matrix/newmat.h>
#include <ossim/matrix/newmatap.h>
#include <ossim/matrix/newmatio.h>
#include <ctime>
#include <vector>
#include <iostream>
class ossimWLSBundleSolution;
class ossimAdjSolutionAttributes;
class OSSIM_DLL ossimAdjustmentExecutive : public ossimObject
{
public:
/**
* @brief constructor
*/
ossimAdjustmentExecutive(std::ostream& report);
/** @brief ossimObservationSet constructor
*
* @param obsSet tiepoint observation set.
*/
ossimAdjustmentExecutive(ossimObservationSet& obsSet, std::ostream& report);
/** @brief destructor */
~ossimAdjustmentExecutive();
/**
* @brief initialize adjustment solution
*
* @param obsSet tiepoint observation set.
*
* @return true on success, false on error.
*/
bool initializeSolution(ossimObservationSet& obsSet);
/**
* @brief run adjustment solution
*
* @return true on success, false on error.
*/
bool runSolution();
/**
* @brief summarize solution
*/
void summarizeSolution() const;
/**
* @brief compute mean and RMS error of residuals
*
* @param res image residual matrix.
*
* @return true on success, false on error.
*/
bool computeResidualStatistics(NEWMAT::Matrix& res);
/**
* @brief compute SEUW
*
* @return standard error of unit weight.
*/
double computeSEUW();
/**
* @brief Print parameter correction method.
*/
std::ostream& printParameterCorrectionSummary(std::ostream& out) const;
/**
* @brief Print observation correction method.
*/
std::ostream& printObservationCorrectionSummary(std::ostream& out) const;
/**
* @brief Print residuals method.
*/
std::ostream& printResidualSummary(std::ostream& out) const;
inline bool isValid() const { return theExecValid; }
// Generate time stamp
inline ossimString timeStamp()const
{
char timeString[22];
time_t now = time(NULL);
strftime(timeString, 22, "%a %m.%d.%y %H:%M:%S", localtime(&now));
string timeStamp(timeString);
return timeStamp;
}
protected:
bool theExecValid;
// Observation set
ossimObservationSet* theObsSet;
// Optimizer
ossimWLSBundleSolution* theSol;
// Attribute interface
ossimAdjSolutionAttributes* theSolAttributes;
// Status parameters
double theConvCriteria;
int theMaxIter;
bool theMaxIterExceeded;
bool theSolDiverged;
bool theSolConverged;
// Traits
int theNumObsInSet;
int theNumImages;
int theNumParams;
int theNumMeasurements;
int theRankN;
// Solution arrays
NEWMAT::Matrix theMeasResiduals; // theNumMeasurements X 2
NEWMAT::Matrix theObjPartials; // theNumObjObs*3 X 2
NEWMAT::Matrix theParPartials; // theNumImages*(npar/image) X 2
// Statistics
double theXrms;
double theYrms;
double theXmean;
double theYmean;
std::vector<double> theSEUW;
// Adjustable parameter info
std::vector<double> theParInitialValues;
std::vector<double> theParInitialStdDev;
std::vector<ossimString> theParDesc;
std::vector<int> theImgs;
// Observation info
std::vector<double> theObsInitialValues;
std::vector<double> theObsInitialStdDev;
std::ostream& theRep;
/**
* @brief Update adjustable parameters.
*/
bool updateParameters();
/**
* @brief Update observatin.
*/
bool updateObservations();
};
#endif // #ifndef ossimAdjustmentExecutive_HEADER
|