Isis 3 Programmer Reference
ControlMeasure.h
Go to the documentation of this file.
1 #ifndef ControlMeasure_h
2 #define ControlMeasure_h
3 
26 #include <QObject>
27 
28 template< class A> class QVector;
29 template< class A> class QList;
30 class QString;
31 class QStringList;
32 class QVariant;
33 
34 namespace Isis {
35  class Application;
36  class Camera;
37  class ControlMeasureLogData;
38  class ControlPoint;
39  class PvlGroup;
40  class PvlKeyword;
41 
189  class ControlMeasure : public QObject {
190 
191  Q_OBJECT
192 
193  friend class ControlPoint;
194  public:
220  enum MeasureType {
229  };
230 
231  enum Status {
232  Success,
233  MeasureLocked
234  };
235 
236 
246  enum ModType {
247  IgnoredModified
248  };
249 
250  enum DataField {
251  AprioriLine = 1,
252  AprioriSample = 2,
253  ChooserName = 4,
254  CubeSerialNumber = 8,
255  Coordinate = 16,
256  DateTime = 32,
257  Diameter = 64,
258  EditLock = 128,
259  Rejected = 256,
260  FocalPlaneMeasured = 512,
261  FocalPlaneComputed = 1024,
262  Ignore = 2048,
263  SampleResidual = 4096,
264  LineResidual = 8192,
265  SampleSigma = 16384,
266  LineSigma = 32768,
267  Type = 65536
268  };
269 
270  ControlMeasure();
271  ControlMeasure(const ControlMeasure &other);
272  ~ControlMeasure();
273 
274  ControlPoint *Parent() { return parentPoint; }
275 
276  Status SetAprioriLine(double aprioriLine);
277  Status SetAprioriSample(double aprioriSample);
278  Status SetCamera(Isis::Camera *camera);
279  Status SetChooserName();
280  Status SetChooserName(QString name);
281  Status SetCoordinate(double sample, double line);
282  Status SetCoordinate(double sample, double line, MeasureType type);
283  Status SetCubeSerialNumber(QString newSerialNumber);
284  Status SetDateTime();
285  Status SetDateTime(QString datetime);
286  Status SetDiameter(double diameter);
287  Status SetEditLock(bool editLock);
288  Status SetFocalPlaneMeasured(double x, double y);
289  Status SetFocalPlaneComputed(double x, double y);
290  Status SetIgnored(bool newIgnoredStatus);
291  Status SetLineSigma(double lineSigma);
292  Status SetRejected(bool rejected);
293  Status SetResidual(double sampResidual, double lineResidual);
294  Status SetSampleSigma(double sampleSigma);
295  Status SetType(MeasureType type);
296 
297  void DeleteLogData(long dataType);
298  QVariant GetLogValue(long dataType) const;
299  bool HasLogData(long dataType) const;
300  void SetLogData(ControlMeasureLogData);
301  void UpdateLogData(ControlMeasureLogData);
302 
303  double GetAprioriLine() const;
304  double GetAprioriSample() const;
305  Isis::Camera *Camera() const;
306  QString GetChooserName() const;
307  bool HasChooserName() const;
308  QString GetCubeSerialNumber() const;
309  QString GetDateTime() const;
310  bool HasDateTime() const;
311  double GetDiameter() const;
312  ControlMeasureLogData GetLogData(long dataType) const;
313  bool IsEditLocked() const;
314  bool IsRejected() const;
315  double GetFocalPlaneComputedX() const;
316  double GetFocalPlaneComputedY() const;
317  double GetFocalPlaneMeasuredX() const;
318  double GetFocalPlaneMeasuredY() const;
319  double GetMeasureData(QString) const;
320  bool IsIgnored() const;
321  bool IsMeasured() const;
322  bool IsRegistered() const;
323  bool IsStatisticallyRelevant(DataField field) const;
324  double GetLine() const;
325  double GetLineResidual() const;
326  double GetLineSigma() const;
328  QVector<ControlMeasureLogData> GetLastRunLogDataEntries() const;
329  double GetResidualMagnitude() const;
330  double GetSample() const;
331  double GetSampleResidual() const;
332  double GetSampleSigma() const;
333  MeasureType GetType() const;
334  QString GetPointId() const;
335 
336  double GetSampleShift() const;
337  double GetLineShift() const;
338  double GetPixelShift() const;
339 
341 
343 
344  static QString MeasureTypeToString(MeasureType type);
345  static MeasureType StringToMeasureType(QString str);
346  QString GetMeasureTypeString() const;
347 
348  const ControlMeasure &operator=(const ControlMeasure &other);
349  bool operator != (const Isis::ControlMeasure &pMeasure) const;
350  bool operator == (const Isis::ControlMeasure &pMeasure) const;
351 
352  private: // methods
353  void InitializeToNull();
354  void MeasureModified();
355 
356  private: // data
358  // structure connecting measures in an image
359 
360  QString *p_serialNumber;
361  MeasureType p_measureType;
362 
363  QVector<ControlMeasureLogData> * p_loggedData;
364  PvlGroup *p_comments;
365 
370  QString *p_chooserName;
371  QString *p_dateTime;
372  bool p_editLock;
373  bool p_ignore;
375  double p_sample;
376  double p_line;
377  double p_diameter;
378 
380  double p_aprioriLine;
381 
384 
385  double p_computedEphemerisTime;
386 
387  double p_sampleSigma;
388  double p_lineSigma;
390  double p_lineResidual;
391  Isis::Camera *p_camera;
392  double p_focalPlaneMeasuredX;
393  double p_focalPlaneMeasuredY;
394  double p_focalPlaneComputedX;
395  double p_focalPlaneComputedY;
396  double p_measuredEphemerisTime;
397  };
398 }
399 
400 #endif
Status SetType(MeasureType type)
Set how the coordinate was obtained.
double p_aprioriSample
The first identified location of the.
double p_lineResidual
Jigsaw information - Solution error - replaces p_lineError.
(e.g., autoseed, interest) AKA predicted, unmeasured, unverified
QList< QStringList > PrintableClassData() const
Data accessor method, provides access to string representations of all variable values and names...
bool p_jigsawRejected
Status of measure for last bundle adjust iteration.
Define a generic Y/X container.
Definition: GruenTypes.h:69
bool operator!=(const Isis::ControlMeasure &pMeasure) const
Compare 2 Control Measures for inequality.
ModType
Control Measure Modification Types.
ControlPoint * parentPoint
Pointer to parent ControlPoint, may be null.
double p_sample
Current sample/line measurement.
double GetResidualMagnitude() const
Return Residual magnitude.
QString * p_chooserName
list the program used and the definition file or include the user name for qnet
Registered to whole pixel (e.g.,pointreg)
Registered to sub-pixel (e.g., pointreg)
double GetMeasureData(QString) const
One Getter to rule them all.
static QVector< QString > GetMeasureDataNames()
Returns a list of all valid options to pass to GetMeasureData.
Status SetRejected(bool rejected)
Set "jigsaw" rejected flag for a measure.
bool p_editLock
If true do not edit anything in measure.
double p_sampleSigma
Uncertainty/sigma in pixels of the measurement (current sample/line)
double p_lineSigma
Not sure how we determine this for automated or manual picking.
bool HasChooserName() const
Returns true if the choosername is not empty.
Status SetDiameter(double diameter)
Set the crater diameter at the coordinate.
QString GetMeasureTypeString() const
Obtain a string representation of the MeasureType.
const ControlMeasure & operator=(const ControlMeasure &other)
Assignment operator.
ControlMeasure()
Create a new control measure and initialize it to nulls and zeros.
bool HasLogData(long dataType) const
Test if we have a valid log data value of the specified type.
void UpdateLogData(ControlMeasureLogData)
This updates existing log data information associated with data&#39;s type.
double p_line
Jigsaw uses this measure.
Status SetResidual(double sampResidual, double lineResidual)
Set the BundleAdjust Residual of the coordinate.
Hand Measured (e.g., qnet)
Status SetCamera(Isis::Camera *camera)
Set pointer to camera associated with a measure.
Contains multiple PvlContainers.
Definition: PvlGroup.h:57
void SetLogData(ControlMeasureLogData)
This adds or updates the log data information associated with data&#39;s type.
double p_aprioriLine
measure by autoseed. Pointreg/Interest always use this location to start it&#39;s search. Could be moved by interest program or user.
A single control point.
Definition: ControlPoint.h:369
bool operator==(const Isis::ControlMeasure &pMeasure) const
Check for Control Measures equality.
QString GetChooserName() const
Return the chooser name.
bool HasDateTime() const
Returns true if the datetime is not empty.
MeasureType
Control network measurement types.
~ControlMeasure()
Free the memory allocated by a control.
double p_sampleResidual
Jigsaw information - Solution error - replaces p_sampleError.
Status SetFocalPlaneMeasured(double x, double y)
Set the focal plane x/y for the measured line/sample.
QString GetDateTime() const
Return the date/time the coordinate was last changed.
QVector< ControlMeasureLogData > GetLogDataEntries() const
Return all of the log data for the measure.
void InitializeToNull()
initialize pointers and other data to NULL
QVariant GetLogValue(long dataType) const
Get the value of the log data with the specified type as a variant.
Status SetChooserName()
Set chooser name to a user who last changed the coordinate.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
bool IsEditLocked() const
Return value for p_editLock or implicit lock on reference measure.
a control measurement
Status SetCubeSerialNumber(QString newSerialNumber)
Set cube serial number.
Status SetCoordinate(double sample, double line)
Set the coordinate of the measurement.
void DeleteLogData(long dataType)
This deletes log data of the specified type.
Status SetDateTime()
Date Time - Creation Time.
double GetDiameter() const
Return the diameter of the crater in pixels (0 implies no crater)
Status SetFocalPlaneComputed(double x, double y)
Set the computed focal plane x/y for the apriori lat/lon.
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
static MeasureType StringToMeasureType(QString str)
static QString MeasureTypeToString(MeasureType type)
Return the String Control Measure type.