USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::ControlPoint Class Reference

A single control point. More...

#include <ControlPoint.h>

Inheritance diagram for Isis::ControlPoint:
Inheritance graph
Collaboration diagram for Isis::ControlPoint:
Collaboration graph

Classes

struct  RadiusSource
struct  SurfacePointSource

Public Types

enum  PointType { Fixed = 0, Constrained = 1, Free = 2 }
 These are the valid 'types' of point. More...
enum  Status { Failure, Success, PointLocked }
 This is a return status for many of the mutating (setter) method calls. More...
enum  ConstraintStatus { LatitudeConstrained = 0, LongitudeConstrained = 1, RadiusConstrained = 2 }
 This is a convenience member for checking number of constrained coordinates in the SurfacePoint. More...

Public Member Functions

 ControlPoint ()
 Construct a control point.
 ControlPoint (const ControlPoint &)
 Copy the given control point into this instance.
 ControlPoint (const QString &id)
 Construct a control point with given Id.
 ControlPoint (const ControlPointFileEntryV0002 &fileEntry, const Distance &majorRad, const Distance &minorRad, const Distance &polarRad)
 This is used when reading from a protocol buffer.
 ~ControlPoint ()
 This destroys the current instance and cleans up any and all allocated memory.
ControlNetParent ()
void Load (PvlObject &p)
 Loads the PvlObject into a ControlPoint.
void Add (ControlMeasure *measure)
 Add a measurement to the control point, taking ownership of the measure in the process.
int Delete (ControlMeasure *measure)
 Remove a measurement from the control point, deleting reference measure is allowed.
int Delete (QString serialNumber)
 Remove a measurement from the control point, deleting reference measure is allowed.
int Delete (int index)
 Remove a measurement from the control point, deleting reference measure is allowed.
Status ResetApriori ()
 Reset all the Apriori info to defaults.
const ControlMeasureGetMeasure (QString serialNumber) const
 Get a control measure based on its cube's serial number.
ControlMeasureGetMeasure (QString serialNumber)
 Get a control measure based on its cube's serial number.
const ControlMeasureGetMeasure (int index) const
ControlMeasureGetMeasure (int index)
const ControlMeasureGetRefMeasure () const
 Get the reference control measure.
ControlMeasureGetRefMeasure ()
 Get the measure that is the reference directly.
Status SetChooserName (QString name)
 Set the point's chooser name.
Status SetDateTime (QString newDateTime)
 Set the point's last modified time.
Status SetEditLock (bool editLock)
 Set the EditLock state.
Status SetId (QString id)
 Sets the Id of the control point.
Status SetRefMeasure (ControlMeasure *cm)
 Set the point's reference measure.
Status SetRefMeasure (int index)
 Set the point's reference measure.
Status SetRefMeasure (QString sn)
 Set the points reference measure.
Status SetRejected (bool rejected)
 Set the jigsawRejected state.
Status SetIgnored (bool newIgnoreStatus)
 Set whether to ignore or use control point.
Status SetAdjustedSurfacePoint (SurfacePoint newSurfacePoint)
 Set or update the surface point relating to this control point.
Status SetType (PointType newType)
 Updates the control point's type.
Status SetAprioriRadiusSource (RadiusSource::Source source)
 This updates the source of the radius of the apriori surface point.
Status SetAprioriRadiusSourceFile (QString sourceFile)
 This updates the filename of the DEM that the apriori radius came from.
Status SetAprioriSurfacePoint (SurfacePoint aprioriSP)
 This updates the apriori surface point.
Status SetAprioriSurfacePointSource (SurfacePointSource::Source source)
 This updates the source of the surface point.
Status SetAprioriSurfacePointSourceFile (QString sourceFile)
 This updates the filename of where the apriori surface point came from.
Status ComputeApriori ()
 This method computes the apriori lat/lon for a point.
Status ComputeResiduals ()
 This method computes the BundleAdjust residuals for a point.
Status ComputeResiduals_Millimeters ()
 This method computes the residuals for a point.
SurfacePoint GetAdjustedSurfacePoint () const
SurfacePoint GetBestSurfacePoint () const
 Returns the adjusted surface point if it exists, otherwise returns the a priori surface point.
QString GetChooserName () const
QString GetDateTime () const
bool IsEditLocked () const
bool IsRejected () const
QString GetId () const
 Return the Id of the control point.
bool IsIgnored () const
bool IsValid () const
bool IsInvalid () const
bool IsFixed () const
bool HasAprioriCoordinates ()
bool IsConstrained ()
bool IsLatitudeConstrained ()
bool IsLongitudeConstrained ()
bool IsRadiusConstrained ()
int NumberOfConstrainedCoordinates ()
QString GetPointTypeString () const
 Obtain a string representation of the PointType.
PointType GetType () const
QString GetRadiusSourceString () const
 Obtain a string representation of the RadiusSource.
QString GetSurfacePointSourceString () const
 Obtain a string representation of the SurfacePointSource.
SurfacePoint GetAprioriSurfacePoint () const
RadiusSource::Source GetAprioriRadiusSource () const
QString GetAprioriRadiusSourceFile () const
SurfacePointSource::Source GetAprioriSurfacePointSource () const
QString GetAprioriSurfacePointSourceFile () const
int GetNumMeasures () const
int GetNumValidMeasures () const
int GetNumLockedMeasures () const
 Returns the number of locked control measures.
bool HasSerialNumber (QString serialNumber) const
 Return true if given serial number exists in point.
int IndexOf (ControlMeasure *, bool throws=true) const
int IndexOf (QString sn, bool throws=true) const
int IndexOfRefMeasure () const
bool IsReferenceExplicit () const
QString GetReferenceSN () const
Statistics GetStatistic (double(ControlMeasure::*statFunc)() const) const
 This function will call a given method on every control measure that this point has.
Statistics GetStatistic (long dataType) const
QList< ControlMeasure * > getMeasures (bool excludeIgnored=false) const
QList< QString > getCubeSerialNumbers () const
const ControlMeasureoperator[] (QString serialNumber) const
 Same as GetMeasure (provided for convenience)
ControlMeasureoperator[] (QString serialNumber)
 Same as GetMeasure (provided for convenience)
const ControlMeasureoperator[] (int index) const
 Same as GetMeasure (provided for convenience)
ControlMeasureoperator[] (int index)
 Same as GetMeasure (provided for convenience)
bool operator!= (const ControlPoint &pPoint) const
 Compare two Control Points for inequality.
bool operator== (const ControlPoint &pPoint) const
 Compare two Control Points for equality.
const ControlPointoperator= (const ControlPoint &pPoint)
void ZeroNumberOfRejectedMeasures ()
 Initialize the number of rejected measures to 0.
void SetNumberOfRejectedMeasures (int numRejected)
 Set (update) the number of rejected measures for the control point.
int GetNumberOfRejectedMeasures () const
 Get the number of rejected measures on the control point.
double GetSampleResidualRms () const
 Get rms of sample residuals.
double GetLineResidualRms () const
 Get rms of line residuals.
double GetResidualRms () const
 Get rms of residuals.
void ClearJigsawRejected ()
 Set jigsaw rejected flag for all measures to false and set the jigsaw rejected flag for the point itself to false.
ControlPointFileEntryV0002 ToFileEntry () const

Static Public Member Functions

static QString PointTypeToString (PointType type)
 Obtain a string representation of a given PointType.
static PointType StringToPointType (QString pointTypeString)
 Obtain a PointType given a string representation of it.
static QString RadiusSourceToString (RadiusSource::Source source)
 Obtain a string representation of a given RadiusSource.
static RadiusSource::Source StringToRadiusSource (QString str)
 Obtain a RadiusSource::Source from a string.
static QString SurfacePointSourceToString (SurfacePointSource::Source source)
 Obtain a string representation of a given SurfacePointSource.
static SurfacePointSource::Source StringToSurfacePointSource (QString str)
 Obtain a SurfacePoint::Source from a string.

Static Public Attributes

static const int PointTypeCount = 3

Private Member Functions

void SetExplicitReference (ControlMeasure *measure)
 Explicitly defines a new reference measure by pointer.
void ValidateMeasure (QString serialNumber) const
 Throws an exception if none of the point's measures have the given serial number.
void AddMeasure (ControlMeasure *measure)
 Do the actual work of adding a measure to this point, without changing any extra data.
void PointModified ()

Private Attributes

ControlNetparentNetwork
 List of Control Measures.
QHash< QString, ControlMeasure * > * measures
QStringListcubeSerials
ControlMeasurereferenceMeasure
QString id
 This is the control point ID.
QString chooserName
 This is the user name of the person who last modified this control point.
QString dateTime
 This is the last modified date and time.
PointType type
 What this control point is tying together.
bool invalid
 If we forced a build that we would normally have thrown an exception for then this is set to true.
bool editLock
 This stores the edit lock state.
bool jigsawRejected
 This stores the jigsaw rejected state.
std::bitset< 6 > constraintStatus
 This stores the constraint status of the a priori SurfacePoint.
bool referenceExplicitlySet
 This indicates if a program has explicitely set the reference in this point or the implicit reference is still the current reference.
bool ignore
 True if we should preserve but ignore the entire control point and its measures.
SurfacePointSource::Source aprioriSurfacePointSource
 Where the apriori surface point originated from.
QString aprioriSurfacePointSourceFile
 FileName where the apriori surface point originated from.
RadiusSource::Source aprioriRadiusSource
 Where the apriori surface point's radius originated from, most commonly used by jigsaw.
QString aprioriRadiusSourceFile
 The name of the file that derives the apriori surface point's radius.
SurfacePoint aprioriSurfacePoint
 The apriori surface point.
SurfacePoint adjustedSurfacePoint
 This is the calculated, or aposterori, surface point.
int numberOfRejectedMeasures
 This parameter is used and maintained by BundleAdjust for the jigsaw application.

Friends

class ControlNet

Detailed Description

A single control point.

A control point is one or more measurements that identify the same feature or location in different images.

Author
2005-07-29 Jeff Anderson
See Also
ControlMeasure ControlNet
History:
2005-07-29 Jeff Anderson Original version
History:
2006-01-11 Jacob Danton Added ReferenceIndex method and updated unitTest
History:
2006-06-28 Tracie Sucharski, Added method to return measure for given serial number.
History:
2006-10-31 Tracie Sucharski, Added HasReference method, changed ReferenceIndex method to throw error if there is no Reference ControlMeasure.
History:
2007-01-25 Debbie A. Cook, Removed return statement in SetApriori method for case so that FocalPlaneMeasures will get set. The method already has a later return statement to avoid changing the lat/lon values.
History:
2007-10-19 Debbie A. Cook, Wrapped longitudes when calculating apriori longitude for points with a difference of more than 180 degrees of longitude between measures.
History:
2008-01-14 Debbie A. Cook, Changed call to Camera->SetUniversalGround in ComputeErrors to include the radius as an argument since the method has been overloaded to include radius.
History:
2008-09-12 Tracie Sucharski, Add method to return true/false for existence of Serial Number.
History:
2009-03-07 Debbie A. Cook Fixed ComputeErrors method to set focal plane coordinates without changing time and improved error messages.
History:
2009-06-03 Christopher Austin, Added the invalid functionality along with forceBuild, fixed documentation errors.
History:
2009-06-22 Jeff Anderson, Modified ComputeAprior method to correctly handle ground and held points. Previosuly it would throw an error if the lat/lon of a measure could not be computed. Also, modify the ComputeErrors method to not abort any longer if a control point lat/lon could not be projected back to a image line/sample.
History:
2009-08-13 Debbie A. Cook Corrected calculation of scale used to get the undistorted focal plane coordinates to use the signed focal length (Z) from the CameraDistortionMap,
History:
2009-08-21 Christopher Austin, Put the default return of ReferenceIndex() back as the first Measured measure.
History:
2009-09-01 Eric Hyer, fixed some include issues.
History:
2009-09-08 Eric Hyer, Added PointTypeToString method.
History:
2009-10-13 Jeannie Walldren - Added detail to error messages.
History:
2009-12-06 Tracie Sucharski, Renamed ComputeErrors to ComputeResiudals.
History:
2010-03-19 Debbie A. Cook Replaced code in method ComputeErrors with call to CameraGroundMap->GetXY
History:
2010-01-12 Tracie Sucharski, Added support for binary networds, added new parameters, renamed ComputeErrors to ComputeResiduals, renamed MaximumError to MaximumResidual, renamed AverageError to AverageResidual.
History:
2010-03-19 Debbie A. Cook Replaced code in method ComputeErrors with call to CameraGroundMap->GetXY
History:
2010-05-06 Tracie Sucharski, Use defaults of 0. instead of Isis::Null, because 0. is the default in the protocol buffers.
History:
2010-05-11 Sharmila Prasad Added API's Copy Constructor to copy one point to another and ReferenceIndexNoException not to throw Exception if there are no reference point or no measures in a Control Point. Also added the boolean logical operator method = and !=.
History:
2010-05-26 Tracie Sucharski, Changed point type of Ground to GroundXYZ, GroundXY, or GroundZ.
History:
2010-06-01 Tracie Sucharski, Added Ellipsoid and DEM to AprioriSource enum. Change AprioriSourceBasemap to AprioriLatLonSourcFile and AprioriRadiusSourceFile.
History:
2010-06-03 Tracie Sucharski, Moved SetReference method from ControlMeasure so check for multiple reference meausres can be done.
History:
2010-06-17 Tracie Sucharski, Added Lock keyword, new methods SetLocked, Locked and NumLockedMeasures.
History:
2010-06-04 Eric Hyer - removed parametor for PointTypeToString() additional working sessions for Control network design.
History:
2010-07-27 Tracie Sucharski, Updated for changes made after additional working sessions for Control network design. Major change to keywords, including storing coordinates as x/y/z instead of lat/lon/radius. Needed methods to allow inputting either, and conversion methods.
History:
2010-08-18 Tracie Sucharski, Updated for changes made to SurfacePoint covariance matrix.
History:
2010-08-25 Tracie Sucharski, Fixed some bugs relating to conversions between sigmas and covariance matrices.
History:
2010-09-13 Tracie Sucharski, Added methods for setting planetocentric sigmas as both degrees and meters, as a result of changes made to the SurfacePoint class.
History:
2010-09-15 Tracie Sucharski, It was decided after mtg with Debbie, Stuart, Ken and Tracie that ControlPoint will only function with x/y/z, not lat/lon/radius. It will be the responsibility of the application or class using ControlPoint to set up a SurfacePoint object to do conversions between x/y/z and lat/lon/radius. So... remove all conversion methods from this class. It was also decided that when importing old networks that contain Sigmas, the sigmas will not be imported, due to conflicts with the units of the sigmas.
History:
2010-05-11 Sharmila Prasad Added API's Copy Constructor to copy one point to another and ReferenceIndexNoException not to throw Exception if there are no reference point or no measures in a Control Point.
History:
2010-06-04 Eric Hyer - removed parametor for PointTypeToString()
History:
2010-09-09 Sharmila Prasad - Added API's to get Latitude, Longitude, Radius from the Reference Measure in the Point. Also to get the min & max Line & Sample Errors
History:
2010-09-27 Tracie Sucharski, Removed these new methods and move functionality to the ControlNetFilter class. Add the old methods, SetUniversalGround, UniversalLatitude, UniversalLongitude and Radius back in for convenience.
History:
2010-10-05 Eric Hyer - interface to ID is now with QString
History:
2010-10-06 Sharmila Prasad - Added method ReferenceLocked()
History:
2010-10-18 Tracie Sucharski, Change "Setters", ComputeApriori and ComputeResiduals to return either Success or PointLocked. If the point is locked do not set values.
History:
2010-10-18 Tracie Sucharski, Change SurfacePoint::Rectangular and SurfacePoint::Ocentric to SurfacePoint as both return values and parameters.
History:
2010-10-06 Sharmila Prasad - API to reset Apriori
History:
2010-10-21 Steven Lambright Minimized the header file and moved most implementations to the cpp. Reorganized the order of methods. Made more methods callable on a const instance. Added GetMeasure(...) methods and a suggested implementation for the bracket operators, not yet implemented due to returning reference conflicts. Finished implementing the new use of SurfacePoint mentioned in the last history comment. Marked SetUniversalGround(), UniversalLatitude(), UniversalLongitude(), and Radius() as deprecated. These methods need to be phased out and GetSurfacePoint() used instead. There are naming conflicts with accessors (some use Get, some don't) still. The comparison operator now relies on QVector's comparison operator instead of looping itself. Added private helper methods: int FindMeasureIndex(QString serialNumber) const void PointModified(); Updated documentation extensively. Removed everything apost except for inside of Load() and CreatePvlObject(). Added automatic updating of DateTime and ChooserName.
History:
2010-10-26 Steven Lambright Change default chooser name from user name to application name.
History:
2010-11-03 Mackenzie Boyd Added ToString methods for enums, String and statis ToString now exist for PointType, RadiusSource, and SurfacePointSource.
History:
2010-11-16 Debbie Cook, Added jigsawRejected keyword.
History:
2010-12-08 Tracie Sucharski, Added IsGround convenience method.
History:
2010-12-28 Steven Lambright Changed accessors to match ControlMeasure's method of accessing data. Removed obsolete methods to prevent further use of them.
History:
2011-01-13 Mackenzie Boyd Added pointer to owning ControlNet.
History:
2011-01-17 Eric Hyer - Points now own and delete their measures. ControlNet now notified of changes (like adding and removing measures). Returning pointers to measures is now safe and encouraged.
History:
2011-02-10 Eric Hyer - measures no longer know or care if they are the reference measure. This information is now completely maintained by this class. Made numerous API and internal changes, eliminating substantial duplicate code and increasing interface clearity. Hungarian notation now eliminated from this class.
History:
2011-02-11 Steven Lambright - Measure log data is now written to the binary file properly.
History:
2011-02-18 Eric Hyer - Added Delete(ControlMeasure *) method. Fixed bugs related to network notification of measure addition and deletion.
History:
2011-02-28 Eric Hyer - Fixed bug in operator= that caused the the reference measure to not get propagated correctly
History:
2011-02-28 Steven Lambright - Added a flag for cnetref to say whether a reference measure has been explicitly or implicitly set.
History:
2011-03-01 Eric Hyer - Added StringToRadiusSource and StringToSurfacePointSource methods
History:
2011-03-08 Ken Edmundson and Debbie Cook - Added members ConstraintStatus, LatitudeConstrained, LongitudeConstrained, RadiusConstrained, constraintStatus and methods ConputeResiduals_Millimeters(), HasAprioriCoordinates(), IsConstrained(), IsLatitudeConstrained(), IsLongitudeConstrained(), and NumberOfConstrainedCoordinates().
History:
2011-03-11 Debbie Cook - changed name of member surfacePoint to adjustedSurfacePoint. Also changed methods SetSurfacePoint to SetAdjustedSurfacePoint and GetSurfacePoint to GetAdjustedSurfacePoint.
History:
2011-03-14 Eric Hyer - Added GetMeasures method. Network now notified when a point's ignored status changes for updating its cube connection graph (cube connections were not respecting ignored flags on points / measures).
History:
2011-03-14 Christopher Austin - Added GetBestSurfacePoint to reduce external duplicate code.
History:
2011-03-15 Steven Lambright - Now writes AdjustedX, AdjustedY, and AdjustedZ to the pvl format. Also updated proto buffer calls to reflect naming changes.
History:
2011-03-17 Eric Hyer - Added default parameter to GetMeasures method for excluding ignored measures.
History:
2011-03-25 Christopher Austin - Added functionality to SetId()
History:
2011-04-01 Debbie A. Cook and Ken Edmundson - Added argument to constructor for target radii
History:
2011-04-04 Steven Lambright - Removed an old constructor and made the Distance vector one take a const reference.
History:
2011-04-04 Steven Lambright - Updated constructor from binary to take planetary radii
History:
2011-05-02 Debbie A. Cook - Added new point type Constrained
History:
2011-06-07 Debbie A. Cook and Tracie Sucharski - Modified point types: Ground ------> Fixed Tie----------> Free
History:
2011-06-30 Eric Hyer - Added StringToPointType() method
History:
2011-07-01 Debbie A. Cook - Removed editLock checks from SetAdjustedSurfacePoint and ComputeResiduals
History:
2011-07-08 Travis Addair - Locked measures can no longer be deleted
History:
2011-07-12 Ken Edmundson - Modified ComputeApriori method to handle radius properly when computing average coordinates
History:
2011-07-29 Jai Rideout, Steven Lambright, and Eric Hyer - Made this inherit from QObject to get destroyed() signal
History:
2011-07-29 Eric Hyer - Changed some graph code in Delete()
History:
2011-09-13 Eric Hyer,Tracie Sucharski - operator= changes: Change input parameter to const &. Re-wrote to use Delete and AddMeasure methods, so that the ControlGraphNode is updated correctly.
History:
2011-09-30 Steven Lambright and Tracie Sucharski - Fixed bugs that caused unpredictable behavior in the assignment operator.
History:
2011-10-01 Steven Lambright - Simplified the copy constructor and fixed problems (which caused ASSERT fails) in the copy constructor.
History:
2011-10-06 Steven Lambright - Radii provided in the protocol buffer constructor can now be invalid.
History:
2011-10-07 Steven Lambright and Stuart Sides - Fixed bug in the constructor given a protocol buffer. This caused unpredictable reference measure behaviour sometimes (rarely).
History:
2011-10-14 Ken Edmundson Added method ClearJigsawRejected(); to set all measure and point JigsawRejected flags to false prior to bundle adjustment.
History:
2012-03-31 Debbie A. Cook Programmer note: Revised ComputeResiduals to call ComputeResidualsMillimeters and avoid duplication of code. Also revised ComputeResidualsMillimeters to make the radar case handled the same as other instruments.
History:
2013-11-12 Ken Edmundson Programmer note: Revised ComputeApriori such that initial coordinates are computed for "Free" points that have constrained coordinates. References #1653.
History:
2013-11-13 Kimberly Oyama - Added missing member variables to == operator and made sure the comparisons are being done correctly. Fixes #1014.
History:
2015-11-05 Kris Becker - invalid flag was not properly initialized in ControlPointFileEntryV0002 constructor (Merged by Kristin Berry. Fixes #2392)

Definition at line 339 of file ControlPoint.h.

Member Enumeration Documentation

This is a convenience member for checking number of constrained coordinates in the SurfacePoint.

Enumerator:
LatitudeConstrained 

This is the status of constrained coordinates in the SurfacePoint.

Todo:
We will eventually need to deal with rectangular coordinates as well, but for now BundleAdjust uses spherical coordinates only.

Definition at line 400 of file ControlPoint.h.

These are the valid 'types' of point.

A point type defines what a point is tying together.

Enumerator:
Fixed 

A Fixed point is a Control Point whose lat/lon is well established and should not be changed.

Some people will refer to this as a truth (i.e., ground truth). A fixed point can be identifed in one or more cubes. Historically this point was called a "Ground" point.

Constrained 

A Constrained point is a Control Point whose lat/lon/radius is somewhat established and should not be changed.

Free 

A Free point is a Control Point that identifies common measurements between two or more cubes.

While it could have a lat/lon, it is not necessarily correct and is subject to change. This is the most common type of control point. This point type floats freely in a bundle adjustment. Historically this point type was called "Tie".

Definition at line 349 of file ControlPoint.h.

This is a return status for many of the mutating (setter) method calls.

We chose to use return status' because often times ignoring them is the behavior the caller wants.

Enumerator:
Failure 

This is returned when an operation cannot be performed due to a problem such as the point is ignored and the operation doesn't make sense.

Success 

This is returned when the operation successfully took effect.

PointLocked 

This is returned when the operation requires Edit Lock to be false but it is currently true.

The operation did not take effect.

Definition at line 378 of file ControlPoint.h.

Constructor & Destructor Documentation

Isis::ControlPoint::ControlPoint ( )

Construct a control point.

Author
tsucharski (5/5/2010)

Definition at line 43 of file ControlPoint.cpp.

References aprioriRadiusSource, aprioriSurfacePointSource, constraintStatus, dateTime, editLock, Free, ignore, jigsawRejected, numberOfRejectedMeasures, parentNetwork, referenceExplicitlySet, and type.

Isis::ControlPoint::ControlPoint ( const ControlPoint other)
Isis::ControlPoint::ControlPoint ( const QString &  newId)

Construct a control point with given Id.

Parameters
idControl Point Id

Definition at line 322 of file ControlPoint.cpp.

References aprioriRadiusSource, aprioriSurfacePointSource, constraintStatus, editLock, Free, ignore, jigsawRejected, numberOfRejectedMeasures, parentNetwork, referenceExplicitlySet, and type.

Isis::ControlPoint::ControlPoint ( const ControlPointFileEntryV0002 fileEntry,
const Distance majorRad,
const Distance minorRad,
const Distance polarRad 
)

This is used when reading from a protocol buffer.

Given a file representation (protocol buffer), and log data, construct the control point.

History:
2008-06-18 Debbie A. Cook, Swapped Init with SetRadii calls to avoid resetting the surface points with no radii
History:
2015-11-03 Kris Becker - invalid flag was not being initialized

Definition at line 122 of file ControlPoint.cpp.

References _FILEINFO_, AddMeasure(), adjustedSurfacePoint, aprioriRadiusSource, aprioriRadiusSourceFile, aprioriSurfacePoint, aprioriSurfacePointSource, aprioriSurfacePointSourceFile, chooserName, Constrained, constraintStatus, dateTime, editLock, Fixed, Free, ignore, Isis::Distance::isValid(), jigsawRejected, LatitudeConstrained, Isis::Displacement::Meters, numberOfRejectedMeasures, parentNetwork, Isis::IException::Programmer, referenceExplicitlySet, Isis::SurfacePoint::SetRadii(), Isis::SurfacePoint::SetRectangularMatrix(), SetRefMeasure(), and type.

Isis::ControlPoint::~ControlPoint ( )

This destroys the current instance and cleans up any and all allocated memory.

Definition at line 345 of file ControlPoint.cpp.

Member Function Documentation

void Isis::ControlPoint::Add ( ControlMeasure measure)

Add a measurement to the control point, taking ownership of the measure in the process.

Parameters
measureThe ControlMeasure to add

Definition at line 421 of file ControlPoint.cpp.

References AddMeasure().

Referenced by Isis::QnetTool::createFixedPoint(), Isis::StereoTool::createPoint(), Isis::MatchTool::createPoint(), and Isis::QnetTool::createPoint().

void Isis::ControlPoint::AddMeasure ( ControlMeasure measure)
private

Do the actual work of adding a measure to this point, without changing any extra data.

Definition at line 431 of file ControlPoint.cpp.

References _FILEINFO_, Isis::ControlMeasure::GetCubeSerialNumber(), GetId(), IsReferenceExplicit(), Isis::ControlNet::measureAdded(), parentNetwork, Isis::ControlMeasure::parentPoint, and Isis::IException::Programmer.

Referenced by Add(), ControlPoint(), and operator=().

void Isis::ControlPoint::ClearJigsawRejected ( )

Set jigsaw rejected flag for all measures to false and set the jigsaw rejected flag for the point itself to false.

Definition at line 2190 of file ControlPoint.cpp.

References GetMeasure(), Isis::ControlMeasure::SetRejected(), and SetRejected().

Referenced by Isis::ControlNet::ClearJigsawRejected().

ControlPoint::Status Isis::ControlPoint::ComputeApriori ( )

This method computes the apriori lat/lon for a point.

It computes this by determining the average lat/lon of all the measures. Note that this does not change ignored, or fixed points. Also, it does not use unmeasured or ignored measures when computing the lat/lon.

History:
2008-06-18 Tracie Sucharski/Jeannie Walldren, Changed error messages for Held/Ground points.
History:
2009-10-13 Jeannie Walldren - Added detail to error message.
History:
2010-11-29 Tracie Sucharski - Remove call to ControlMeasure:: SetMeasuredEphemerisTime, the values were never used. so these methods were removed from ControlMeasure and the call was removed here.
History:
2010-12-02 Debbie A. Cook - Added units to SetRectangular calls since default is meters and units are km.
History:
2011-03-17 Debbie A. Cook - Added initialization of adjustedSurfacePoint to aprioriSurfacePoint and set test for empty covariance matrix to use 0. instead of nulls.
History:
2011-03-24 Debbie A. Cook - Removed IsMeasured check since it was really checking for Candidate measures.
History:
2011-07-12 Debbie A. Cook - Removed editLock test. Users agreed editLock was only for fixed and constrained points, which are already left unchanged by ComputeApriori. If a free point is editLocked the editLock will be ignored by this method.
Returns
Status Success or PointLocked

Definition at line 1018 of file ControlPoint.cpp.

References _FILEINFO_, adjustedSurfacePoint, aprioriSurfacePoint, Isis::Sensor::Coordinate(), Isis::Camera::DistortionMap(), Fixed, Free, GetId(), GetMeasure(), GetType(), Isis::Displacement::Kilometers, Isis::IException::Programmer, SetAprioriRadiusSource(), SetAprioriSurfacePointSource(), Isis::ControlMeasure::SetFocalPlaneMeasured(), Isis::Camera::SetImage(), Isis::SurfacePoint::SetRectangular(), Success, Isis::CameraDistortionMap::UndistortedFocalPlaneX(), Isis::CameraDistortionMap::UndistortedFocalPlaneY(), and Isis::IException::User.

Referenced by Isis::ControlNet::ComputeApriori(), and Isis::QnetSetAprioriDialog::setApriori().

ControlPoint::Status Isis::ControlPoint::ComputeResiduals ( )

This method computes the BundleAdjust residuals for a point.

*** Warning:  Only BundleAdjust and its applications should be
              using this method.
History:
2008-07-17 Tracie Sucharski, Added ptid and measure serial number to the unable to map to surface error.
History:
2009-12-06 Tracie Sucharski, Renamed from ComputeErrors
History:
2010-08-05 Tracie Sucharski, Changed lat/lon/radius to x/y/z
History:
2010-12-10 Debbie A. Cook, Revised error calculation for radar because it was always reporting line errors=0.
History:
2011-03-17 Debbie A. Cook, Fixed typo in radar call to get longitude
History:
2011-03-24 Debbie A. Cook, Removed IsMeasured check since it was really checking for Candidate measures.
History:
2011-07-01 Debbie A. Cook, Removed editLock check to allow BundleAdjust to compute residuals for editLocked points
History:
2012-01-18 Debbie A. Cook, Revised to call ComputeResidualsMillimeters() to avoid duplication of code

Definition at line 1172 of file ControlPoint.cpp.

References _FILEINFO_, ComputeResiduals_Millimeters(), Isis::CameraFocalPlaneMap::DetectorLine(), Isis::CameraFocalPlaneMap::DetectorSample(), Isis::Camera::DistortionMap(), Failure, Isis::Camera::FocalPlaneMap(), Isis::CameraDistortionMap::FocalPlaneX(), Isis::CameraDistortionMap::FocalPlaneY(), Isis::Camera::GetCameraType(), Isis::ControlMeasure::GetCubeSerialNumber(), GetId(), Isis::Sensor::GetSurfacePoint(), Isis::CameraGroundMap::GetXY(), Isis::Camera::GroundMap(), Isis::IException::Programmer, Isis::Camera::Radar, Isis::CameraFocalPlaneMap::SetFocalPlane(), Isis::Camera::SetImage(), Isis::ControlMeasure::SetResidual(), Isis::CameraDistortionMap::SetUndistortedFocalPlane(), and Success.

Referenced by Isis::BundleAdjust::ComputeResiduals(), and Isis::BundleAdjust::WrapUp().

ControlPoint::Status Isis::ControlPoint::ComputeResiduals_Millimeters ( )

This method computes the residuals for a point.

History:
2008-07-17 Tracie Sucharski - Added ptid and measure serial number to the unable to map to surface error.
History:
2010-12-06 Tracie Sucharski - Renamed from ComputeErrors
History:
2011-03-19 Debbie A. Cook - Changed to use the Camera classes like ComputeResiduals and get the correct calculations for each camera type.
History:
2011-03-24 Debbie A. Cook - Removed IsMeasured check since it was really checking for Candidate measures.
History:
2012-01-18 Debbie A. Cook - Made radar case the same as other instruments and removed incorrect call to SetResidual, which was setting focal plane residuals in x and y instead of image residuals in sample and line.

Definition at line 1324 of file ControlPoint.cpp.

References Failure, Isis::Camera::GetCameraType(), Isis::CameraGroundMap::GetXY(), Isis::Camera::GroundMap(), Isis::ControlMeasure::SetFocalPlaneComputed(), Isis::Camera::SetImage(), and Success.

Referenced by ComputeResiduals().

int Isis::ControlPoint::Delete ( ControlMeasure measure)

Remove a measurement from the control point, deleting reference measure is allowed.

Parameters
measureThe measure to delete

Definition at line 534 of file ControlPoint.cpp.

References Isis::ControlMeasure::GetCubeSerialNumber().

Referenced by Delete(), Isis::ControlNet::DeleteMeasuresWithId(), Isis::MatchTool::deletePoint(), operator=(), and Isis::QnetTool::savePoint().

int Isis::ControlPoint::Delete ( QString  serialNumber)

Remove a measurement from the control point, deleting reference measure is allowed.

Parameters
serialNumberThe serial number of the measure to delete

Definition at line 489 of file ControlPoint.cpp.

References Isis::ControlMeasure::IsEditLocked(), Isis::ControlNet::measureDeleted(), parentNetwork, referenceExplicitlySet, Success, and ValidateMeasure().

int Isis::ControlPoint::Delete ( int  index)

Remove a measurement from the control point, deleting reference measure is allowed.

Parameters
indexThe index of the control measure to delete

Definition at line 546 of file ControlPoint.cpp.

References _FILEINFO_, Delete(), and Isis::IException::Programmer.

SurfacePoint Isis::ControlPoint::GetBestSurfacePoint ( ) const

Returns the adjusted surface point if it exists, otherwise returns the a priori surface point.

Definition at line 1408 of file ControlPoint.cpp.

References adjustedSurfacePoint, and aprioriSurfacePoint.

Referenced by Isis::QnetPointRangeFilter::filter(), and Isis::QnetPointDistanceFilter::filter().

QList< QString > Isis::ControlPoint::getCubeSerialNumbers ( ) const
Returns
A list of cube serial numbers

Definition at line 1908 of file ControlPoint.cpp.

Referenced by Isis::ControlNet::SetImages().

QString Isis::ControlPoint::GetId ( ) const

Return the Id of the control point.

Returns
Control Point Id

Definition at line 1421 of file ControlPoint.cpp.

References id.

Referenced by AddMeasure(), Isis::BundleAdjust::AddPartials(), Isis::ControlNet::AddPoint(), ComputeApriori(), Isis::BundleAdjust::ComputeBundleStatistics(), Isis::BundleAdjust::ComputePartials_DC(), ComputeResiduals(), Isis::QnetTool::createFixedPoint(), Isis::StereoTool::createPoint(), Isis::QnetTool::createPoint(), Isis::StereoTool::deletePoint(), Isis::ControlNet::DeletePoint(), Isis::MatchTool::deletePoint(), Isis::MatchTool::exiting(), Isis::ControlNetFilter::FilterOutMeasuresBySerialNum(), Isis::InterestOperator::FindCnetRef(), Isis::BundleAdjust::FlagOutliers(), Isis::ControlNetStatistics::GeneratePointStats(), GetReferenceSN(), GetRefMeasure(), Isis::InterestOperator::InterestByPoint(), Isis::StereoTool::loadPoint(), Isis::MatchTool::loadPoint(), Isis::ControlNet::measureAdded(), Isis::MatchTool::measureSaved(), Isis::ControlNet::measureUnIgnored(), Isis::ControlNet::MinimumSpanningTree(), Isis::BundleAdjust::OutputNoErrorPropagation(), Isis::BundleAdjust::OutputPointsCSV(), Isis::BundleAdjust::OutputResiduals(), Isis::BundleAdjust::OutputWithErrorPropagation(), Isis::ControlNetFilter::PointCubeNamesFilter(), Isis::ControlNetFilter::PointDistanceFilter(), Isis::ControlNetFilter::PointEditLockFilter(), Isis::ControlNetFilter::PointGoodnessOfFitFilter(), Isis::ControlNetFilter::PointIDFilter(), Isis::ControlNetFilter::PointPixelShiftFilter(), Isis::ControlNetFilter::PointResMagnitudeFilter(), Isis::ControlNetFilter::PointStats(), Isis::MatchTool::savePoint(), Isis::QnetTool::savePoint(), Isis::MatchTool::selectLeftMeasure(), Isis::MatchTool::selectRightMeasure(), Isis::ControlNet::SetImages(), SetType(), Isis::MatchTool::updatePointInfo(), and Isis::ControlNet::UpdatePointReference().

double Isis::ControlPoint::GetLineResidualRms ( ) const

Get rms of line residuals.

Returns
The rms of line residuals

Definition at line 2136 of file ControlPoint.cpp.

References Isis::Statistics::AddData(), GetMeasure(), and Isis::Statistics::Rms().

const ControlMeasure * Isis::ControlPoint::GetMeasure ( QString  serialNumber) const

Get a control measure based on its cube's serial number.

Parameters
serialNumberserial number of measure to get
Returns
const control measure with matching serial number

Definition at line 595 of file ControlPoint.cpp.

References ValidateMeasure().

Referenced by Isis::Histogram::addMeasureDataFromNet(), Isis::BundleAdjust::AddPartials(), Isis::BundleAdjust::ApproximatePoint_ClosestApproach(), Isis::StereoTool::calculateElevation(), ClearJigsawRejected(), ComputeApriori(), Isis::BundleAdjust::ComputeBundleStatistics(), Isis::BundleAdjust::ComputeRejectionLimit(), Isis::BundleAdjust::ComputeResiduals(), ControlPoint(), Isis::ControlNetFilter::CubeDistanceFilter(), Isis::InterestOperator::FindCnetRef(), Isis::BundleAdjust::FlagOutliers(), Isis::BundleAdjust::formNormalEquations_CHOLMOD(), Isis::BundleAdjust::formNormalEquations_SPECIALK(), GetLineResidualRms(), Isis::ControlNetStatistics::GetPointDoubleStats(), GetResidualRms(), GetSampleResidualRms(), Isis::ControlGraph::HashCubesAndPopulateGraph(), Isis::MatchTool::IsMeasureLocked(), Isis::StereoTool::loadPoint(), Isis::ControlNet::measureAdded(), Isis::StereoTool::measureSaved(), Isis::MatchTool::measureSaved(), Isis::ControlNet::measureUnIgnored(), operator[](), Isis::BundleAdjust::OutputResiduals(), Isis::ControlNetFilter::PointCubeNamesFilter(), Isis::ControlNetFilter::PointGoodnessOfFitFilter(), Isis::ControlNetFilter::PointMeasurePropertiesFilter(), Isis::ControlNetFilter::PointMeasuresFilter(), Isis::ControlNetFilter::PointNumMeasuresEditLockFilter(), Isis::ControlNetFilter::PointPixelShiftFilter(), Isis::ControlNetFilter::PointResMagnitudeFilter(), Isis::Histogram::rangesFromNet(), and Isis::ControlNet::sortedMeasureList().

ControlMeasure * Isis::ControlPoint::GetMeasure ( QString  serialNumber)

Get a control measure based on its cube's serial number.

Parameters
serialNumberserial number of measure to get
Returns
control measure with matching serial number

Definition at line 583 of file ControlPoint.cpp.

References ValidateMeasure().

QList< ControlMeasure * > Isis::ControlPoint::getMeasures ( bool  excludeIgnored = false) const
Parameters
excludeIgnoredIgnored measures are excluded if this is true. It is false by default.
Returns
A list of this points measures

Definition at line 1893 of file ControlPoint.cpp.

Referenced by Isis::ControlNet::AddPoint(), and Isis::ControlNet::DeletePoint().

int Isis::ControlPoint::GetNumberOfRejectedMeasures ( ) const

Get the number of rejected measures on the control point.

Returns
The number of rejected measures on this control point

Definition at line 2098 of file ControlPoint.cpp.

References numberOfRejectedMeasures.

Referenced by Isis::BundleAdjust::OutputNoErrorPropagation(), Isis::BundleAdjust::OutputPointsCSV(), and Isis::BundleAdjust::OutputWithErrorPropagation().

QString Isis::ControlPoint::GetPointTypeString ( ) const

Obtain a string representation of the PointType.

Returns
A string representation of the PointType

Definition at line 1503 of file ControlPoint.cpp.

References GetType(), and PointTypeToString().

QString Isis::ControlPoint::GetRadiusSourceString ( ) const

Obtain a string representation of the RadiusSource.

Returns
A string representation of the RadiusSource

Definition at line 1586 of file ControlPoint.cpp.

References aprioriRadiusSource, and RadiusSourceToString().

ControlMeasure * Isis::ControlPoint::GetRefMeasure ( )

Get the measure that is the reference directly.

Definition at line 639 of file ControlPoint.cpp.

References _FILEINFO_, GetId(), and Isis::IException::Programmer.

double Isis::ControlPoint::GetResidualRms ( ) const
double Isis::ControlPoint::GetSampleResidualRms ( ) const

Get rms of sample residuals.

Returns
The rms of sample residuals

Definition at line 2108 of file ControlPoint.cpp.

References Isis::Statistics::AddData(), GetMeasure(), and Isis::Statistics::Rms().

Statistics Isis::ControlPoint::GetStatistic ( double(ControlMeasure::*)() const  statFunc) const

This function will call a given method on every control measure that this point has.

Parameters
statFuncThe function to use for data collection
Returns
The gathered statistic
History:
2011-03-08 Debbie A. Cook - Changed to get statistics for all point types and not just Candidate.

Definition at line 1864 of file ControlPoint.cpp.

References Isis::Statistics::AddData().

Referenced by Isis::ControlNet::AverageResidual(), Isis::QnetPointJigsawErrorFilter::filter(), Isis::QnetPointRegistrationErrorFilter::filter(), Isis::ControlNet::GetMaximumResidual(), and Isis::ControlNetStatistics::GetPointDoubleStats().

QString Isis::ControlPoint::GetSurfacePointSourceString ( ) const

Obtain a string representation of the SurfacePointSource.

Returns
A string representation of the SurfacePointSource

Definition at line 1662 of file ControlPoint.cpp.

References aprioriSurfacePointSource, and SurfacePointSourceToString().

bool Isis::ControlPoint::HasSerialNumber ( QString  serialNumber) const

Return true if given serial number exists in point.

Parameters
serialNumberThe serial number
Returns
True if point contains serial number, false if not

Definition at line 1768 of file ControlPoint.cpp.

Referenced by Isis::MatchTool::drawAllMeasurments(), Isis::StereoTool::paintViewport(), Isis::QnetTool::savePoint(), and Isis::QnetNewMeasureDialog::setFiles().

int Isis::ControlPoint::IndexOf ( ControlMeasure cm,
bool  throws = true 
) const
Parameters
cmThe control measure to find the index of
throwsThrows an exception on failure instead of returning -1. Be aware that by default this is true!
Returns
The index of the passed in measure, or -1 on failure if throws is false.

Definition at line 1804 of file ControlPoint.cpp.

References Isis::ControlMeasure::GetCubeSerialNumber().

int Isis::ControlPoint::IndexOf ( QString  sn,
bool  throws = true 
) const
Parameters
snThe serial number of the control measure to find the index of
throwsThrows an exception on failure instead of returning -1. Be aware that by default this is true!
Returns
The index of the measure with serial number matching sn, or -1 on failure if throws is false.

Definition at line 1818 of file ControlPoint.cpp.

References _FILEINFO_, and Isis::IException::Programmer.

int Isis::ControlPoint::IndexOfRefMeasure ( ) const
Parameters
throwsThrows an exception on failure instead of returning -1. Be aware that by default this is true!
Returns
The index of the reference measure, or -1 if no measures exist in the point (A point with at least one measure ALWAYS has a reference measure.

Definition at line 1839 of file ControlPoint.cpp.

References _FILEINFO_, Isis::ControlMeasure::GetCubeSerialNumber(), and Isis::IException::Programmer.

Referenced by Isis::InterestOperator::FindCnetRef(), and Isis::MatchTool::loadPoint().

bool Isis::ControlPoint::IsReferenceExplicit ( ) const
void Isis::ControlPoint::Load ( PvlObject p)

Loads the PvlObject into a ControlPoint.

Parameters
pPvlObject containing ControlPoint information
forceBuildAllows invalid Control Measures to be added to this Control Point
Exceptions
Isis::iException::User- Invalid Point Type
Isis::iException::User- Unable to add ControlMeasure to Control Point
History:
2008-06-18 Tracie Sucharski/Jeannie Walldren, Fixed bug with checking for "True" vs "true", change to lower case for comparison.
History:
2009-12-29 Tracie Sucharski - Added new ControlPoint information.
History:
2010-01-13 Tracie Sucharski - Changed from Set methods to simply setting private variables to increase speed?
History:
2010-07-30 Tracie Sucharski, Updated for changes made after additional working sessions for Control network design.
History:
2010-09-01 Tracie Sucharski, Add checks for AprioriLatLonSource AprioriLatLonSourceFile. If there are AprioriSigmas,but no AprioriXYZ, use the XYZ values.
History:
2010-09-15 Tracie Sucharski, It was decided after mtg with Debbie, Stuart, Ken and Tracie that ControlPoint will only function with x/y/z, not lat/lon/radius. It will be the responsibility of the application or class using ControlPoint to set up a SurfacePoint object to do conversions between x/y/z and lat/lon/radius. So... remove all conversion methods from this class. It was also decided that when importing old networks that contain Sigmas, the sigmas will not be imported , due to conflicts with the units of the sigmas,we cannot get accurate x,y,z sigams from the lat,lon,radius sigmas without the covariance matrix.
History:
2010-09-28 Tracie Sucharski, Added back the conversion methods from lat,lon,radius to x,y,z only for the point, since that is what most applications need.
History:
2010-12-02 Debbie A. Cook, Added units to SurfacePoint.SetSpherical calls.
History:
2011-03-12 Debbie A. Cook, Added targetRadius to do conversions

Definition at line 410 of file ControlPoint.cpp.

bool Isis::ControlPoint::operator!= ( const ControlPoint other) const

Compare two Control Points for inequality.

Parameters
otherThe other point to compare this one to
Returns
true if the two points are not equal, and false otherwise

Definition at line 1970 of file ControlPoint.cpp.

const ControlPoint & Isis::ControlPoint::operator= ( const ControlPoint other)
Parameters
pPoint
Returns
ControlPoint&
History:
2011-09-13 Eric Hyer,Tracie Sucharski - Changed input parameter to const &. Re-wrote using Delete and AddMeasure methods, so that the ControlGraphNode is updated correctly.
History:
2011-09-30 Tracie Sucharski - Fixed some memory leaks and deleted some calls that were already handled in AddMeasure.
History:
2011-10-03 Tracie Sucharski - Unlock measures before Deleting

Definition at line 2024 of file ControlPoint.cpp.

References AddMeasure(), adjustedSurfacePoint, aprioriRadiusSource, aprioriRadiusSourceFile, aprioriSurfacePoint, aprioriSurfacePointSource, aprioriSurfacePointSourceFile, chooserName, constraintStatus, dateTime, Delete(), editLock, id, ignore, invalid, jigsawRejected, numberOfRejectedMeasures, referenceExplicitlySet, SetRefMeasure(), and type.

bool Isis::ControlPoint::operator== ( const ControlPoint other) const

Compare two Control Points for equality.

Parameters
otherThe other point to compare to
Returns
true if the two points are equal, and false otherwise

Definition at line 1983 of file ControlPoint.cpp.

References adjustedSurfacePoint, aprioriRadiusSource, aprioriRadiusSourceFile, aprioriSurfacePoint, aprioriSurfacePointSource, aprioriSurfacePointSourceFile, chooserName, constraintStatus, dateTime, editLock, id, ignore, invalid, jigsawRejected, numberOfRejectedMeasures, referenceExplicitlySet, and type.

const ControlMeasure * Isis::ControlPoint::operator[] ( QString  serialNumber) const

Same as GetMeasure (provided for convenience)

Parameters
serialNumberCube serial number of desired control measure
Returns
const version of the measure which has the provided serial number

Definition at line 1920 of file ControlPoint.cpp.

References GetMeasure().

ControlMeasure * Isis::ControlPoint::operator[] ( QString  serialNumber)

Same as GetMeasure (provided for convenience)

Parameters
serialNumberCube serial number of desired control measure
Returns
The measure which has the provided serial number

Definition at line 1932 of file ControlPoint.cpp.

References GetMeasure().

const ControlMeasure * Isis::ControlPoint::operator[] ( int  index) const

Same as GetMeasure (provided for convenience)

Parameters
indexIf there are n measures, the measure returned will be the ith measure added to the point
Returns
const version of the measure which has the provided serial number

Definition at line 1945 of file ControlPoint.cpp.

References GetMeasure().

ControlMeasure * Isis::ControlPoint::operator[] ( int  index)

Same as GetMeasure (provided for convenience)

Parameters
indexIf there are n measures, the measure returned will be the ith measure added to the point
Returns
The measure which has the provided serial number

Definition at line 1958 of file ControlPoint.cpp.

References GetMeasure().

QString Isis::ControlPoint::PointTypeToString ( PointType  pointType)
static

Obtain a string representation of a given PointType.

Parameters
typePointType to convert to a string
Returns
A string representation of type

Definition at line 1448 of file ControlPoint.cpp.

References Constrained, Fixed, and Free.

Referenced by Isis::QnetTool::createControlPointGroupBox(), and GetPointTypeString().

QString Isis::ControlPoint::RadiusSourceToString ( RadiusSource::Source  source)
static

Obtain a string representation of a given RadiusSource.

Parameters
sourceRadiusSource to convert to string
Returns
A string representation of RadiusSource

Definition at line 1524 of file ControlPoint.cpp.

Referenced by GetRadiusSourceString().

ControlPoint::Status Isis::ControlPoint::ResetApriori ( )

Reset all the Apriori info to defaults.

Author
Sharmila Prasad (10/22/2010)

Definition at line 561 of file ControlPoint.cpp.

References aprioriRadiusSource, aprioriRadiusSourceFile, aprioriSurfacePoint, aprioriSurfacePointSource, aprioriSurfacePointSourceFile, constraintStatus, PointLocked, and Success.

ControlPoint::Status Isis::ControlPoint::SetAdjustedSurfacePoint ( SurfacePoint  newSurfacePoint)

Set or update the surface point relating to this control point.

This is the point on the surface of the planet that the measures are tied to. This updates the last modified attributes of this point. *** Warning: Only BundleAdjust and its applications should be using this method.

Parameters
newSurfacePointThe point on the target's surface the measures are tied to
History:
2011-07-01 Debbie A. Cook Removed editLock check

Definition at line 852 of file ControlPoint.cpp.

References adjustedSurfacePoint, and Success.

Referenced by Isis::BundleAdjust::applyParameterCorrections_CHOLMOD(), Isis::BundleAdjust::applyParameterCorrections_SPECIALK(), Isis::BundleAdjust::errorPropagation_CHOLMOD(), Isis::BundleAdjust::errorPropagation_SPECIALK(), Isis::BundleAdjust::formNormals2_CHOLMOD(), Isis::BundleAdjust::formNormals2_SPECIALK(), Isis::BundleAdjust::InitializePoints(), Isis::BundleAdjust::SetPostBundleSigmas(), and Isis::BundleAdjust::Update().

ControlPoint::Status Isis::ControlPoint::SetAprioriRadiusSource ( RadiusSource::Source  source)

This updates the source of the radius of the apriori surface point.

See Also
RadiusSource::Source
Parameters
sourceWhere the radius came from

Definition at line 890 of file ControlPoint.cpp.

References aprioriRadiusSource, editLock, PointLocked, and Success.

Referenced by ComputeApriori(), and Isis::QnetSetAprioriDialog::setApriori().

ControlPoint::Status Isis::ControlPoint::SetAprioriRadiusSourceFile ( QString  sourceFile)

This updates the filename of the DEM that the apriori radius came from.

It doesn't really make sense to call this unless the RadiusSource is DEM.

See Also
RadiusSource::Source
Parameters
sourceWhere the radius came from

Definition at line 908 of file ControlPoint.cpp.

References aprioriRadiusSourceFile, editLock, PointLocked, and Success.

ControlPoint::Status Isis::ControlPoint::SetAprioriSurfacePoint ( SurfacePoint  aprioriSP)

This updates the apriori surface point.

See Also
SetAprioriRadiusSource
SetAprioriRadiusSourceFile
SetAprioriPointSource
SetAprioriPointSourceFile
aprioriSurfacePoint
Parameters
aprioriSPThe apriori surface point to remember
Todo:
This method needs to be revisited. It will set the constraint status based on the sigmas and override the existing status.

Definition at line 931 of file ControlPoint.cpp.

References aprioriSurfacePoint, constraintStatus, editLock, Isis::ControlNet::GetTargetRadii(), Isis::Angle::isValid(), Isis::Distance::isValid(), LatitudeConstrained, parentNetwork, PointLocked, Isis::SurfacePoint::SetRadii(), and Success.

Referenced by Isis::QnetTool::createFixedPoint(), Isis::StereoTool::createPoint(), Isis::StereoTool::measureSaved(), and Isis::QnetSetAprioriDialog::setApriori().

ControlPoint::Status Isis::ControlPoint::SetAprioriSurfacePointSource ( SurfacePointSource::Source  source)

This updates the source of the surface point.

See Also
SurfacePointSource::Source
Parameters
sourceWhere the surface point came from

Definition at line 958 of file ControlPoint.cpp.

References aprioriSurfacePointSource, editLock, PointLocked, and Success.

Referenced by ComputeApriori(), and Isis::QnetSetAprioriDialog::setApriori().

ControlPoint::Status Isis::ControlPoint::SetAprioriSurfacePointSourceFile ( QString  sourceFile)

This updates the filename of where the apriori surface point came from.

See Also
RadiusSource::Source
Parameters
sourceFileWhere the surface point came from

Definition at line 975 of file ControlPoint.cpp.

References aprioriSurfacePointSourceFile, editLock, PointLocked, and Success.

ControlPoint::Status Isis::ControlPoint::SetChooserName ( QString  name)

Set the point's chooser name.

This will be lost if any attributes relating to this point is later changed and the current user will be set. This is one of the 'last modified attributes' referred to in other comments.

Parameters
nameThe username of the person who last modified this control point

Definition at line 656 of file ControlPoint.cpp.

References chooserName, editLock, PointLocked, and Success.

Referenced by Isis::QnetTool::createFixedPoint(), Isis::MatchTool::createPoint(), and Isis::QnetTool::createPoint().

ControlPoint::Status Isis::ControlPoint::SetDateTime ( QString  newDateTime)

Set the point's last modified time.

This will be lost if any attributes relating to this point are later changed and the current time will be set. This is one of the 'last modified attributes' referred to in other comments.

Parameters
newDateTimeThe date and time this control point was last modified

Definition at line 672 of file ControlPoint.cpp.

References dateTime, editLock, PointLocked, and Success.

ControlPoint::Status Isis::ControlPoint::SetEditLock ( bool  lock)

Set the EditLock state.

If edit lock is on, then most attributes relating to this point are not modifiable. Edit lock is like "Don't modify my attributes, but you can still modify my measures' attributes". The reference measure is implicitely edit locked if the point is edit locked.

Parameters
lockTrue to enable edit lock, false to disable it and allow the point to be modified.

Definition at line 689 of file ControlPoint.cpp.

References editLock, and Success.

Referenced by Isis::ControlNetFilter::FilterOutMeasuresBySerialNum(), Isis::ControlNetFilter::FilterOutPoint(), Isis::MatchTool::setLockPoint(), and Isis::MatchTool::updatePointInfo().

void Isis::ControlPoint::SetExplicitReference ( ControlMeasure measure)
private

Explicitly defines a new reference measure by pointer.

This assumes the point already has ownership over this pointer. As part of the explicit definition process, the reference will attempt to be made ignored if the measure will allow it.

In the past, setting an explicit reference would also attempt to set the new reference to un-ignored (this would only fail if the measure was "Edit Locked"). This blanket rule was removed, however, because the bundle adjustment processing phase could often intentionally set references to ignored, and in some instances (e.g., merging a partial network back into the base network) this rule would mistakenly set those properly ignored references back to un-ignored. While this rule made sense for the registration phase of processing, it clearly caused problems during bundle adjustment and merging.

Parameters
measureThe new reference measure

Definition at line 800 of file ControlPoint.cpp.

References referenceExplicitlySet.

Referenced by SetRefMeasure().

ControlPoint::Status Isis::ControlPoint::SetId ( QString  newId)

Sets the Id of the control point.

Parameters
idControl Point Id
Returns
(int) status Success or PointLocked

Definition at line 716 of file ControlPoint.cpp.

References editLock, id, parentNetwork, PointLocked, Success, and Isis::ControlNet::UpdatePointReference().

ControlPoint::Status Isis::ControlPoint::SetIgnored ( bool  newIgnoreStatus)

Set whether to ignore or use control point.

Parameters
newIgnoreStatusTrue to ignore this Control Point, False to un-ignore

Definition at line 812 of file ControlPoint.cpp.

References editLock, ignore, Isis::ControlNet::measureUnIgnored(), parentNetwork, PointLocked, and Success.

Referenced by Isis::InterestOperator::FindCnetRef(), Isis::MatchTool::measureSaved(), Isis::InterestOperator::ProcessLocked_Point_Reference(), Isis::MatchTool::setIgnorePoint(), and Isis::MatchTool::updatePointInfo().

void Isis::ControlPoint::SetNumberOfRejectedMeasures ( int  numRejected)

Set (update) the number of rejected measures for the control point.

Parameters
numRejectedThe number of rejected measures

Definition at line 2087 of file ControlPoint.cpp.

References numberOfRejectedMeasures.

Referenced by Isis::BundleAdjust::FlagOutliers().

ControlPoint::Status Isis::ControlPoint::SetRefMeasure ( ControlMeasure cm)

Set the point's reference measure.

Parameters
cmThe new reference measure

Definition at line 732 of file ControlPoint.cpp.

References editLock, PointLocked, SetExplicitReference(), and Success.

Referenced by ControlPoint(), Isis::InterestOperator::FindCnetRef(), and operator=().

ControlPoint::Status Isis::ControlPoint::SetRefMeasure ( int  index)

Set the point's reference measure.

Parameters
indexThe index of the new reference measure

Definition at line 747 of file ControlPoint.cpp.

References _FILEINFO_, editLock, PointLocked, Isis::IException::Programmer, SetExplicitReference(), Success, and Isis::toString().

ControlPoint::Status Isis::ControlPoint::SetRefMeasure ( QString  sn)

Set the points reference measure.

Parameters
snThe serial number of the new reference measure

Definition at line 767 of file ControlPoint.cpp.

References _FILEINFO_, editLock, PointLocked, Isis::IException::Programmer, SetExplicitReference(), and Success.

ControlPoint::Status Isis::ControlPoint::SetRejected ( bool  reject)

Set the jigsawRejected state.

If IsRejected is true, then this point should be ignored until the next iteration in the bundle adjustement. BundleAdjust decides when to reject or accept a point. The initial IsRejected state of a measure is false.

Parameters
rejectTrue to reject a measure, false to include it in the adjustment

Definition at line 703 of file ControlPoint.cpp.

References jigsawRejected, and Success.

Referenced by ClearJigsawRejected(), and Isis::BundleAdjust::FlagOutliers().

ControlPoint::Status Isis::ControlPoint::SetType ( PointType  newType)

Updates the control point's type.

This updates the last modified attributes of this point.

See Also
PointType
Parameters
newTypeThe new type this control point should be

Definition at line 868 of file ControlPoint.cpp.

References _FILEINFO_, Constrained, editLock, Fixed, Free, GetId(), PointLocked, Isis::IException::Programmer, Success, and type.

Referenced by Isis::QnetTool::createFixedPoint(), Isis::StereoTool::createPoint(), and Isis::MatchTool::createPoint().

ControlPoint::PointType Isis::ControlPoint::StringToPointType ( QString  pointTypeString)
static

Obtain a PointType given a string representation of it.

Parameters
pointTypeStringfor the requested PointType
Returns
the PointType for the given string

Definition at line 1474 of file ControlPoint.cpp.

References _FILEINFO_, Constrained, Fixed, Free, Isis::IException::Programmer, and type.

ControlPoint::RadiusSource::Source Isis::ControlPoint::StringToRadiusSource ( QString  str)
static

Obtain a RadiusSource::Source from a string.

Parameters
strstring to get a RadiusSource::Source from
Returns
The RadiusSource::Source matching the given string

Definition at line 1559 of file ControlPoint.cpp.

ControlPoint::SurfacePointSource::Source Isis::ControlPoint::StringToSurfacePointSource ( QString  str)
static

Obtain a SurfacePoint::Source from a string.

Parameters
strstring to get a SurfacePoint::Source from
Returns
The SurfacePint::Source matching the given string

Definition at line 1636 of file ControlPoint.cpp.

QString Isis::ControlPoint::SurfacePointSourceToString ( SurfacePointSource::Source  source)
static

Obtain a string representation of a given SurfacePointSource.

Parameters
souceSurfacePointSource to get a string representation of
Returns
A string representation of SurfacePointSource

Definition at line 1598 of file ControlPoint.cpp.

Referenced by GetSurfacePointSourceString().

void Isis::ControlPoint::ValidateMeasure ( QString  serialNumber) const
private

Throws an exception if none of the point's measures have the given serial number.

It is common to ensure that a measure exists before taking some action.

Parameters
snThe serial number of the measure to validate

Definition at line 474 of file ControlPoint.cpp.

References _FILEINFO_, and Isis::IException::Programmer.

Referenced by Delete(), and GetMeasure().

void Isis::ControlPoint::ZeroNumberOfRejectedMeasures ( )

Initialize the number of rejected measures to 0.

Definition at line 2074 of file ControlPoint.cpp.

References numberOfRejectedMeasures.

Referenced by Isis::BundleAdjust::FlagOutliers().

Member Data Documentation

SurfacePoint Isis::ControlPoint::adjustedSurfacePoint
private

This is the calculated, or aposterori, surface point.

This is what most programs should be working with and updating.

Definition at line 682 of file ControlPoint.h.

Referenced by ComputeApriori(), ControlPoint(), GetBestSurfacePoint(), operator=(), operator==(), and SetAdjustedSurfacePoint().

RadiusSource::Source Isis::ControlPoint::aprioriRadiusSource
private

Where the apriori surface point's radius originated from, most commonly used by jigsaw.

Definition at line 661 of file ControlPoint.h.

Referenced by ControlPoint(), GetRadiusSourceString(), operator=(), operator==(), ResetApriori(), and SetAprioriRadiusSource().

QString Isis::ControlPoint::aprioriRadiusSourceFile
private

The name of the file that derives the apriori surface point's radius.

Definition at line 666 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), ResetApriori(), and SetAprioriRadiusSourceFile().

SurfacePoint Isis::ControlPoint::aprioriSurfacePoint
private

The apriori surface point.

This is the "known truth" or trustworthy point that should not be modified unless done very explicitely. This comes from places like hand picking where you really don't want the surface point to vary far from this point, but some variation is okay (1/10th of a pixel is fair for human accuracy for example). Very often this point does not exist.

Definition at line 676 of file ControlPoint.h.

Referenced by ComputeApriori(), ControlPoint(), GetBestSurfacePoint(), operator=(), operator==(), ResetApriori(), and SetAprioriSurfacePoint().

SurfacePointSource::Source Isis::ControlPoint::aprioriSurfacePointSource
private

Where the apriori surface point originated from.

Definition at line 652 of file ControlPoint.h.

Referenced by ControlPoint(), GetSurfacePointSourceString(), operator=(), operator==(), ResetApriori(), and SetAprioriSurfacePointSource().

QString Isis::ControlPoint::aprioriSurfacePointSourceFile
private

FileName where the apriori surface point originated from.

Definition at line 655 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), ResetApriori(), and SetAprioriSurfacePointSourceFile().

QString Isis::ControlPoint::chooserName
private

This is the user name of the person who last modified this control point.

Modifications are things like updating the surface point, but not things like updating the last modified time. The calculations relating to this control point have to actually change for this to be updated. This is an empty string if we need to dynamically get the username of the caller when asked for (or written to file).

Definition at line 598 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), and SetChooserName().

std::bitset<6> Isis::ControlPoint::constraintStatus
private

This stores the constraint status of the a priori SurfacePoint.

Todo:
Eventually add x, y, and z

Definition at line 635 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), ResetApriori(), and SetAprioriSurfacePoint().

QString Isis::ControlPoint::dateTime
private

This is the last modified date and time.

This is updated automatically and works virtually in the same way as chooserName.

Definition at line 604 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), and SetDateTime().

QString Isis::ControlPoint::id
private

This is the control point ID.

This is supposed to be a unique identifier for control points. This often has a number in it, and looks like "T0052" where the next one is "T0053" and so on.

Definition at line 588 of file ControlPoint.h.

Referenced by ControlPoint(), GetId(), operator=(), operator==(), and SetId().

bool Isis::ControlPoint::ignore
private

True if we should preserve but ignore the entire control point and its measures.

Definition at line 649 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), and SetIgnored().

bool Isis::ControlPoint::invalid
private

If we forced a build that we would normally have thrown an exception for then this is set to true.

Otherwise, and most of the time, this is false.

Definition at line 617 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), and operator==().

bool Isis::ControlPoint::jigsawRejected
private

This stores the jigsaw rejected state.

See Also
SetJigsawReject

Definition at line 629 of file ControlPoint.h.

Referenced by ControlPoint(), operator=(), operator==(), and SetRejected().

int Isis::ControlPoint::numberOfRejectedMeasures
private

This parameter is used and maintained by BundleAdjust for the jigsaw application.

It is stored here because ControlPoint contains the index of the measures.

Definition at line 689 of file ControlPoint.h.

Referenced by ControlPoint(), GetNumberOfRejectedMeasures(), operator=(), operator==(), SetNumberOfRejectedMeasures(), and ZeroNumberOfRejectedMeasures().

ControlNet* Isis::ControlPoint::parentNetwork
private
bool Isis::ControlPoint::referenceExplicitlySet
private

This indicates if a program has explicitely set the reference in this point or the implicit reference is still the current reference.

This is useful for programs that want to choose the reference for all points where this hasn't happened yet.

Definition at line 643 of file ControlPoint.h.

Referenced by ControlPoint(), Delete(), IsReferenceExplicit(), operator=(), operator==(), and SetExplicitReference().

PointType Isis::ControlPoint::type
private

What this control point is tying together.

See Also
PointType

Definition at line 610 of file ControlPoint.h.

Referenced by ControlPoint(), GetType(), operator=(), operator==(), SetType(), and StringToPointType().


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