Isis Developer Reference
Isis::BundleControlPoint Class Reference

This class holds information about a control point that BundleAdjust needs to run correctly. More...

#include <BundleControlPoint.h>

Inheritance diagram for Isis::BundleControlPoint:
Inheritance graph
Collaboration diagram for Isis::BundleControlPoint:
Collaboration graph

Public Member Functions

 BundleControlPoint (BundleSettingsQsp bundleSettings, ControlPoint *point)
 Constructs a BundleControlPoint object from a ControlPoint. More...
 
 BundleControlPoint (const BundleControlPoint &src)
 Copy constructor. More...
 
 ~BundleControlPoint ()
 Destructor for BundleControlPoint. More...
 
BundleControlPointoperator= (const BundleControlPoint &src)
 
void copy (const BundleControlPoint &src)
 Copies given BundleControlPoint to this BundleControlPoint. More...
 
BundleMeasureQsp addMeasure (ControlMeasure *controlMeasure)
 Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list. More...
 
void computeResiduals ()
 Computes the residuals for this BundleControlPoint. More...
 
void setAdjustedSurfacePoint (SurfacePoint surfacePoint)
 Sets the adjusted surface point for this BundleControlPoint. More...
 
void setNumberOfRejectedMeasures (int numRejected)
 Sets the number of rejected measures for this BundleControlPoint. More...
 
void setRejected (bool reject)
 Sets this BundleControlPoint to rejected or not rejected. More...
 
void setWeights (const BundleSettingsQsp settings)
 Sets the weights using the given BundleSettings QSharedPointer and a conversion value for meters to radians. More...
 
void setSigmaWeightFromGlobals (double gSigma, int index)
 Sets the member sigmas and weights from a global sigma. More...
 
void setSigmaWeightFromGlobals (double gSigma, int index, double cFactor)
 
void zeroNumberOfRejectedMeasures ()
 Resets the number of rejected measures for this BundleControlPoint to zero. More...
 
void productAlphaAV (double alpha, SparseBlockMatrix &sparseNormals, LinearAlgebra::Vector &v1)
 Perform the matrix multiplication v2 = alpha ( Q x v1 ). More...
 
void applyParameterCorrections (LinearAlgebra::Vector imageSolution, SparseBlockMatrix &sparseNormals, const BundleTargetBodyQsp target)
 Apply the parameter corrections to the bundle control point. More...
 
ControlPointrawControlPoint () const
 Accessor for the raw ControlPoint object used for this BundleControlPoint. More...
 
bool isRejected () const
 Method used to determine whether this control point is rejected. More...
 
int numberOfMeasures () const
 Accesses number of measures associated with this BundleControlPoint. More...
 
int numberOfRejectedMeasures () const
 Accesses the number of rejected measures for this BundleControlPoint. More...
 
double residualRms () const
 Gets the root-mean-square (rms) of the BundleControlPoint's residuals. More...
 
SurfacePoint adjustedSurfacePoint () const
 Accesses the adjusted SurfacePoint associated with this BundleControlPoint. More...
 
QString id () const
 Accesses the Point ID associated with this BundleControlPoint. More...
 
ControlPoint::PointType type () const
 Accesses BundleControlPoint's type. More...
 
SurfacePoint::CoordinateType coordTypeReports () const
 Accesses BundleControlPoint's coordinate type for reports. More...
 
SurfacePoint::CoordinateType coordTypeBundle () const
 Accesses BundleControlPoint's control point coordinate type for the bundle adjustment. More...
 
boost::numeric::ublas::bounded_vector< double, 3 > & corrections ()
 Accesses the 3 dimensional ordered vector of correction values associated with coord1, coord2, and coord 3 (latitude, longitude, and radius or X, Y, and Z. More...
 
boost::numeric::ublas::bounded_vector< double, 3 > & aprioriSigmas ()
 Accesses the 3 dimensional ordered vector of apriori sigmas (apriori coordinate1, apriori coordinate2, apriori coordinate3). More...
 
boost::numeric::ublas::bounded_vector< double, 3 > & adjustedSigmas ()
 Accesses the 3 dimensional ordered vector of adjusted sigmas (adjusted coordinate1, adjusted coordinate2, adjusted coordinate3). More...
 
boost::numeric::ublas::bounded_vector< double, 3 > & weights ()
 Accesses the 3 dimensional ordered vector of weight values associated with coordinate1, coordinate2, and coordinate3. More...
 
boost::numeric::ublas::bounded_vector< double, 3 > & nicVector ()
 Accesses the 3 dimensional ordered NIC vector. More...
 
SparseBlockRowMatrixcholmodQMatrix ()
 Accesses the CholMod matrix associated with this BundleControlPoint. More...
 
QString formatBundleOutputSummaryString (bool errorPropagation) const
 Formats an output summary string for this BundleControlPoint. More...
 
QString formatBundleOutputDetailString (bool errorPropagation, bool solveRadius=false) const
 Formats a detailed output string table for this BundleControlPoint. More...
 
QString formatBundleLatitudinalOutputDetailString (bool errorPropagation, bool solveRadius=false) const
 Formats a detailed output string table for this Latitudinal BundleControlPoint. More...
 
QString formatBundleRectangularOutputDetailString (bool errorPropagation) const
 Formats a detailed output string table for this Rectangular BundleControlPoint. More...
 
QString formatValue (double value, int fieldWidth, int precision) const
 Formats the given double precision value using the specified field width and precision. More...
 
QString formatAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const
 Formats the apriori sigma value indicated by the given type code. More...
 
QString formatCoordAprioriSigmaString (SurfacePoint::CoordIndex index, int fieldWidth, int precision, bool solveRadius=false) const
 Formats the apriori coordinate 1 (latitude or X) sigma value. More...
 
QString formatAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const
 Formats the adjusted sigma value indicated by the given type code. More...
 
QString formatCoordAdjustedSigmaString (SurfacePoint::CoordIndex, int fieldWidth, int precision, bool errorPropagation) const
 Formats the adjusted coordinate sigma value. More...
 

Detailed Description

This class holds information about a control point that BundleAdjust needs to run correctly.

This class was created to extract functionality from BundleAdjust and wrap a ControlPoint with the extra necessary information to correctly perform a bundle adjustment.

Note that only non-ignored control points should be used to construct a BundleControlPoint. Similarly, a BundleControlPoint should only contain non-ignored control measures.

Author
2014-05-22 Ken Edmundson

Constructor & Destructor Documentation

◆ BundleControlPoint() [1/2]

Isis::BundleControlPoint::BundleControlPoint ( BundleSettingsQsp  bundleSettings,
ControlPoint controlPoint 
)

Constructs a BundleControlPoint object from a ControlPoint.

Only the non-ignored measures are added to the BundleControlPoint.

Parameters
controlPointPointer to a ControlPoint that will be used to construct this BundleControlPoint.

References addMeasure(), Isis::ControlPoint::GetMeasure(), Isis::ControlPoint::GetNumMeasures(), Isis::ControlMeasure::IsIgnored(), Isis::Null, and setWeights().

◆ BundleControlPoint() [2/2]

Isis::BundleControlPoint::BundleControlPoint ( const BundleControlPoint src)

Copy constructor.

Constructs a BundleControlPoint object from an existing BundleControlPoint.

Parameters
srcThe BundleControlPoint to be copied.

References copy().

◆ ~BundleControlPoint()

Isis::BundleControlPoint::~BundleControlPoint ( )

Destructor for BundleControlPoint.

Member Function Documentation

◆ addMeasure()

BundleMeasureQsp Isis::BundleControlPoint::addMeasure ( ControlMeasure controlMeasure)

Creates a BundleMeasure from the given ControlMeasure and appends it to this BundleControlPoint's measure list.

Parameters
controlMeasureThe ControlMeasure to be converted.
Returns
BundleMeasure* A pointer to the new BundleMeasure.

Referenced by BundleControlPoint().

◆ adjustedSigmas()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::adjustedSigmas ( )

Accesses the 3 dimensional ordered vector of adjusted sigmas (adjusted coordinate1, adjusted coordinate2, adjusted coordinate3).

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of adjusted sigmas.

◆ adjustedSurfacePoint()

◆ applyParameterCorrections()

void Isis::BundleControlPoint::applyParameterCorrections ( LinearAlgebra::Vector  imageSolution,
SparseBlockMatrix sparseNormals,
const BundleTargetBodyQsp  target 
)

Apply the parameter corrections to the bundle control point.

Parameters
imageSolutionImage vector.
factorThe unit conversion factor to use on lat and lon rad or x/y/z km.
targetThe BundleTargetBody.

References _FILEINFO_, isRejected(), Isis::SurfacePoint::Latitudinal, productAlphaAV(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

◆ aprioriSigmas()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::aprioriSigmas ( )

Accesses the 3 dimensional ordered vector of apriori sigmas (apriori coordinate1, apriori coordinate2, apriori coordinate3).

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of apriori sigmas.

◆ cholmodQMatrix()

SparseBlockRowMatrix & Isis::BundleControlPoint::cholmodQMatrix ( )

Accesses the CholMod matrix associated with this BundleControlPoint.

Returns
SparseBlockRowMatrix& The CholMod row matrix.

◆ computeResiduals()

void Isis::BundleControlPoint::computeResiduals ( )

◆ coordTypeBundle()

SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeBundle ( ) const

Accesses BundleControlPoint's control point coordinate type for the bundle adjustment.

Returns
ControlPoint::CoordinateType The BundleControlPoint's coordinate type. See SurfacePoint for the options.
See also
ControlPoint::getCoordTypeBundle()

◆ coordTypeReports()

SurfacePoint::CoordinateType Isis::BundleControlPoint::coordTypeReports ( ) const

Accesses BundleControlPoint's coordinate type for reports.

Returns
ControlPoint::CoordinateType The BundleControlPoint's coordinate type. See SurfacePoint for the options.
See also
ControlPoint::getCoordType()

◆ copy()

void Isis::BundleControlPoint::copy ( const BundleControlPoint src)

Copies given BundleControlPoint to this BundleControlPoint.

Parameters
srcThe BundleControlPoint to be copied.

Referenced by BundleControlPoint().

◆ corrections()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::corrections ( )

Accesses the 3 dimensional ordered vector of correction values associated with coord1, coord2, and coord 3 (latitude, longitude, and radius or X, Y, and Z.

A bounded vector is recommended because the size will always be 3.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of correction values.

◆ formatAdjustedSigmaString()

QString Isis::BundleControlPoint::formatAdjustedSigmaString ( SurfacePoint::CoordIndex  index,
int  fieldWidth,
int  precision,
bool  errorPropagation 
) const

Formats the adjusted sigma value indicated by the given type code.

If error propagation is false or the selected sigma type was set to Null, then only "N/A" will be returned.

Parameters
indexCoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted value, as a string.

References adjustedSurfacePoint(), Isis::SurfacePoint::GetSigmaDistance(), Isis::IsSpecial(), Isis::Distance::meters(), and Isis::Null.

Referenced by formatCoordAdjustedSigmaString().

◆ formatAprioriSigmaString()

QString Isis::BundleControlPoint::formatAprioriSigmaString ( SurfacePoint::CoordIndex  index,
int  fieldWidth,
int  precision,
bool  solveRadius = false 
) const

Formats the apriori sigma value indicated by the given type code.

If no sigma was set, then the string "N/A" will be returned.

Parameters
indexCoordIndex Coordinate index One: Latitude or X, Two: Longitude or Y, or Three: Radius or Z
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
solveRadiusA flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted
Returns
QString The formatted value, as a string.

References Isis::IsSpecial(), Isis::ControlPoint::PointTypeToString(), and type().

Referenced by formatCoordAprioriSigmaString().

◆ formatBundleLatitudinalOutputDetailString()

QString Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString ( bool  errorPropagation,
bool  solveRadius = false 
) const

◆ formatBundleOutputDetailString()

QString Isis::BundleControlPoint::formatBundleOutputDetailString ( bool  errorPropagation,
bool  solveRadius = false 
) const

Formats a detailed output string table for this BundleControlPoint.

Parameters
errorPropagationIndicates whether error propagation was selected.
RTMConversion factor from radians to meters. Used to convert the latitude and longitude corrections to meters.
solveRadiusA flag indicating to solve for each points individual radius. When solveRadius is false, the point radius is heavily weighted
Returns
QString The formatted output detailed string.

References _FILEINFO_, formatBundleLatitudinalOutputDetailString(), formatBundleRectangularOutputDetailString(), Isis::SurfacePoint::Latitudinal, Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

◆ formatBundleOutputSummaryString()

QString Isis::BundleControlPoint::formatBundleOutputSummaryString ( bool  errorPropagation) const

Formats an output summary string for this BundleControlPoint.

This string includes ID, point type, number of rays from non-rejected measures, residual RMS, adjusted coordinate1, adjusted coordinate 2, and adjusted coordinate 3 followed by the adjusted sigmas. In the case of Latitudinal coordinates, the coordinates will be adjusted latitude and longitude (in degrees), the adjusted radius (in km), and the adjusted sigmas for latitude, longitude and radius all in meters. In the case of Rectangular coordinates, the coordinates will be X, Y, Z (in km), and the adjusted sigmas for X, Y, and Z all in meters.

Parameters
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted output summary string.

References Isis::SurfacePoint::Degrees, formatCoordAdjustedSigmaString(), formatValue(), Isis::ControlPoint::GetAdjustedSurfacePoint(), Isis::SurfacePoint::GetCoord(), Isis::SurfacePoint::Kilometers, numberOfMeasures(), numberOfRejectedMeasures(), Isis::SurfacePoint::One, Isis::ControlPoint::PointTypeToString(), Isis::SurfacePoint::Rectangular, residualRms(), Isis::SurfacePoint::Three, Isis::SurfacePoint::Two, and type().

◆ formatBundleRectangularOutputDetailString()

◆ formatCoordAdjustedSigmaString()

QString Isis::BundleControlPoint::formatCoordAdjustedSigmaString ( SurfacePoint::CoordIndex  index,
int  fieldWidth,
int  precision,
bool  errorPropagation 
) const

Formats the adjusted coordinate sigma value.

Parameters
indexThe coordinate index of the sigma to return.
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
errorPropagationIndicates whether error propagation was selected.
Returns
QString The formatted adjusted coordinate sigma value, as a string.
See also
formatAdjustedSigmaString()

References formatAdjustedSigmaString().

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ formatCoordAprioriSigmaString()

QString Isis::BundleControlPoint::formatCoordAprioriSigmaString ( SurfacePoint::CoordIndex  index,
int  fieldWidth,
int  precision,
bool  solveRadius = false 
) const

Formats the apriori coordinate 1 (latitude or X) sigma value.

Parameters
fieldWidthThe return string's field width.
precisionThe precision of the double to be saved off.
Returns
QString The formatted apriori coordinate 1 sigma value, as a string.
See also
formatAprioriSigmaString()

References formatAprioriSigmaString().

Referenced by formatBundleLatitudinalOutputDetailString(), and formatBundleRectangularOutputDetailString().

◆ formatValue()

QString Isis::BundleControlPoint::formatValue ( double  value,
int  fieldWidth,
int  precision 
) const

Formats the given double precision value using the specified field width and precision.

If the given value is special, then "Null" is returned.

Parameters
valueThe double value to be formattted.
fieldWidthThe return string's field width.
precisionThe precision of the given double value to be saved off.
Returns
QString The formatted value, as a string.

References Isis::IsSpecial().

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ id()

QString Isis::BundleControlPoint::id ( ) const

Accesses the Point ID associated with this BundleControlPoint.

Returns
QString The ID for this point.

References Isis::ControlPoint::GetId().

Referenced by Isis::IsisBundleObservation::computeRHSPartials(), and Isis::CsmBundleObservation::computeRHSPartials().

◆ isRejected()

bool Isis::BundleControlPoint::isRejected ( ) const

Method used to determine whether this control point is rejected.

Returns
bool Indicates whether this control point is rejected.

References Isis::ControlPoint::IsRejected().

Referenced by applyParameterCorrections().

◆ nicVector()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::nicVector ( )

Accesses the 3 dimensional ordered NIC vector.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The NIC vector.

◆ numberOfMeasures()

int Isis::BundleControlPoint::numberOfMeasures ( ) const

Accesses number of measures associated with this BundleControlPoint.

Returns
int The number of measures for this point.

Referenced by formatBundleLatitudinalOutputDetailString(), formatBundleOutputSummaryString(), and formatBundleRectangularOutputDetailString().

◆ numberOfRejectedMeasures()

int Isis::BundleControlPoint::numberOfRejectedMeasures ( ) const

◆ operator=()

BundleControlPoint& Isis::BundleControlPoint::operator= ( const BundleControlPoint src)

◆ productAlphaAV()

void Isis::BundleControlPoint::productAlphaAV ( double  alpha,
SparseBlockMatrix sparseNormals,
LinearAlgebra::Vector v1 
)

Perform the matrix multiplication v2 = alpha ( Q x v1 ).

Parameters
alphaA constant multiplier.
sparseNormalsThe sparse block normal equations matrix.
v2The output vector.
QA sparse block matrix.
v1A vector.

Referenced by applyParameterCorrections().

◆ rawControlPoint()

ControlPoint * Isis::BundleControlPoint::rawControlPoint ( ) const

Accessor for the raw ControlPoint object used for this BundleControlPoint.

Returns
ControlPoint* A pointer to the raw ControlPoint.

◆ residualRms()

double Isis::BundleControlPoint::residualRms ( ) const

Gets the root-mean-square (rms) of the BundleControlPoint's residuals.

Returns
double Returns the rms of the residuals.
See also
ControlPoint::GetResidualRms()

References Isis::ControlPoint::GetResidualRms().

Referenced by formatBundleOutputSummaryString().

◆ setAdjustedSurfacePoint()

void Isis::BundleControlPoint::setAdjustedSurfacePoint ( SurfacePoint  surfacePoint)

Sets the adjusted surface point for this BundleControlPoint.

Parameters
surfacePointThe surface point to be set.

References Isis::ControlPoint::SetAdjustedSurfacePoint().

◆ setNumberOfRejectedMeasures()

void Isis::BundleControlPoint::setNumberOfRejectedMeasures ( int  numRejected)

Sets the number of rejected measures for this BundleControlPoint.

Parameters
numRejectedNumber of rejected measures.
See also
ControlPoint::SetNumberOfRejectedMeasures(int numRejected)

References Isis::ControlPoint::SetNumberOfRejectedMeasures().

◆ setRejected()

void Isis::BundleControlPoint::setRejected ( bool  reject)

Sets this BundleControlPoint to rejected or not rejected.

Parameters
rejectTrue will set the BundleControlPoint to rejected.
See also
ControlPoint::SetRejected(bool reject)

References Isis::ControlPoint::SetRejected().

◆ setSigmaWeightFromGlobals() [1/2]

void Isis::BundleControlPoint::setSigmaWeightFromGlobals ( double  gSigma,
int  index 
)

Sets the member sigmas and weights from a global sigma.

TODO *** Should index be SurfacePoint::CoordIndex?

Parameters
gSigmaThe global sigma to assign.
indexThe index of the point coordinate being set (0, 1, or 2).
cFactorThe conversion factor applied to gSigma to match bundle variable units.
See also
formatAprioriSigmaString()

References _FILEINFO_, Isis::ControlPoint::GetAprioriSurfacePoint(), Isis::SurfacePoint::Latitudinal, Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), Isis::IException::Programmer, Isis::SurfacePoint::Rectangular, and Isis::toString().

Referenced by setWeights().

◆ setSigmaWeightFromGlobals() [2/2]

void Isis::BundleControlPoint::setSigmaWeightFromGlobals ( double  gSigma,
int  index,
double  cFactor 
)

◆ setWeights()

◆ type()

◆ weights()

boost::numeric::ublas::bounded_vector< double, 3 > & Isis::BundleControlPoint::weights ( )

Accesses the 3 dimensional ordered vector of weight values associated with coordinate1, coordinate2, and coordinate3.

Returns
boost::numeric::ublas::bounded_vector<double,3>& The vector of weight values.

◆ zeroNumberOfRejectedMeasures()

void Isis::BundleControlPoint::zeroNumberOfRejectedMeasures ( )

Resets the number of rejected measures for this BundleControlPoint to zero.

See also
ControlPoint::ZeroNumberOfRejectedMeasures()

References Isis::ControlPoint::ZeroNumberOfRejectedMeasures().


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