Isis 3 Programmer Reference
ControlMeasure.cpp
Go to the documentation of this file.
1 
23 #include "ControlMeasure.h"
24 
25 #include <QList>
26 #include <QStringList>
27 
28 #include "Application.h"
29 #include "Camera.h"
30 #include "ControlMeasureLogData.h"
31 #include "ControlNet.h"
32 #include "ControlPoint.h"
33 #include "IString.h"
34 #include "iTime.h"
35 #include "SpecialPixel.h"
36 
37 using namespace std;
38 
39 namespace Isis {
43  ControlMeasure::ControlMeasure() {
44  InitializeToNull();
45  p_serialNumber = new QString;
46  p_chooserName = new QString;
47  p_dateTime = new QString;
48  p_loggedData = new QVector<ControlMeasureLogData>();
49 
50  p_measureType = Candidate;
51  p_editLock = false;
52  p_jigsawRejected = false;
53  p_ignore = false;
54 
55  }
56 
57 
63  ControlMeasure::ControlMeasure(const ControlMeasure &other) {
64  InitializeToNull();
65 
66  p_serialNumber = new QString(*other.p_serialNumber);
67  p_chooserName = new QString(*other.p_chooserName);
68  p_dateTime = new QString(*other.p_dateTime);
69 
70  p_loggedData = new QVector<ControlMeasureLogData>(*other.p_loggedData);
71 
72  p_measureType = other.p_measureType;
73  p_editLock = other.p_editLock;
74  p_jigsawRejected = other.p_jigsawRejected;
75  p_ignore = other.p_ignore;
76  p_sample = other.p_sample;
77  p_line = other.p_line;
78  p_diameter = other.p_diameter;
79  p_aprioriSample = other.p_aprioriSample;
80  p_aprioriLine = other.p_aprioriLine;
81  p_sampleSigma = other.p_sampleSigma;
82  p_lineSigma = other.p_lineSigma;
83  p_sampleResidual = other.p_sampleResidual;
84  p_lineResidual = other.p_lineResidual;
85  p_camera = other.p_camera;
86  }
87 
88 
90  void ControlMeasure::InitializeToNull() {
91  // Previously these were initialized to 0.0 in the constructor.
92  p_sample = Null;
93  p_line = Null;
94 
95  p_serialNumber = NULL;
96  p_chooserName = NULL;
97  p_dateTime = NULL;
98  p_loggedData = NULL;
99 
100  p_diameter = Null;
101  p_aprioriSample = Null;
102  p_aprioriLine = Null;
103  p_computedEphemerisTime = Null;
104  p_sampleSigma = Null;
105  p_lineSigma = Null;
106  p_sampleResidual = Null;
107  p_lineResidual = Null;
108 
109  p_camera = NULL;
110  p_focalPlaneMeasuredX = Null;
111  p_focalPlaneMeasuredY = Null;
112  p_focalPlaneComputedX = Null;
113  p_focalPlaneComputedY = Null;
114  p_measuredEphemerisTime = Null;
115 
116  parentPoint = NULL;
117  }
118 
119 
123  ControlMeasure::~ControlMeasure() {
124  if (p_serialNumber) {
125  delete p_serialNumber;
126  p_serialNumber = NULL;
127  }
128 
129  if (p_chooserName) {
130  delete p_chooserName;
131  p_chooserName = NULL;
132  }
133 
134  if (p_dateTime) {
135  delete p_dateTime;
136  p_dateTime = NULL;
137  }
138 
139  if (p_loggedData) {
140  delete p_loggedData;
141  p_loggedData = NULL;
142  }
143 
144  }
145 
146 
147  ControlMeasure::Status ControlMeasure::SetAprioriLine(double aprioriLine) {
148  if (IsEditLocked())
149  return MeasureLocked;
150  MeasureModified();
151 
152  p_aprioriLine = aprioriLine;
153  return Success;
154  }
155 
156 
157  ControlMeasure::Status ControlMeasure::SetAprioriSample(
158  double aprioriSample) {
159  if (IsEditLocked())
160  return MeasureLocked;
161  MeasureModified();
162 
163  p_aprioriSample = aprioriSample;
164  return Success;
165  }
166 
167 
182  ControlMeasure::Status ControlMeasure::SetCamera(Isis::Camera *camera) {
183  p_camera = camera;
184  return Success;
185  }
186 
187 
200  ControlMeasure::Status ControlMeasure::SetCubeSerialNumber(QString newSerialNumber) {
201  if (IsEditLocked())
202  return MeasureLocked;
203  *p_serialNumber = newSerialNumber;
204  return Success;
205  }
206 
207 
209  ControlMeasure::Status ControlMeasure::SetChooserName() {
210  if (IsEditLocked())
211  return MeasureLocked;
212  *p_chooserName = "";
213  return Success;
214  }
215 
216 
218  ControlMeasure::Status ControlMeasure::SetChooserName(QString name) {
219  if (IsEditLocked())
220  return MeasureLocked;
221  *p_chooserName = name;
222  return Success;
223  }
224 
225 
232  ControlMeasure::Status ControlMeasure::SetCoordinate(double sample,
233  double line) {
234  return SetCoordinate(sample, line, GetType());
235  }
236 
237 
245  ControlMeasure::Status ControlMeasure::SetCoordinate(double sample,
246  double line, MeasureType type) {
247  if (IsEditLocked())
248  return MeasureLocked;
249  MeasureModified();
250 
251  p_sample = sample;
252  p_line = line;
253 
254  SetType(type);
255  return Success;
256  }
257 
258 
260  ControlMeasure::Status ControlMeasure::SetDateTime() {
261  if (IsEditLocked())
262  return MeasureLocked;
263  *p_dateTime = Application::DateTime();
264  return Success;
265  }
266 
267 
269  ControlMeasure::Status ControlMeasure::SetDateTime(QString datetime) {
270  if (IsEditLocked())
271  return MeasureLocked;
272  *p_dateTime = datetime;
273  return Success;
274  }
275 
276 
285  ControlMeasure::Status ControlMeasure::SetDiameter(double diameter) {
286  if (IsEditLocked())
287  return MeasureLocked;
288  MeasureModified();
289  p_diameter = diameter;
290  return Success;
291  }
292 
293 
294  ControlMeasure::Status ControlMeasure::SetEditLock(bool editLock) {
295  p_editLock = editLock;
296  return Success;
297  }
298 
299 
312  ControlMeasure::Status ControlMeasure::SetFocalPlaneMeasured(double x,
313  double y) {
314  p_focalPlaneMeasuredX = x;
315  p_focalPlaneMeasuredY = y;
316  return Success;
317  }
318 
319 
332  ControlMeasure::Status ControlMeasure::SetFocalPlaneComputed(double x,
333  double y) {
334  p_focalPlaneComputedX = x;
335  p_focalPlaneComputedY = y;
336  return Success;
337  }
338 
339 
340 
341 
356  ControlMeasure::Status ControlMeasure::SetRejected(bool reject) {
357  MeasureModified();
358  p_jigsawRejected = reject;
359  return Success;
360  }
361 
362 
363  ControlMeasure::Status ControlMeasure::SetIgnored(bool newIgnoreStatus) {
364  if (IsEditLocked())
365  return MeasureLocked;
366 
367 
368  bool oldStatus = p_ignore;
369  p_ignore = newIgnoreStatus;
370 
371  if (Parent()) {
372  Parent()->emitMeasureModified(this, IgnoredModified, oldStatus, p_ignore);
373  }
374 
375  // only update if there was a change in status
376  if (oldStatus != p_ignore) {
377  MeasureModified();
378  if (parentPoint && !parentPoint->IsIgnored() && parentPoint->Parent()) {
379  ControlNet * cnet = parentPoint->Parent();
380  p_ignore ? cnet->measureIgnored(this) : cnet->measureUnIgnored(this);
381  cnet->emitNetworkStructureModified();
382  }
383  }
384 
385 
386  return Success;
387  }
388 
389 
390  ControlMeasure::Status ControlMeasure::SetLineSigma(double lineSigma) {
391  if (IsEditLocked())
392  return MeasureLocked;
393  MeasureModified();
394  p_lineSigma = lineSigma;
395  return Success;
396  }
397 
398 
412  ControlMeasure::Status ControlMeasure::SetResidual(double sampResidual,
413  double lineResidual) {
414 
415  MeasureModified();
416 
417  p_sampleResidual = sampResidual;
418  p_lineResidual = lineResidual;
419  return Success;
420  }
421 
422 
423  ControlMeasure::Status ControlMeasure::SetSampleSigma(double sampleSigma) {
424  if (IsEditLocked())
425  return MeasureLocked;
426  MeasureModified();
427  p_sampleSigma = sampleSigma;
428  return Success;
429  }
430 
431 
433  ControlMeasure::Status ControlMeasure::SetType(MeasureType type) {
434  if (IsEditLocked())
435  return MeasureLocked;
436  MeasureModified();
437 
438  p_measureType = type;
439  return Success;
440  }
441 
442 
448  void ControlMeasure::SetLogData(ControlMeasureLogData data) {
449  if (!data.IsValid()) {
450  QString msg = "Cannot set log data with invalid information stored in "
451  "the ControlMeasureLogData";
452  throw IException(IException::Programmer, msg, _FILEINFO_);
453  }
454 
455  if (HasLogData(data.GetDataType()))
456  UpdateLogData(data);
457  else
458  p_loggedData->append(data);
459  }
460 
461 
468  void ControlMeasure::DeleteLogData(long dataType) {
469  for (int i = p_loggedData->size()-1; i >= 0; i--) {
470  ControlMeasureLogData logDataEntry = p_loggedData->at(i);
471 
472  if (logDataEntry.GetDataType() == dataType)
473  p_loggedData->remove(i);
474  }
475  }
476 
477 
482  QVariant ControlMeasure::GetLogValue(long dataType) const {
483  for (int i = 0; i < p_loggedData->size(); i++) {
484  const ControlMeasureLogData &logDataEntry = p_loggedData->at(i);
485 
486  if (logDataEntry.GetDataType() == dataType)
487  return logDataEntry.GetValue();
488  }
489 
490  return QVariant();
491  }
492 
493 
499  bool ControlMeasure::HasLogData(long dataType) const {
500  for (int i = 0; i < p_loggedData->size(); i++) {
501  const ControlMeasureLogData &logDataEntry = p_loggedData->at(i);
502 
503  if (logDataEntry.GetDataType() == dataType)
504  return true;
505  }
506 
507  return false;
508  }
509 
510 
517  void ControlMeasure::UpdateLogData(ControlMeasureLogData newLogData) {
518  bool updated = false;
519 
520  for (int i = 0; i < p_loggedData->size(); i++) {
521  ControlMeasureLogData logDataEntry = p_loggedData->at(i);
522 
523  if (logDataEntry.GetDataType() == newLogData.GetDataType()) {
524  (*p_loggedData)[i] = newLogData;
525  updated = true;
526  }
527  }
528 
529  if (!updated) {
530  QString msg = "Unable to update the log data for ["
531  + newLogData.DataTypeToName(newLogData.GetDataType()) + "] because this"
532  " control measure does not have log data for this value. Please use "
533  "SetLogData instead";
534  throw IException(IException::Programmer, msg, _FILEINFO_);
535  }
536  }
537 
538 
539  double ControlMeasure::GetAprioriLine() const {
540  return p_aprioriLine;
541  }
542 
543 
544  double ControlMeasure::GetAprioriSample() const {
545  return p_aprioriSample;
546  }
547 
548 
549  Isis::Camera *ControlMeasure::Camera() const {
550  return p_camera;
551  }
552 
553 
555  QString ControlMeasure::GetChooserName() const {
556  if (*p_chooserName != "") {
557  return *p_chooserName;
558  }
559  else {
560  return FileName(Application::Name()).name();
561  }
562  }
563 
565  bool ControlMeasure::HasChooserName() const {
566  return !p_chooserName->isEmpty();
567  }
568 
570  QString ControlMeasure::GetCubeSerialNumber() const {
571  return *p_serialNumber;
572  }
573 
574 
576  QString ControlMeasure::GetDateTime() const {
577  if (*p_dateTime != "") {
578  return *p_dateTime;
579  }
580  else {
581  return Application::DateTime();
582  }
583  }
584 
586  bool ControlMeasure::HasDateTime() const {
587  return !p_dateTime->isEmpty();
588  }
589 
590 
591 
593  double ControlMeasure::GetDiameter() const {
594  return p_diameter;
595  }
596 
597 
614  bool ControlMeasure::IsEditLocked() const {
615  // Check to see if this measure is the reference measure of the parent
616  if (parentPoint != NULL && parentPoint->IsEditLocked() &&
617  this == parentPoint->GetRefMeasure())
618  return true;
619  return p_editLock;
620  }
621 
622 
623  double ControlMeasure::GetFocalPlaneComputedX() const {
624  return p_focalPlaneComputedX;
625  }
626 
627 
628  double ControlMeasure::GetFocalPlaneComputedY() const {
629  return p_focalPlaneComputedY;
630  }
631 
632 
633  double ControlMeasure::GetFocalPlaneMeasuredX() const {
634  return p_focalPlaneMeasuredX;
635  }
636 
637 
638  double ControlMeasure::GetFocalPlaneMeasuredY() const {
639  return p_focalPlaneMeasuredY;
640  }
641 
642 
643  bool ControlMeasure::IsIgnored() const {
644  return p_ignore;
645  }
646 
647 
648  bool ControlMeasure::IsRejected() const {
649  return p_jigsawRejected;
650  }
651 
652 
653  bool ControlMeasure::IsMeasured() const {
654  return p_measureType != Candidate;
655  }
656 
657 
658  bool ControlMeasure::IsRegistered() const {
659  return (p_measureType == RegisteredPixel ||
660  p_measureType == RegisteredSubPixel);
661  }
662 
663  bool ControlMeasure::IsStatisticallyRelevant(DataField field) const {
664  bool relevant = false;
665  bool validField = false;
666 
667  switch (field) {
668  case AprioriLine:
669  case AprioriSample:
670  case ChooserName:
671  case CubeSerialNumber:
672  case Coordinate:
673  case Diameter:
674  case FocalPlaneMeasured:
675  case FocalPlaneComputed:
676  case SampleResidual:
677  case LineResidual:
678  case SampleSigma:
679  case LineSigma:
680  relevant = true;
681  validField = true;
682  break;
683 
684  case DateTime:
685  case EditLock:
686  case Ignore:
687  case Rejected:
688  case Type:
689  validField = true;
690  break;
691  }
692 
693  if (!validField) {
694  QString msg = "Cannot test IsStatisticallyRelevant on Measure Data ["
695  + QString(field) + "]";
696  throw IException(IException::Programmer, msg, _FILEINFO_);
697  }
698 
699  return relevant;
700  }
701 
702 
703  double ControlMeasure::GetLine() const {
704  return p_line;
705  }
706 
707 
708  double ControlMeasure::GetLineResidual() const {
709  return p_lineResidual;
710  }
711 
712 
713  double ControlMeasure::GetLineSigma() const {
714  return p_lineSigma;
715  }
716 
717 
725  double ControlMeasure::GetResidualMagnitude() const {
726  if(IsSpecial(p_lineResidual) || IsSpecial(p_sampleResidual))
727  return Null;
728 
729  double dist = (p_lineResidual * p_lineResidual) +
730  (p_sampleResidual * p_sampleResidual);
731 
732  return sqrt(dist);
733  }
734 
735 
736  double ControlMeasure::GetSample() const {
737  return p_sample;
738  }
739 
740 
741  double ControlMeasure::GetSampleResidual() const {
742  return p_sampleResidual;
743  }
744 
745 
746  double ControlMeasure::GetSampleSigma() const {
747  return p_sampleSigma;
748  }
749 
750 
751  ControlMeasure::MeasureType ControlMeasure::GetType() const {
752  return p_measureType;
753  }
754 
755 
756  QString ControlMeasure::GetPointId() const {
757  if (parentPoint == NULL) {
758  QString msg = "Measure has no containing point";
759  throw IException(IException::User, msg, _FILEINFO_);
760  }
761 
762  return parentPoint->GetId();
763  }
764 
765 
766  double ControlMeasure::GetSampleShift() const {
767  return (p_sample != Null && p_aprioriSample != Null) ?
768  p_sample - p_aprioriSample : Null;
769  }
770 
771 
772  double ControlMeasure::GetLineShift() const {
773  return (p_line != Null && p_aprioriLine != Null) ?
774  p_line - p_aprioriLine : Null;
775  }
776 
777 
778  double ControlMeasure::GetPixelShift() const {
779  double sampleShift = GetSampleShift();
780  double lineShift = GetLineShift();
781  return (sampleShift != Null && lineShift != Null) ?
782  sqrt(pow(GetSampleShift(), 2) + pow(GetLineShift(), 2)) : Null;
783  }
784 
785 
786  ControlMeasureLogData ControlMeasure::GetLogData(long dataType) const {
787  int foundIndex = 0;
788  ControlMeasureLogData::NumericLogDataType typedDataType =
789  (ControlMeasureLogData::NumericLogDataType)dataType;
790 
791  while (foundIndex < p_loggedData->size()) {
792  const ControlMeasureLogData &logData = p_loggedData->at(foundIndex);
793  if (logData.GetDataType() == typedDataType) {
794  return logData;
795  }
796 
797  foundIndex ++;
798  }
799 
800  return ControlMeasureLogData(typedDataType);
801  }
802 
803 
809  QVector<ControlMeasureLogData> ControlMeasure::GetLogDataEntries() const {
811  if (p_loggedData) {
812  logs = *p_loggedData;
813  }
814  return logs;
815  }
816 
817 
819  double ControlMeasure::GetMeasureData(QString data) const {
820  if (data == "SampleResidual") {
821  return p_sampleResidual;
822  }
823  else if (data == "LineResidual") {
824  return p_lineResidual;
825  }
826  else if (data == "Type") {
827  return p_measureType;
828  }
829  else if (data == "IsMeasured") {
830  return IsMeasured();
831  }
832  else if (data == "IsRegistered") {
833  return IsRegistered();
834  }
835  else if (data == "Ignore") {
836  return p_ignore;
837  }
838  else {
839  QString msg = data + " passed to GetMeasureData but is invalid";
840  throw IException(IException::Programmer, msg, _FILEINFO_);
841  }
842  }
843 
844 
846  QVector< QString > ControlMeasure::GetMeasureDataNames() {
847  QVector< QString > names;
848 
849  names.push_back("SampleResidual");
850  names.push_back("LineResidual");
851  names.push_back("Type");
852  names.push_back("IsMeasured");
853  names.push_back("IsRegistered");
854  names.push_back("Ignore");
855 
856  return names;
857  }
858 
867  QList< QStringList > ControlMeasure::PrintableClassData() const {
869  QStringList qsl;
870 
871  qsl << "AprioriLine" << QString::number(p_aprioriLine);
872  data.append(qsl);
873  qsl.clear();
874 
875  qsl << "AprioriSample" << QString::number(p_aprioriSample);
876  data.append(qsl);
877  qsl.clear();
878 
879  qsl << "ChooserName" << *p_chooserName;
880  data.append(qsl);
881  qsl.clear();
882 
883  qsl << "CubeSerialNumber" << *p_serialNumber;
884  data.append(qsl);
885  qsl.clear();
886 
887  qsl << "DateTime" << *p_dateTime;
888  data.append(qsl);
889  qsl.clear();
890 
891  qsl << "Line" << QString::number(p_line);
892  data.append(qsl);
893  qsl.clear();
894 
895  qsl << "LineResidual" << QString::number(p_lineResidual);
896  data.append(qsl);
897  qsl.clear();
898 
899  qsl << "LineSigma" << QString::number(p_lineSigma);
900  data.append(qsl);
901  qsl.clear();
902 
903  qsl << "Sample" << QString::number(p_sample);
904  data.append(qsl);
905  qsl.clear();
906 
907  qsl << "SampleResidual" << QString::number(p_sampleResidual);
908  data.append(qsl);
909  qsl.clear();
910 
911  qsl << "SampleSigma" << QString::number(p_sampleSigma);
912  data.append(qsl);
913  qsl.clear();
914 
915  qsl << "ResidualMagnitude" << QString::number(GetResidualMagnitude());
916  data.append(qsl);
917  qsl.clear();
918 
919  qsl << "MeasureType" << GetMeasureTypeString();
920  data.append(qsl);
921  qsl.clear();
922 
923  return data;
924  }
925 
926 
932  ControlMeasure::MeasureType ControlMeasure::StringToMeasureType(QString str) {
933 
934  QString err = "String [" + str + "] can not be converted to a MeasureType";
935 
936  str = str.toLower();
937  MeasureType measureType;
938  if (str == "candidate")
939  measureType = ControlMeasure::Candidate;
940  else if (str == "manual")
941  measureType = ControlMeasure::Manual;
942  else if (str == "registeredpixel")
943  measureType = ControlMeasure::RegisteredPixel;
944  else if (str == "registeredsubpixel")
945  measureType = ControlMeasure::RegisteredSubPixel;
946  else
947  throw IException(IException::Programmer, err, _FILEINFO_);
948 
949  return measureType;
950  }
951 
952 
964  QString ControlMeasure::MeasureTypeToString(MeasureType type) {
965  QString sPrintable;
966 
967  switch (type) {
968  case ControlMeasure::Candidate:
969  sPrintable = "Candidate";
970  break;
971 
972  case ControlMeasure::Manual:
973  sPrintable = "Manual";
974  break;
975 
976  case ControlMeasure::RegisteredPixel:
977  sPrintable = "RegisteredPixel";
978  break;
979 
980  case ControlMeasure::RegisteredSubPixel:
981  sPrintable = "RegisteredSubPixel";
982  break;
983  }
984 
985  if (sPrintable == "") {
986  QString msg = "Measure type [" + toString(type) + "] cannot be converted "
987  "to a string";
988  throw IException(IException::Programmer, msg, _FILEINFO_);
989  }
990 
991  return sPrintable;
992  }
993 
994 
1000  QString ControlMeasure::GetMeasureTypeString() const {
1001  return MeasureTypeToString(p_measureType);
1002  }
1003 
1004 
1014  const ControlMeasure &ControlMeasure::operator=(const ControlMeasure &other) {
1015  if (this == &other)
1016  return *this;
1017 
1018  if (p_serialNumber) {
1019  delete p_serialNumber;
1020  p_serialNumber = NULL;
1021  }
1022  if (p_chooserName) {
1023  delete p_chooserName;
1024  p_chooserName = NULL;
1025  }
1026  if (p_dateTime) {
1027  delete p_dateTime;
1028  p_dateTime = NULL;
1029  }
1030  if (p_loggedData) {
1031  delete p_loggedData;
1032  p_loggedData = NULL;
1033  }
1034 
1035  p_serialNumber = new QString;
1036  p_chooserName = new QString;
1037  p_dateTime = new QString;
1038  p_loggedData = new QVector<ControlMeasureLogData>();
1039 
1040  bool oldLock = p_editLock;
1041  p_editLock = false;
1042 
1043  p_sample = other.p_sample;
1044  p_line = other.p_line;
1045  *p_loggedData = *other.p_loggedData;
1046 
1047  SetCubeSerialNumber(*other.p_serialNumber);
1048  SetChooserName(*other.p_chooserName);
1049  SetDateTime(*other.p_dateTime);
1050  SetType(other.p_measureType);
1051  // Call SetIgnored to update the ControlGraphNode. However, SetIgnored
1052  // will return if EditLock is true, so set to false temporarily.
1053  SetIgnored(other.p_ignore);
1054  SetDiameter(other.p_diameter);
1055  SetAprioriSample(other.p_aprioriSample);
1056  SetAprioriLine(other.p_aprioriLine);
1057  SetSampleSigma(other.p_sampleSigma);
1058  SetLineSigma(other.p_lineSigma);
1059  SetResidual(other.p_sampleResidual, other.p_lineResidual);
1060  SetCamera(other.p_camera);
1061  SetFocalPlaneMeasured(other.p_focalPlaneMeasuredX, other.p_focalPlaneMeasuredY);
1062  SetFocalPlaneComputed(other.p_focalPlaneComputedX, other.p_focalPlaneComputedY);
1063  p_editLock = oldLock;
1064  SetEditLock(other.p_editLock);
1065 
1066  return *this;
1067  }
1068 
1069 
1079  bool ControlMeasure::operator!=(const Isis::ControlMeasure &pMeasure) const {
1080  return !(*this == pMeasure);
1081  }
1082 
1083 
1100  bool ControlMeasure::operator==(const Isis::ControlMeasure &pMeasure) const {
1101  return pMeasure.p_measureType == p_measureType &&
1102  *pMeasure.p_serialNumber == *p_serialNumber &&
1103  *pMeasure.p_chooserName == *p_chooserName &&
1104  *pMeasure.p_dateTime == *p_dateTime &&
1105  pMeasure.p_editLock == p_editLock &&
1106  pMeasure.p_ignore == p_ignore &&
1107  pMeasure.p_jigsawRejected == p_jigsawRejected &&
1108  pMeasure.p_sample == p_sample &&
1109  pMeasure.p_line == p_line &&
1110  pMeasure.p_diameter == p_diameter &&
1111  pMeasure.p_aprioriSample == p_aprioriSample &&
1112  pMeasure.p_aprioriLine == p_aprioriLine &&
1113  pMeasure.p_computedEphemerisTime == p_computedEphemerisTime &&
1114  pMeasure.p_sampleSigma == p_sampleSigma &&
1115  pMeasure.p_lineSigma == p_lineSigma &&
1116  pMeasure.p_sampleResidual == p_sampleResidual &&
1117  pMeasure.p_lineResidual == p_lineResidual &&
1118  pMeasure.p_focalPlaneMeasuredX == p_focalPlaneMeasuredX &&
1119  pMeasure.p_focalPlaneMeasuredY == p_focalPlaneMeasuredY &&
1120  pMeasure.p_focalPlaneComputedX == p_focalPlaneComputedX &&
1121  pMeasure.p_focalPlaneComputedY == p_focalPlaneComputedY &&
1122  pMeasure.p_measuredEphemerisTime == p_measuredEphemerisTime;
1123  }
1124 
1125  void ControlMeasure::MeasureModified() {
1126  *p_dateTime = "";
1127  *p_chooserName = "";
1128  }
1129 }
double p_aprioriSample
The first identified location of the.
double p_lineResidual
Jigsaw information - Solution error - replaces p_lineError.
const double Null
Value for an Isis Null pixel.
Definition: SpecialPixel.h:110
NumericLogDataType GetDataType() const
Get the data type associated with this log data.
bool p_jigsawRejected
Status of measure for last bundle adjust iteration.
File name manipulation and expansion.
Definition: FileName.h:116
double p_sample
Current sample/line measurement.
Statistical and similar ControlMeasure associated information.
Namespace for the standard library.
QString name() const
Returns the name of the file excluding the path and the attributes in the file name.
Definition: FileName.cpp:178
QString * p_chooserName
list the program used and the definition file or include the user name for qnet
QVariant GetValue() const
Get the data type associated with this log data.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Definition: IString.cpp:226
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 IsValid() const
This tests if the log data is complete and valid.
double p_line
Jigsaw uses this measure.
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:40
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.
bool IsSpecial(const double d)
Returns if the input pixel is special.
Definition: SpecialPixel.h:212
QString DataTypeToName(NumericLogDataType type) const
This converts the log data type to a string and is used internally for convertions to and from Pvl...
MeasureType
Control network measurement types.
double p_sampleResidual
Jigsaw information - Solution error - replaces p_sampleError.
Isis exception class.
Definition: IException.h:107
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
a control measurement