Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

Isis Developer Reference
ControlPoint.h
Go to the documentation of this file.
1#ifndef ControlPoint_h
2#define ControlPoint_h
3
9
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <bitset>
13
14#include <QObject>
15#include <QString>
16
17#include "ControlMeasure.h"
18#include "SurfacePoint.h"
19
20template< typename A, typename B > class QHash;
21
22namespace Isis {
23 class ControlNet;
24 class ControlPointFileEntryV0002;
25 class Latitude;
26 class Longitude;
27 class PBControlNet_PBControlPoint;
28 class PBControlNetLogData_Point;
29 class PvlObject;
30 class Statistics;
31
354 class ControlPoint : public QObject {
355
356 Q_OBJECT
357
358 friend class ControlNet;
359 public:
371 Fixed = 0,
385 };
386 static const int PointTypeCount = 3;
387
410
420
436
437 // This stuff input to jigsaw
438 // How did apriori source get computed??
449
460
461 ControlPoint();
462 ControlPoint(const ControlPoint &);
463 ControlPoint(const QString &id);
464 virtual ~ControlPoint();
465
466 ControlNet *Parent() { return parentNetwork; }
467
468 void Load(PvlObject &p);
469
470 void Add(ControlMeasure *measure);
471 int Delete(ControlMeasure *measure);
472 int Delete(QString serialNumber);
473 int Delete(int index);
475
476 const ControlMeasure *GetMeasure(QString serialNumber) const;
477 ControlMeasure *GetMeasure(QString serialNumber);
478
479 const ControlMeasure *GetMeasure(int index) const;
480 ControlMeasure *GetMeasure(int index);
481
482 bool HasRefMeasure() const;
483 const ControlMeasure *GetRefMeasure() const;
485
486 Status SetChooserName(QString name);
487 Status SetDateTime(QString newDateTime);
488 Status SetEditLock(bool editLock);
489 Status SetId(QString id);
491 Status SetRefMeasure(int index);
492 Status SetRefMeasure(QString sn);
493 Status SetRejected(bool rejected);
494 Status SetIgnored(bool newIgnoreStatus);
496 Status SetType(PointType newType);
497
499 Status SetAprioriRadiusSourceFile(QString sourceFile);
502 Status SetAprioriSurfacePointSourceFile(QString sourceFile);
503
504// Status UpdateSphericalPointCoordinates(const Latitude &lat, const Longitude &lon,
505// const Distance &radius);
506
510
512
514 QString GetChooserName() const;
515 QString GetDateTime() const;
516 bool IsEditLocked() const;
517 bool IsRejected() const;
518 QString GetId() const;
519 bool IsIgnored() const;
520 bool IsValid() const;
521 // Can we get rid of this? It doesn't appear to be used anywhere. *** ToDo ***
522 bool IsInvalid() const;
523 bool IsFree() const;
524 bool IsFixed() const;
526
527 bool IsConstrained();
528 bool IsCoord1Constrained();
529 bool IsCoord2Constrained();
530 bool IsCoord3Constrained();
532
533 static QString PointTypeToString(PointType type);
534 static PointType StringToPointType(QString pointTypeString);
535
536 QString GetPointTypeString() const;
537 PointType GetType() const;
538
539 static QString RadiusSourceToString(RadiusSource::Source source);
540 static RadiusSource::Source StringToRadiusSource(QString str);
541 QString GetRadiusSourceString() const;
544 QString GetSurfacePointSourceString() const;
546
548 bool HasAprioriRadiusSourceFile() const;
549 QString GetAprioriRadiusSourceFile() const;
552 QString GetAprioriSurfacePointSourceFile() const;
553
554 int GetNumMeasures() const;
555 int GetNumValidMeasures() const;
556 int GetNumLockedMeasures() const;
557 bool HasSerialNumber(QString serialNumber) const;
558 bool HasChooserName() const;
559 bool HasDateTime() const;
560 int IndexOf(ControlMeasure *, bool throws = true) const;
561 int IndexOf(QString sn, bool throws = true) const;
562 int IndexOfRefMeasure() const;
563 bool IsReferenceExplicit() const;
564 QString GetReferenceSN() const;
565 void emitMeasureModified(ControlMeasure *measure, ControlMeasure::ModType modType, QVariant oldValue, QVariant newValue);
566
567
568
569 Statistics GetStatistic(double(ControlMeasure::*statFunc)() const) const;
570 Statistics GetStatistic(long dataType) const;
571
572 QList< ControlMeasure * > getMeasures(bool excludeIgnored = false) const;
574
575 const ControlMeasure *operator[](QString serialNumber) const;
576 ControlMeasure *operator[](QString serialNumber);
577
578 const ControlMeasure *operator[](int index) const;
579 ControlMeasure *operator[](int index);
580
581 bool operator!=(const ControlPoint &pPoint) const;
582 bool operator==(const ControlPoint &pPoint) const;
583 const ControlPoint &operator=(const ControlPoint &pPoint);
584
585 // The next 7 methods are specifically to support BundleAdjust
587 void SetNumberOfRejectedMeasures(int numRejected);
588 int GetNumberOfRejectedMeasures() const;
589 double GetSampleResidualRms() const;
590 double GetLineResidualRms() const;
591 double GetResidualRms() const;
592 void ClearJigsawRejected();
593
594 protected:
595 void PointModified();
598
599 private:
600 void SetExplicitReference(ControlMeasure *measure);
601 void ValidateMeasure(QString serialNumber) const;
602 void AddMeasure(ControlMeasure *measure);
603
604
605 ControlNet *parentNetwork;
606
607 QStringList *cubeSerials;
608
609 ControlMeasure *referenceMeasure;
610
616 QString id;
617
626 QString chooserName;
627
632 QString dateTime;
633
638 PointType type;
639
645 bool invalid;
646
651 bool editLock;
652
657 bool jigsawRejected;
658
663 std::bitset<3> constraintStatus;
664
671 bool referenceExplicitlySet;
672
677 bool ignore;
678
680 SurfacePointSource::Source aprioriSurfacePointSource;
681
683 QString aprioriSurfacePointSourceFile;
684
689 RadiusSource::Source aprioriRadiusSource;
690
694 QString aprioriRadiusSourceFile;
695
704 SurfacePoint aprioriSurfacePoint;
705
710 SurfacePoint adjustedSurfacePoint;
711
717 int numberOfRejectedMeasures;
718 };
719}
720
721#endif
a control measurement
Definition ControlMeasure.h:175
ModType
Control Measure Modification Types.
Definition ControlMeasure.h:232
a control network
Definition ControlNet.h:257
A single control point.
Definition ControlPoint.h:354
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
Definition ControlPoint.cpp:454
ControlNet * Parent()
Definition ControlPoint.h:466
static QString RadiusSourceToString(RadiusSource::Source source)
Obtain a string representation of a given RadiusSource.
Definition ControlPoint.cpp:1409
static SurfacePointSource::Source StringToSurfacePointSource(QString str)
Obtain a SurfacePoint::Source from a string.
Definition ControlPoint.cpp:1526
Status
This is a return status for many of the mutating (setter) method calls.
Definition ControlPoint.h:393
@ PointLocked
This is returned when the operation requires Edit Lock to be false but it is currently true.
Definition ControlPoint.h:408
@ Success
This is returned when the operation successfully took effect.
Definition ControlPoint.h:403
@ Failure
This is returned when an operation cannot be performed due to a problem such as the point is ignored ...
Definition ControlPoint.h:399
int NumberOfConstrainedCoordinates()
Return bool indicating if point is Constrained or not.
Definition ControlPoint.cpp:1657
bool IsEditLocked() const
Definition ControlPoint.cpp:1268
Status SetEditLock(bool editLock)
Set the EditLock state.
Definition ControlPoint.cpp:519
const ControlPoint & operator=(const ControlPoint &pPoint)
Definition ControlPoint.cpp:1999
bool IsFree() const
Return bool indicating if point is Free or not.
Definition ControlPoint.cpp:1590
static RadiusSource::Source StringToRadiusSource(QString str)
Obtain a RadiusSource::Source from a string.
Definition ControlPoint.cpp:1444
QString GetDateTime() const
Definition ControlPoint.cpp:1258
ConstraintStatus
This is a convenience member for checking number of constrained coordinates in the SurfacePoint.
Definition ControlPoint.h:415
@ Coord1Constrained
Definition ControlPoint.h:416
@ Coord3Constrained
Definition ControlPoint.h:418
@ Coord2Constrained
Definition ControlPoint.h:417
bool IsRejected() const
Definition ControlPoint.cpp:1273
bool operator==(const ControlPoint &pPoint) const
Compare two Control Points for equality.
Definition ControlPoint.cpp:1958
void ClearJigsawRejected()
Set jigsaw rejected flag for all measures to false and set the jigsaw rejected flag for the point its...
Definition ControlPoint.cpp:2184
Status SetAprioriSurfacePoint(SurfacePoint aprioriSP)
This updates the apriori surface point.
Definition ControlPoint.cpp:775
QString GetAprioriRadiusSourceFile() const
Definition ControlPoint.cpp:1672
ModType
Control Point Modification Types.
Definition ControlPoint.h:431
@ EditLockModified
Definition ControlPoint.h:432
@ TypeModified
Definition ControlPoint.h:434
@ IgnoredModified
Definition ControlPoint.h:433
Status SetId(QString id)
Sets the Id of the control point.
Definition ControlPoint.cpp:549
Status SetAprioriRadiusSource(RadiusSource::Source source)
This updates the source of the radius of the apriori surface point.
Definition ControlPoint.cpp:732
double GetResidualRms() const
Get rms of residuals.
Definition ControlPoint.cpp:2154
bool IsReferenceExplicit() const
Definition ControlPoint.cpp:1751
Status ComputeResiduals_Millimeters()
This method computes the residuals for a point.
Definition ControlPoint.cpp:1188
RadiusSource::Source GetAprioriRadiusSource() const
Definition ControlPoint.cpp:1567
virtual ~ControlPoint()
This destroys the current instance and cleans up any and all allocated memory.
Definition ControlPoint.cpp:146
bool HasDateTime() const
Returns true if the datetime is not empty.
Definition ControlPoint.cpp:1253
Status SetChooserName(QString name)
Set the point's chooser name.
Definition ControlPoint.cpp:484
SurfacePoint GetAprioriSurfacePoint() const
Definition ControlPoint.cpp:1562
bool HasRefMeasure() const
Checks to see if a reference measure is set.
Definition ControlPoint.cpp:444
int GetNumValidMeasures() const
Definition ControlPoint.cpp:1707
bool IsInvalid() const
Definition ControlPoint.cpp:1317
QList< QString > getCubeSerialNumbers() const
Definition ControlPoint.cpp:1883
int GetNumLockedMeasures() const
Returns the number of locked control measures.
Definition ControlPoint.cpp:1724
friend class ControlNet
Definition ControlPoint.h:358
int GetNumMeasures() const
Definition ControlPoint.cpp:1698
int Delete(ControlMeasure *measure)
Remove a measurement from the control point, deleting reference measure is allowed.
Definition ControlPoint.cpp:352
Status SetRejected(bool rejected)
Set the jigsawRejected state.
Definition ControlPoint.cpp:536
void Add(ControlMeasure *measure)
Add a measurement to the control point, taking ownership of the measure in the process.
Definition ControlPoint.cpp:222
PointType GetType() const
Definition ControlPoint.cpp:1397
QString GetChooserName() const
Definition ControlPoint.cpp:1238
Status SetAdjustedSurfacePoint(SurfacePoint newSurfacePoint)
Set or update the surface point relating to this control point.
Definition ControlPoint.cpp:688
PointType
These are the valid 'types' of point.
Definition ControlPoint.h:364
@ Constrained
A Constrained point is a Control Point whose lat/lon/radius is somewhat established and should not be...
Definition ControlPoint.h:376
@ Free
A Free point is a Control Point that identifies common measurements between two or more cubes.
Definition ControlPoint.h:384
@ Fixed
A Fixed point is a Control Point whose lat/lon is well established and should not be changed.
Definition ControlPoint.h:371
Status SetType(PointType newType)
Updates the control point's type.
Definition ControlPoint.cpp:705
Status SetAprioriSurfacePointSourceFile(QString sourceFile)
This updates the filename of where the apriori surface point came from.
Definition ControlPoint.cpp:835
int IndexOfRefMeasure() const
Definition ControlPoint.cpp:1812
Status SetAprioriSurfacePointSource(SurfacePointSource::Source source)
This updates the source of the surface point.
Definition ControlPoint.cpp:817
const ControlMeasure * GetMeasure(QString serialNumber) const
Get a control measure based on its cube's serial number.
Definition ControlPoint.cpp:413
double GetLineResidualRms() const
Get rms of line residuals.
Definition ControlPoint.cpp:2123
bool IsCoord2Constrained()
Return bool indicating if 2nd coordinate is Constrained or not.
Definition ControlPoint.cpp:1637
bool HasAprioriRadiusSourceFile() const
Checks to see if the radius source file has been set.
Definition ControlPoint.cpp:1667
bool IsCoord1Constrained()
Return bool indicating if 1st coordinate is Constrained or not.
Definition ControlPoint.cpp:1626
QString GetPointTypeString() const
Obtain a string representation of the PointType.
Definition ControlPoint.cpp:1388
double GetSampleResidualRms() const
Get rms of sample residuals.
Definition ControlPoint.cpp:2092
bool HasChooserName() const
Returns true if the choosername is not empty.
Definition ControlPoint.cpp:1248
Status SetIgnored(bool newIgnoreStatus)
Set whether to ignore or use control point.
Definition ControlPoint.cpp:649
Status SetDateTime(QString newDateTime)
Set the point's last modified time.
Definition ControlPoint.cpp:501
bool IsCoord3Constrained()
Return bool indicating if 3rd coordinate is Constrained or not.
Definition ControlPoint.cpp:1647
ControlPoint()
Construct a control point.
Definition ControlPoint.cpp:47
Statistics GetStatistic(double(ControlMeasure::*statFunc)() const) const
This function will call a given method on every control measure that this point has.
Definition ControlPoint.cpp:1836
SurfacePoint GetAdjustedSurfacePoint() const
Definition ControlPoint.cpp:1278
bool IsConstrained()
Return bool indicating if point is Constrained or not.
Definition ControlPoint.cpp:1610
void PointModified()
List of Control Measures.
Definition ControlPoint.cpp:2052
bool IsIgnored() const
Definition ControlPoint.cpp:1307
SurfacePointSource::Source GetAprioriSurfacePointSource() const
Definition ControlPoint.cpp:1678
bool HasAprioriCoordinates()
Definition ControlPoint.cpp:1573
static QString PointTypeToString(PointType type)
Obtain a string representation of a given PointType.
Definition ControlPoint.cpp:1329
static PointType StringToPointType(QString pointTypeString)
Obtain a PointType given a string representation of it.
Definition ControlPoint.cpp:1355
bool operator!=(const ControlPoint &pPoint) const
Compare two Control Points for inequality.
Definition ControlPoint.cpp:1945
Status ComputeResiduals()
This method computes the BundleAdjust residuals for a point.
Definition ControlPoint.cpp:1024
QString GetId() const
Return the Id of the control point.
Definition ControlPoint.cpp:1302
static QString SurfacePointSourceToString(SurfacePointSource::Source source)
Obtain a string representation of a given SurfacePointSource.
Definition ControlPoint.cpp:1488
QList< ControlMeasure * > getMeasures(bool excludeIgnored=false) const
Definition ControlPoint.cpp:1867
Status ResetApriori()
Reset all the Apriori info to defaults.
Definition ControlPoint.cpp:378
void ZeroNumberOfRejectedMeasures()
Initialize the number of rejected measures to 0.
Definition ControlPoint.cpp:2058
int GetNumberOfRejectedMeasures() const
Get the number of rejected measures on the control point.
Definition ControlPoint.cpp:2082
bool HasSerialNumber(QString serialNumber) const
Return true if given serial number exists in point.
Definition ControlPoint.cpp:1742
int IndexOf(ControlMeasure *, bool throws=true) const
Definition ControlPoint.cpp:1778
void SetNumberOfRejectedMeasures(int numRejected)
Set (update) the number of rejected measures for the control point.
Definition ControlPoint.cpp:2071
bool HasAprioriSurfacePointSourceFile() const
Checks to see if the surface point source file has been set.
Definition ControlPoint.cpp:1688
void Load(PvlObject &p)
Loads the PvlObject into a ControlPoint.
Definition ControlPoint.cpp:211
const ControlMeasure * operator[](QString serialNumber) const
Same as GetMeasure (provided for convenience)
Definition ControlPoint.cpp:1895
QHash< QString, ControlMeasure * > * measures
Definition ControlPoint.h:597
SurfacePoint GetBestSurfacePoint() const
Returns the adjusted surface point if it exists, otherwise returns the a priori surface point.
Definition ControlPoint.cpp:1287
Status SetRefMeasure(ControlMeasure *cm)
Set the point's reference measure.
Definition ControlPoint.cpp:567
Status ComputeApriori()
Computes a priori lat/lon/radius point coordinates by determining the average lat/lon/radius of all m...
Definition ControlPoint.cpp:895
bool IsValid() const
Definition ControlPoint.cpp:1312
bool IsFixed() const
Return bool indicating if point is Fixed or not.
Definition ControlPoint.cpp:1600
Status SetAprioriRadiusSourceFile(QString sourceFile)
This updates the filename of the DEM that the apriori radius came from.
Definition ControlPoint.cpp:751
QString GetAprioriSurfacePointSourceFile() const
Definition ControlPoint.cpp:1693
static const int PointTypeCount
Definition ControlPoint.h:386
QString GetRadiusSourceString() const
Obtain a string representation of the RadiusSource.
Definition ControlPoint.cpp:1476
void emitMeasureModified(ControlMeasure *measure, ControlMeasure::ModType modType, QVariant oldValue, QVariant newValue)
This method is a wrapper to emit the measureModified() signal in the parent network is called wheneve...
Definition ControlPoint.cpp:339
QString GetReferenceSN() const
Definition ControlPoint.cpp:1759
QString GetSurfacePointSourceString() const
Obtain a string representation of the SurfacePointSource.
Definition ControlPoint.cpp:1557
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
This class is used to accumulate statistics on double arrays.
Definition Statistics.h:93
This class defines a body-fixed surface point.
Definition SurfacePoint.h:132
This is free and unencumbered software released into the public domain.
Definition ControlNet.h:32
This is free and unencumbered software released into the public domain.
Definition BoxcarCachingAlgorithm.h:13
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Definition ControlPoint.h:450
Source
Definition ControlPoint.h:451
@ None
Definition ControlPoint.h:452
@ User
Definition ControlPoint.h:453
@ AverageOfMeasures
Definition ControlPoint.h:454
@ DEM
Definition ControlPoint.h:456
@ Ellipsoid
Definition ControlPoint.h:455
@ BundleSolution
Definition ControlPoint.h:457
Definition ControlPoint.h:439
Source
Definition ControlPoint.h:440
@ None
Definition ControlPoint.h:441
@ AverageOfMeasures
Definition ControlPoint.h:443
@ Reference
Definition ControlPoint.h:444
@ BundleSolution
Definition ControlPoint.h:446
@ User
Definition ControlPoint.h:442
@ Basemap
Definition ControlPoint.h:445