File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
ControlMeasure.cpp
1 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include "ControlMeasure.h"
11 
12 #include <QList>
13 #include <QStringList>
14 
15 #include "Application.h"
16 #include "Camera.h"
17 #include "ControlMeasureLogData.h"
18 #include "ControlNet.h"
19 #include "ControlPoint.h"
20 #include "IString.h"
21 #include "iTime.h"
22 #include "SpecialPixel.h"
23 
24 using namespace std;
25 
26 namespace Isis {
30  ControlMeasure::ControlMeasure() {
31  InitializeToNull();
32  p_serialNumber = new QString;
33  p_chooserName = new QString;
34  p_dateTime = new QString;
35  p_loggedData = new QVector<ControlMeasureLogData>();
36 
37  p_measureType = Candidate;
38  p_editLock = false;
39  p_jigsawRejected = false;
40  p_ignore = false;
41 
42  }
43 
44 
50  ControlMeasure::ControlMeasure(const ControlMeasure &other) {
51  InitializeToNull();
52 
53  p_serialNumber = new QString(*other.p_serialNumber);
54  p_chooserName = new QString(*other.p_chooserName);
55  p_dateTime = new QString(*other.p_dateTime);
56 
57  p_loggedData = new QVector<ControlMeasureLogData>(*other.p_loggedData);
58 
59  p_measureType = other.p_measureType;
60  p_editLock = other.p_editLock;
61  p_jigsawRejected = other.p_jigsawRejected;
62  p_ignore = other.p_ignore;
63  p_sample = other.p_sample;
64  p_line = other.p_line;
65  p_diameter = other.p_diameter;
66  p_aprioriSample = other.p_aprioriSample;
67  p_aprioriLine = other.p_aprioriLine;
68  p_sampleSigma = other.p_sampleSigma;
69  p_lineSigma = other.p_lineSigma;
70  p_sampleResidual = other.p_sampleResidual;
71  p_lineResidual = other.p_lineResidual;
72  p_camera = other.p_camera;
73  }
74 
75 
77  void ControlMeasure::InitializeToNull() {
78  // Previously these were initialized to 0.0 in the constructor.
79  p_sample = Null;
80  p_line = Null;
81 
82  p_serialNumber = NULL;
83  p_chooserName = NULL;
84  p_dateTime = NULL;
85  p_loggedData = NULL;
86 
87  p_diameter = Null;
88  p_aprioriSample = Null;
89  p_aprioriLine = Null;
90  p_computedEphemerisTime = Null;
91  p_sampleSigma = Null;
92  p_lineSigma = Null;
93  p_sampleResidual = Null;
94  p_lineResidual = Null;
95 
96  p_camera = NULL;
97  p_focalPlaneMeasuredX = Null;
98  p_focalPlaneMeasuredY = Null;
99  p_focalPlaneComputedX = Null;
100  p_focalPlaneComputedY = Null;
101  p_measuredEphemerisTime = Null;
102 
103  parentPoint = NULL;
104  }
105 
106 
110  ControlMeasure::~ControlMeasure() {
111  if (p_serialNumber) {
112  delete p_serialNumber;
113  p_serialNumber = NULL;
114  }
115 
116  if (p_chooserName) {
117  delete p_chooserName;
118  p_chooserName = NULL;
119  }
120 
121  if (p_dateTime) {
122  delete p_dateTime;
123  p_dateTime = NULL;
124  }
125 
126  if (p_loggedData) {
127  delete p_loggedData;
128  p_loggedData = NULL;
129  }
130 
131  }
132 
133 
134  ControlMeasure::Status ControlMeasure::SetAprioriLine(double aprioriLine) {
135  if (IsEditLocked())
136  return MeasureLocked;
137  MeasureModified();
138 
139  p_aprioriLine = aprioriLine;
140  return Success;
141  }
142 
143 
144  ControlMeasure::Status ControlMeasure::SetAprioriSample(
145  double aprioriSample) {
146  if (IsEditLocked())
147  return MeasureLocked;
148  MeasureModified();
149 
150  p_aprioriSample = aprioriSample;
151  return Success;
152  }
153 
154 
169  ControlMeasure::Status ControlMeasure::SetCamera(Isis::Camera *camera) {
170  p_camera = camera;
171  return Success;
172  }
173 
174 
187  ControlMeasure::Status ControlMeasure::SetCubeSerialNumber(QString newSerialNumber) {
188  if (IsEditLocked())
189  return MeasureLocked;
190  *p_serialNumber = newSerialNumber;
191  return Success;
192  }
193 
194 
196  ControlMeasure::Status ControlMeasure::SetChooserName() {
197  if (IsEditLocked())
198  return MeasureLocked;
199  *p_chooserName = "";
200  return Success;
201  }
202 
203 
205  ControlMeasure::Status ControlMeasure::SetChooserName(QString name) {
206  if (IsEditLocked())
207  return MeasureLocked;
208  *p_chooserName = name;
209  return Success;
210  }
211 
212 
219  ControlMeasure::Status ControlMeasure::SetCoordinate(double sample,
220  double line) {
221  return SetCoordinate(sample, line, GetType());
222  }
223 
224 
232  ControlMeasure::Status ControlMeasure::SetCoordinate(double sample,
233  double line, MeasureType type) {
234  if (IsEditLocked())
235  return MeasureLocked;
236  MeasureModified();
237 
238  p_sample = sample;
239  p_line = line;
240 
241  SetType(type);
242  return Success;
243  }
244 
245 
247  ControlMeasure::Status ControlMeasure::SetDateTime() {
248  if (IsEditLocked())
249  return MeasureLocked;
250  *p_dateTime = Application::DateTime();
251  return Success;
252  }
253 
254 
256  ControlMeasure::Status ControlMeasure::SetDateTime(QString datetime) {
257  if (IsEditLocked())
258  return MeasureLocked;
259  *p_dateTime = datetime;
260  return Success;
261  }
262 
263 
272  ControlMeasure::Status ControlMeasure::SetDiameter(double diameter) {
273  if (IsEditLocked())
274  return MeasureLocked;
275  MeasureModified();
276  p_diameter = diameter;
277  return Success;
278  }
279 
280 
281  ControlMeasure::Status ControlMeasure::SetEditLock(bool editLock) {
282  p_editLock = editLock;
283  return Success;
284  }
285 
286 
299  ControlMeasure::Status ControlMeasure::SetFocalPlaneMeasured(double x,
300  double y) {
301  p_focalPlaneMeasuredX = x;
302  p_focalPlaneMeasuredY = y;
303  return Success;
304  }
305 
306 
319  ControlMeasure::Status ControlMeasure::SetFocalPlaneComputed(double x,
320  double y) {
321  p_focalPlaneComputedX = x;
322  p_focalPlaneComputedY = y;
323  return Success;
324  }
325 
326 
327 
328 
343  ControlMeasure::Status ControlMeasure::SetRejected(bool reject) {
344  MeasureModified();
345  p_jigsawRejected = reject;
346  return Success;
347  }
348 
349 
350  ControlMeasure::Status ControlMeasure::SetIgnored(bool newIgnoreStatus) {
351  if (IsEditLocked())
352  return MeasureLocked;
353 
354 
355  bool oldStatus = p_ignore;
356  p_ignore = newIgnoreStatus;
357 
358  if (Parent()) {
359  Parent()->emitMeasureModified(this, IgnoredModified, oldStatus, p_ignore);
360  }
361 
362  // only update if there was a change in status
363  if (oldStatus != p_ignore) {
364  MeasureModified();
365  if (parentPoint && !parentPoint->IsIgnored() && parentPoint->Parent()) {
366  ControlNet * cnet = parentPoint->Parent();
367  p_ignore ? cnet->measureIgnored(this) : cnet->measureUnIgnored(this);
368  cnet->emitNetworkStructureModified();
369  }
370  }
371 
372 
373  return Success;
374  }
375 
376 
377  ControlMeasure::Status ControlMeasure::SetLineSigma(double lineSigma) {
378  if (IsEditLocked())
379  return MeasureLocked;
380  MeasureModified();
381  p_lineSigma = lineSigma;
382  return Success;
383  }
384 
385 
399  ControlMeasure::Status ControlMeasure::SetResidual(double sampResidual,
400  double lineResidual) {
401 
402  MeasureModified();
403 
404  p_sampleResidual = sampResidual;
405  p_lineResidual = lineResidual;
406  return Success;
407  }
408 
409 
410  ControlMeasure::Status ControlMeasure::SetSampleSigma(double sampleSigma) {
411  if (IsEditLocked())
412  return MeasureLocked;
413  MeasureModified();
414  p_sampleSigma = sampleSigma;
415  return Success;
416  }
417 
418 
420  ControlMeasure::Status ControlMeasure::SetType(MeasureType type) {
421  if (IsEditLocked())
422  return MeasureLocked;
423  MeasureModified();
424 
425  p_measureType = type;
426  return Success;
427  }
428 
429 
435  void ControlMeasure::SetLogData(ControlMeasureLogData data) {
436  if (!data.IsValid()) {
437  QString msg = "Cannot set log data with invalid information stored in "
438  "the ControlMeasureLogData";
439  throw IException(IException::Programmer, msg, _FILEINFO_);
440  }
441 
442  if (HasLogData(data.GetDataType()))
443  UpdateLogData(data);
444  else
445  p_loggedData->append(data);
446  }
447 
448 
455  void ControlMeasure::DeleteLogData(long dataType) {
456  for (int i = p_loggedData->size()-1; i >= 0; i--) {
457  ControlMeasureLogData logDataEntry = p_loggedData->at(i);
458 
459  if (logDataEntry.GetDataType() == dataType)
460  p_loggedData->remove(i);
461  }
462  }
463 
464 
469  QVariant ControlMeasure::GetLogValue(long dataType) const {
470  for (int i = 0; i < p_loggedData->size(); i++) {
471  const ControlMeasureLogData &logDataEntry = p_loggedData->at(i);
472 
473  if (logDataEntry.GetDataType() == dataType)
474  return logDataEntry.GetValue();
475  }
476 
477  return QVariant();
478  }
479 
480 
486  bool ControlMeasure::HasLogData(long dataType) const {
487  for (int i = 0; i < p_loggedData->size(); i++) {
488  const ControlMeasureLogData &logDataEntry = p_loggedData->at(i);
489 
490  if (logDataEntry.GetDataType() == dataType)
491  return true;
492  }
493 
494  return false;
495  }
496 
497 
504  void ControlMeasure::UpdateLogData(ControlMeasureLogData newLogData) {
505  bool updated = false;
506 
507  for (int i = 0; i < p_loggedData->size(); i++) {
508  ControlMeasureLogData logDataEntry = p_loggedData->at(i);
509 
510  if (logDataEntry.GetDataType() == newLogData.GetDataType()) {
511  (*p_loggedData)[i] = newLogData;
512  updated = true;
513  }
514  }
515 
516  if (!updated) {
517  QString msg = "Unable to update the log data for ["
518  + newLogData.DataTypeToName(newLogData.GetDataType()) + "] because this"
519  " control measure does not have log data for this value. Please use "
520  "SetLogData instead";
521  throw IException(IException::Programmer, msg, _FILEINFO_);
522  }
523  }
524 
525 
526  double ControlMeasure::GetAprioriLine() const {
527  return p_aprioriLine;
528  }
529 
530 
531  double ControlMeasure::GetAprioriSample() const {
532  return p_aprioriSample;
533  }
534 
535 
536  Isis::Camera *ControlMeasure::Camera() const {
537  return p_camera;
538  }
539 
540 
542  QString ControlMeasure::GetChooserName() const {
543  if (*p_chooserName != "") {
544  return *p_chooserName;
545  }
546  else {
547  return FileName(Application::Name()).name();
548  }
549  }
550 
552  bool ControlMeasure::HasChooserName() const {
553  return !p_chooserName->isEmpty();
554  }
555 
557  QString ControlMeasure::GetCubeSerialNumber() const {
558  return *p_serialNumber;
559  }
560 
561 
563  QString ControlMeasure::GetDateTime() const {
564  if (*p_dateTime != "") {
565  return *p_dateTime;
566  }
567  else {
568  return Application::DateTime();
569  }
570  }
571 
573  bool ControlMeasure::HasDateTime() const {
574  return !p_dateTime->isEmpty();
575  }
576 
577 
578 
580  double ControlMeasure::GetDiameter() const {
581  return p_diameter;
582  }
583 
584 
601  bool ControlMeasure::IsEditLocked() const {
602  // Check to see if this measure is the reference measure of the parent
603  if (parentPoint != NULL && parentPoint->IsEditLocked() &&
604  this == parentPoint->GetRefMeasure())
605  return true;
606  return p_editLock;
607  }
608 
609 
610  double ControlMeasure::GetFocalPlaneComputedX() const {
611  return p_focalPlaneComputedX;
612  }
613 
614 
615  double ControlMeasure::GetFocalPlaneComputedY() const {
616  return p_focalPlaneComputedY;
617  }
618 
619 
620  double ControlMeasure::GetFocalPlaneMeasuredX() const {
621  return p_focalPlaneMeasuredX;
622  }
623 
624 
625  double ControlMeasure::GetFocalPlaneMeasuredY() const {
626  return p_focalPlaneMeasuredY;
627  }
628 
629 
630  bool ControlMeasure::IsIgnored() const {
631  return p_ignore;
632  }
633 
634 
635  bool ControlMeasure::IsRejected() const {
636  return p_jigsawRejected;
637  }
638 
639 
640  bool ControlMeasure::IsMeasured() const {
641  return p_measureType != Candidate;
642  }
643 
644 
645  bool ControlMeasure::IsRegistered() const {
646  return (p_measureType == RegisteredPixel ||
647  p_measureType == RegisteredSubPixel);
648  }
649 
650  bool ControlMeasure::IsStatisticallyRelevant(DataField field) const {
651  bool relevant = false;
652  bool validField = false;
653 
654  switch (field) {
655  case AprioriLine:
656  case AprioriSample:
657  case ChooserName:
658  case CubeSerialNumber:
659  case Coordinate:
660  case Diameter:
661  case FocalPlaneMeasured:
662  case FocalPlaneComputed:
663  case SampleResidual:
664  case LineResidual:
665  case SampleSigma:
666  case LineSigma:
667  relevant = true;
668  validField = true;
669  break;
670 
671  case DateTime:
672  case EditLock:
673  case Ignore:
674  case Rejected:
675  case Type:
676  validField = true;
677  break;
678  }
679 
680  if (!validField) {
681  QString msg = "Cannot test IsStatisticallyRelevant on Measure Data ["
682  + QString(field) + "]";
683  throw IException(IException::Programmer, msg, _FILEINFO_);
684  }
685 
686  return relevant;
687  }
688 
689 
690  double ControlMeasure::GetLine() const {
691  return p_line;
692  }
693 
694 
695  double ControlMeasure::GetLineResidual() const {
696  return p_lineResidual;
697  }
698 
699 
700  double ControlMeasure::GetLineSigma() const {
701  return p_lineSigma;
702  }
703 
704 
712  double ControlMeasure::GetResidualMagnitude() const {
713  if(IsSpecial(p_lineResidual) || IsSpecial(p_sampleResidual))
714  return Null;
715 
716  double dist = (p_lineResidual * p_lineResidual) +
717  (p_sampleResidual * p_sampleResidual);
718 
719  return sqrt(dist);
720  }
721 
722 
723  double ControlMeasure::GetSample() const {
724  return p_sample;
725  }
726 
727 
728  double ControlMeasure::GetSampleResidual() const {
729  return p_sampleResidual;
730  }
731 
732 
733  double ControlMeasure::GetSampleSigma() const {
734  return p_sampleSigma;
735  }
736 
737 
738  ControlMeasure::MeasureType ControlMeasure::GetType() const {
739  return p_measureType;
740  }
741 
742 
743  QString ControlMeasure::GetPointId() const {
744  if (parentPoint == NULL) {
745  QString msg = "Measure has no containing point";
746  throw IException(IException::User, msg, _FILEINFO_);
747  }
748 
749  return parentPoint->GetId();
750  }
751 
752 
753  double ControlMeasure::GetSampleShift() const {
754  return (p_sample != Null && p_aprioriSample != Null) ?
755  p_sample - p_aprioriSample : Null;
756  }
757 
758 
759  double ControlMeasure::GetLineShift() const {
760  return (p_line != Null && p_aprioriLine != Null) ?
761  p_line - p_aprioriLine : Null;
762  }
763 
764 
765  double ControlMeasure::GetPixelShift() const {
766  double sampleShift = GetSampleShift();
767  double lineShift = GetLineShift();
768  return (sampleShift != Null && lineShift != Null) ?
769  sqrt(pow(GetSampleShift(), 2) + pow(GetLineShift(), 2)) : Null;
770  }
771 
772 
773  ControlMeasureLogData ControlMeasure::GetLogData(long dataType) const {
774  int foundIndex = 0;
775  ControlMeasureLogData::NumericLogDataType typedDataType =
776  (ControlMeasureLogData::NumericLogDataType)dataType;
777 
778  while (foundIndex < p_loggedData->size()) {
779  const ControlMeasureLogData &logData = p_loggedData->at(foundIndex);
780  if (logData.GetDataType() == typedDataType) {
781  return logData;
782  }
783 
784  foundIndex ++;
785  }
786 
787  return ControlMeasureLogData(typedDataType);
788  }
789 
790 
796  QVector<ControlMeasureLogData> ControlMeasure::GetLogDataEntries() const {
798  if (p_loggedData) {
799  logs = *p_loggedData;
800  }
801  return logs;
802  }
803 
804 
806  double ControlMeasure::GetMeasureData(QString data) const {
807  if (data == "SampleResidual") {
808  return p_sampleResidual;
809  }
810  else if (data == "LineResidual") {
811  return p_lineResidual;
812  }
813  else if (data == "Type") {
814  return p_measureType;
815  }
816  else if (data == "IsMeasured") {
817  return IsMeasured();
818  }
819  else if (data == "IsRegistered") {
820  return IsRegistered();
821  }
822  else if (data == "Ignore") {
823  return p_ignore;
824  }
825  else {
826  QString msg = data + " passed to GetMeasureData but is invalid";
827  throw IException(IException::Programmer, msg, _FILEINFO_);
828  }
829  }
830 
831 
833  QVector< QString > ControlMeasure::GetMeasureDataNames() {
834  QVector< QString > names;
835 
836  names.push_back("SampleResidual");
837  names.push_back("LineResidual");
838  names.push_back("Type");
839  names.push_back("IsMeasured");
840  names.push_back("IsRegistered");
841  names.push_back("Ignore");
842 
843  return names;
844  }
845 
854  QList< QStringList > ControlMeasure::PrintableClassData() const {
856  QStringList qsl;
857 
858  qsl << "AprioriLine" << QString::number(p_aprioriLine);
859  data.append(qsl);
860  qsl.clear();
861 
862  qsl << "AprioriSample" << QString::number(p_aprioriSample);
863  data.append(qsl);
864  qsl.clear();
865 
866  qsl << "ChooserName" << *p_chooserName;
867  data.append(qsl);
868  qsl.clear();
869 
870  qsl << "CubeSerialNumber" << *p_serialNumber;
871  data.append(qsl);
872  qsl.clear();
873 
874  qsl << "DateTime" << *p_dateTime;
875  data.append(qsl);
876  qsl.clear();
877 
878  qsl << "Line" << QString::number(p_line);
879  data.append(qsl);
880  qsl.clear();
881 
882  qsl << "LineResidual" << QString::number(p_lineResidual);
883  data.append(qsl);
884  qsl.clear();
885 
886  qsl << "LineSigma" << QString::number(p_lineSigma);
887  data.append(qsl);
888  qsl.clear();
889 
890  qsl << "Sample" << QString::number(p_sample);
891  data.append(qsl);
892  qsl.clear();
893 
894  qsl << "SampleResidual" << QString::number(p_sampleResidual);
895  data.append(qsl);
896  qsl.clear();
897 
898  qsl << "SampleSigma" << QString::number(p_sampleSigma);
899  data.append(qsl);
900  qsl.clear();
901 
902  qsl << "ResidualMagnitude" << QString::number(GetResidualMagnitude());
903  data.append(qsl);
904  qsl.clear();
905 
906  qsl << "MeasureType" << GetMeasureTypeString();
907  data.append(qsl);
908  qsl.clear();
909 
910  return data;
911  }
912 
913 
919  ControlMeasure::MeasureType ControlMeasure::StringToMeasureType(QString str) {
920 
921  QString err = "String [" + str + "] can not be converted to a MeasureType";
922 
923  str = str.toLower();
924  MeasureType measureType;
925  if (str == "candidate")
926  measureType = ControlMeasure::Candidate;
927  else if (str == "manual")
928  measureType = ControlMeasure::Manual;
929  else if (str == "registeredpixel")
930  measureType = ControlMeasure::RegisteredPixel;
931  else if (str == "registeredsubpixel")
932  measureType = ControlMeasure::RegisteredSubPixel;
933  else
934  throw IException(IException::Programmer, err, _FILEINFO_);
935 
936  return measureType;
937  }
938 
939 
951  QString ControlMeasure::MeasureTypeToString(MeasureType type) {
952  QString sPrintable;
953 
954  switch (type) {
955  case ControlMeasure::Candidate:
956  sPrintable = "Candidate";
957  break;
958 
959  case ControlMeasure::Manual:
960  sPrintable = "Manual";
961  break;
962 
963  case ControlMeasure::RegisteredPixel:
964  sPrintable = "RegisteredPixel";
965  break;
966 
967  case ControlMeasure::RegisteredSubPixel:
968  sPrintable = "RegisteredSubPixel";
969  break;
970  }
971 
972  if (sPrintable == "") {
973  QString msg = "Measure type [" + toString(type) + "] cannot be converted "
974  "to a string";
975  throw IException(IException::Programmer, msg, _FILEINFO_);
976  }
977 
978  return sPrintable;
979  }
980 
981 
987  QString ControlMeasure::GetMeasureTypeString() const {
988  return MeasureTypeToString(p_measureType);
989  }
990 
991 
1001  const ControlMeasure &ControlMeasure::operator=(const ControlMeasure &other) {
1002  if (this == &other)
1003  return *this;
1004 
1005  if (p_serialNumber) {
1006  delete p_serialNumber;
1007  p_serialNumber = NULL;
1008  }
1009  if (p_chooserName) {
1010  delete p_chooserName;
1011  p_chooserName = NULL;
1012  }
1013  if (p_dateTime) {
1014  delete p_dateTime;
1015  p_dateTime = NULL;
1016  }
1017  if (p_loggedData) {
1018  delete p_loggedData;
1019  p_loggedData = NULL;
1020  }
1021 
1022  p_serialNumber = new QString;
1023  p_chooserName = new QString;
1024  p_dateTime = new QString;
1025  p_loggedData = new QVector<ControlMeasureLogData>();
1026 
1027  bool oldLock = p_editLock;
1028  p_editLock = false;
1029 
1030  p_sample = other.p_sample;
1031  p_line = other.p_line;
1032  *p_loggedData = *other.p_loggedData;
1033 
1034  SetCubeSerialNumber(*other.p_serialNumber);
1035  SetChooserName(*other.p_chooserName);
1036  SetDateTime(*other.p_dateTime);
1037  SetType(other.p_measureType);
1038  // Call SetIgnored to update the ControlGraphNode. However, SetIgnored
1039  // will return if EditLock is true, so set to false temporarily.
1040  SetIgnored(other.p_ignore);
1041  SetDiameter(other.p_diameter);
1042  SetAprioriSample(other.p_aprioriSample);
1043  SetAprioriLine(other.p_aprioriLine);
1044  SetSampleSigma(other.p_sampleSigma);
1045  SetLineSigma(other.p_lineSigma);
1046  SetResidual(other.p_sampleResidual, other.p_lineResidual);
1047  SetCamera(other.p_camera);
1048  SetFocalPlaneMeasured(other.p_focalPlaneMeasuredX, other.p_focalPlaneMeasuredY);
1049  SetFocalPlaneComputed(other.p_focalPlaneComputedX, other.p_focalPlaneComputedY);
1050  p_editLock = oldLock;
1051  SetEditLock(other.p_editLock);
1052 
1053  return *this;
1054  }
1055 
1056 
1066  bool ControlMeasure::operator!=(const Isis::ControlMeasure &pMeasure) const {
1067  return !(*this == pMeasure);
1068  }
1069 
1070 
1087  bool ControlMeasure::operator==(const Isis::ControlMeasure &pMeasure) const {
1088  return pMeasure.p_measureType == p_measureType &&
1089  *pMeasure.p_serialNumber == *p_serialNumber &&
1090  *pMeasure.p_chooserName == *p_chooserName &&
1091  *pMeasure.p_dateTime == *p_dateTime &&
1092  pMeasure.p_editLock == p_editLock &&
1093  pMeasure.p_ignore == p_ignore &&
1094  pMeasure.p_jigsawRejected == p_jigsawRejected &&
1095  pMeasure.p_sample == p_sample &&
1096  pMeasure.p_line == p_line &&
1097  pMeasure.p_diameter == p_diameter &&
1098  pMeasure.p_aprioriSample == p_aprioriSample &&
1099  pMeasure.p_aprioriLine == p_aprioriLine &&
1100  pMeasure.p_computedEphemerisTime == p_computedEphemerisTime &&
1101  pMeasure.p_sampleSigma == p_sampleSigma &&
1102  pMeasure.p_lineSigma == p_lineSigma &&
1103  pMeasure.p_sampleResidual == p_sampleResidual &&
1104  pMeasure.p_lineResidual == p_lineResidual &&
1105  pMeasure.p_focalPlaneMeasuredX == p_focalPlaneMeasuredX &&
1106  pMeasure.p_focalPlaneMeasuredY == p_focalPlaneMeasuredY &&
1107  pMeasure.p_focalPlaneComputedX == p_focalPlaneComputedX &&
1108  pMeasure.p_focalPlaneComputedY == p_focalPlaneComputedY &&
1109  pMeasure.p_measuredEphemerisTime == p_measuredEphemerisTime;
1110  }
1111 
1112  void ControlMeasure::MeasureModified() {
1113  *p_dateTime = "";
1114  *p_chooserName = "";
1115  }
1116 }
QList
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
Isis::ControlMeasure::p_sampleSigma
double p_sampleSigma
Uncertainty/sigma in pixels of the measurement (current sample/line)
Definition: ControlMeasure.h:373
Isis::FileName::name
QString name() const
Returns the name of the file excluding the path and the attributes in the file name.
Definition: FileName.cpp:162
Isis::ControlMeasure::MeasureType
MeasureType
Control network measurement types.
Definition: ControlMeasure.h:206
Isis::FileName
File name manipulation and expansion.
Definition: FileName.h:100
Isis::ControlMeasureLogData::GetDataType
NumericLogDataType GetDataType() const
Get the data type associated with this log data.
Definition: ControlMeasureLogData.cpp:135
Isis::ControlMeasure::p_editLock
bool p_editLock
If true do not edit anything in measure.
Definition: ControlMeasure.h:358
Isis::ControlMeasure::p_jigsawRejected
bool p_jigsawRejected
Status of measure for last bundle adjust iteration.
Definition: ControlMeasure.h:360
Isis::Camera
Definition: Camera.h:236
QStringList
Isis::toString
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Definition: IString.cpp:211
Isis::IsSpecial
bool IsSpecial(const double d)
Returns if the input pixel is special.
Definition: SpecialPixel.h:197
Isis::ControlMeasureLogData::IsValid
bool IsValid() const
This tests if the log data is complete and valid.
Definition: ControlMeasureLogData.cpp:154
Isis::ControlMeasure::p_aprioriSample
double p_aprioriSample
The first identified location of the.
Definition: ControlMeasure.h:365
Isis::ControlMeasure::p_sample
double p_sample
Current sample/line measurement.
Definition: ControlMeasure.h:361
Isis::ControlMeasure::p_sampleResidual
double p_sampleResidual
Jigsaw information - Solution error - replaces p_sampleError.
Definition: ControlMeasure.h:375
Isis::ControlMeasure::p_lineResidual
double p_lineResidual
Jigsaw information - Solution error - replaces p_lineError.
Definition: ControlMeasure.h:376
Isis::IException
Isis exception class.
Definition: IException.h:91
Isis::ControlMeasureLogData::DataTypeToName
QString DataTypeToName(NumericLogDataType type) const
This converts the log data type to a string and is used internally for convertions to and from Pvl.
Definition: ControlMeasureLogData.cpp:206
Isis::Null
const double Null
Value for an Isis Null pixel.
Definition: SpecialPixel.h:95
std
Namespace for the standard library.
Isis::ControlMeasure::p_aprioriLine
double p_aprioriLine
measure by autoseed. Pointreg/Interest always use this location to start it's search....
Definition: ControlMeasure.h:366
Isis::ControlMeasure::p_lineSigma
double p_lineSigma
Not sure how we determine this for automated or manual picking.
Definition: ControlMeasure.h:374
QVector
This is free and unencumbered software released into the public domain.
Definition: Calculator.h:18
Isis::ControlMeasureLogData
Statistical and similar ControlMeasure associated information.
Definition: ControlMeasureLogData.h:37
Isis::ControlMeasureLogData::GetValue
QVariant GetValue() const
Get the data type associated with this log data.
Definition: ControlMeasureLogData.cpp:144
Isis::ControlMeasure::p_line
double p_line
Jigsaw uses this measure.
Definition: ControlMeasure.h:362
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::ControlMeasure::p_chooserName
QString * p_chooserName
list the program used and the definition file or include the user name for qnet
Definition: ControlMeasure.h:356
Isis::ControlMeasure
a control measurement
Definition: ControlMeasure.h:175

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:16:18