1 #include "QnetSetAprioriDialog.h" 9 #include <QListWidgetItem> 10 #include <QMessageBox> 11 #include <QPushButton> 12 #include <QStackedWidget> 14 #include <QStringList> 16 #include <QVBoxLayout> 33 QnetSetAprioriDialog::QnetSetAprioriDialog(QnetTool *qnetTool,
QWidget *parent) :
QDialog(parent) {
34 m_qnetTool = qnetTool;
36 m_aprioriDialog = NULL;
37 m_aprioriGridLayout = NULL;
39 m_cancelButton = NULL;
41 m_pointInfoStack = NULL;
43 m_singlePointInfoGroup = NULL;
44 m_pointIDLabel = NULL;
45 m_pointTypeLabel = NULL;
46 m_pointMeasureNumber = NULL;
47 m_editLockedBoolLabel = NULL;
48 m_ignoredBoolLabel = NULL;
50 m_multiplePointsInfoGroup = NULL;
52 m_pointsMeasuresCount = NULL;
53 m_constrainedPointsCount = NULL;
54 m_fixedPointsCount = NULL;
55 m_freePointsCount = NULL;
56 m_pointsEditLockedCount = NULL;
57 m_pointsIgnoredCount = NULL;
60 m_aprioriLatLabel = NULL;
61 m_aprioriLonLabel = NULL;
62 m_aprioriRadiusLabel = NULL;
65 m_radiusLineEdit = NULL;
66 m_currentAprioriButton = NULL;
67 m_referenceAprioriButton = NULL;
68 m_averageAprioriButton = NULL;
71 m_sigmaWarningLabel = NULL;
72 m_currentSigmaButton = NULL;
73 m_latSigmaLabel = NULL;
74 m_lonSigmaLabel = NULL;
75 m_radiusSigmaLabel = NULL;
76 m_latSigmaLineEdit = NULL;
77 m_lonSigmaLineEdit = NULL;
78 m_radiusSigmaLineEdit = NULL;
80 m_multiPointsMeasureCount = 0;
81 m_multiPointsConstraintedCount = 0;
82 m_multiPointsFixedCount = 0;
83 m_multiPointsFreeCount = 0;
84 m_multiPointsEditLockedCount = 0;
85 m_multiPointsIgnoredCount = 0;
87 createSetAprioriDialog(parent);
89 connect(m_currentAprioriButton, SIGNAL(clicked()),
this, SLOT(fillCurrentAprioriLineEdits()));
90 connect(m_referenceAprioriButton, SIGNAL(clicked()),
this,
91 SLOT(fillReferenceAprioriLineEdits()));
92 connect(m_averageAprioriButton, SIGNAL(clicked()),
this, SLOT(fillAverageAprioriLineEdits()));
99 connect(m_currentSigmaButton, SIGNAL(clicked()),
this, SLOT(fillSigmaLineEdits()));
100 connect(m_currentSigmaButton, SIGNAL(clicked()),
this, SLOT(fillSigmaLineEdits()));
102 connect(m_aprioriDialog, SIGNAL(rejected()),
this, SLOT(reject()));
104 connect(m_okButton, SIGNAL(clicked()),
this, SLOT(setApriori()));
105 connect(m_okButton, SIGNAL(clicked()),
this, SLOT(closeEvent()));
106 connect(m_okButton, SIGNAL(clicked()), m_aprioriDialog, SLOT(close()));
108 connect(m_applyButton, SIGNAL(clicked()),
this, SLOT(setApriori()));
109 connect(m_cancelButton, SIGNAL(clicked()),
this, SLOT(closeEvent()));
110 connect(m_cancelButton, SIGNAL(clicked()), m_aprioriDialog, SLOT(close()));
125 m_pointIDLabel =
new QLabel(
"Point ID: ");
126 m_pointTypeLabel =
new QLabel(
"Point Type: ");
127 m_pointMeasureNumber =
new QLabel(
"Number of Measures: ");
128 m_editLockedBoolLabel =
new QLabel(
"EditLocked: ");
129 m_ignoredBoolLabel=
new QLabel(
"Ignored: ");
131 m_pointsCount =
new QLabel(
"Number of Points: ");
132 m_pointsMeasuresCount =
new QLabel(
"Total Number of Measures: ");
133 m_constrainedPointsCount =
new QLabel(
"Number of Constrained Points: ");
134 m_fixedPointsCount =
new QLabel(
"Number of Fixed Points: ");
135 m_freePointsCount =
new QLabel(
"Number of Free Points: ");
136 m_pointsEditLockedCount =
new QLabel(
"Number of Edit Locked Points: ");
137 m_pointsIgnoredCount =
new QLabel(
"Number of Ignored Points: ");
139 m_currentAprioriButton =
new QPushButton(
"Current");
140 m_currentAprioriButton->setDefault(
false);
141 m_currentAprioriButton->setToolTip(
"Populate with the current Apriori Position");
143 m_referenceAprioriButton =
new QPushButton(
"Reference");
144 m_referenceAprioriButton->setToolTip(
"Populate with Apriori Position of the reference measure");
146 m_averageAprioriButton =
new QPushButton(
"Average");
147 m_averageAprioriButton->setToolTip(
"Calculate and populate with the average Apriori Position");
152 m_aprioriLatLabel =
new QLabel(tr(
"Apriori Latitude"));
153 m_aprioriLonLabel =
new QLabel(tr(
"Apriori Longitude"));
154 m_aprioriRadiusLabel =
new QLabel(tr(
"Apriori Radius"));
155 m_latLineEdit =
new QLineEdit();
156 m_lonLineEdit =
new QLineEdit();
157 m_radiusLineEdit =
new QLineEdit();
159 m_sigmaWarningLabel =
new QLabel(
"");
161 m_currentSigmaButton =
new QPushButton(
"Current");
162 m_currentSigmaButton->setToolTip(
"Populate the current sigma values");
164 m_latSigmaLabel =
new QLabel(tr(
"Latitude Sigma"));
165 m_lonSigmaLabel =
new QLabel(tr(
"Longitude Sigma"));
166 m_radiusSigmaLabel =
new QLabel(tr(
"Radius Sigma"));
167 m_latSigmaLineEdit =
new QLineEdit();
168 m_lonSigmaLineEdit =
new QLineEdit();
169 m_radiusSigmaLineEdit =
new QLineEdit();
171 m_okButton =
new QPushButton(
"&OK");
172 m_okButton->setToolTip(
"Apply changes and close this dialog");
174 m_cancelButton =
new QPushButton(
"&Cancel");
175 m_cancelButton->setToolTip(
"Discard changes and close this dialog");
177 m_applyButton =
new QPushButton(
"&Apply");
178 m_applyButton->setAutoDefault(
true);
179 m_applyButton->setDefault(
true);
180 m_applyButton->setToolTip(
"Apply changes");
183 m_pointGroup =
new QGroupBox(tr(
"Apriori Point"));
184 m_pointGroup->setToolTip(
"Apriori Point Position");
186 QGridLayout *pointGridLayout =
new QGridLayout(m_pointGroup);
187 pointGridLayout->addWidget(m_currentAprioriButton, 1, 1);
188 pointGridLayout->addWidget(m_referenceAprioriButton, 1, 2);
189 pointGridLayout->addWidget(m_averageAprioriButton, 1, 3);
191 pointGridLayout->addWidget(m_aprioriLatLabel, 2, 1);
192 pointGridLayout->addWidget(m_aprioriLonLabel, 3, 1);
193 pointGridLayout->addWidget(m_aprioriRadiusLabel, 4, 1);
194 pointGridLayout->addWidget(m_latLineEdit, 2, 2, 1, -1);
195 pointGridLayout->addWidget(m_lonLineEdit, 3, 2, 1, -1);
196 pointGridLayout->addWidget(m_radiusLineEdit, 4, 2, 1, -1);
197 m_pointGroup->setLayout(pointGridLayout);
200 m_sigmaGroup =
new QGroupBox(tr(
"Apriori Constraints"));
201 QGridLayout *sigmaGridLayout =
new QGridLayout(m_sigmaGroup);
202 sigmaGridLayout->addWidget(m_currentSigmaButton, 1, 1);
203 sigmaGridLayout->addWidget(m_latSigmaLabel, 2, 1);
204 sigmaGridLayout->addWidget(m_lonSigmaLabel, 3, 1);
205 sigmaGridLayout->addWidget(m_radiusSigmaLabel, 4, 1);
206 sigmaGridLayout->addWidget(m_latSigmaLineEdit, 2, 2, 1, 3);
207 sigmaGridLayout->addWidget(m_lonSigmaLineEdit, 3, 2, 1, 3);
208 sigmaGridLayout->addWidget(m_radiusSigmaLineEdit, 4, 2, 1, 3);
209 m_sigmaGroup->setLayout(sigmaGridLayout);
212 m_singlePointInfoGroup =
new QGroupBox(tr(
"Point Information"));
213 m_singlePointInfoGroup->setToolTip(
"Information on Point selected");
215 QVBoxLayout *m_singlePointInfoLayout =
new QVBoxLayout(m_singlePointInfoGroup);
216 m_singlePointInfoLayout->addWidget(m_pointIDLabel);
217 m_singlePointInfoLayout->addWidget(m_pointTypeLabel);
218 m_singlePointInfoLayout->addWidget(m_pointMeasureNumber);
219 m_singlePointInfoLayout->addWidget(m_editLockedBoolLabel);
220 m_singlePointInfoLayout->addWidget(m_ignoredBoolLabel);
221 m_singlePointInfoGroup->setLayout(m_singlePointInfoLayout);
224 m_multiplePointsInfoGroup =
new QGroupBox(tr(
"Multiple Point Information"));
225 m_multiplePointsInfoGroup->setToolTip(
"Information on Points selected");
226 QVBoxLayout *m_multiplePointsInfoLayout =
new QVBoxLayout(m_multiplePointsInfoGroup);
227 m_multiplePointsInfoLayout->addWidget(m_pointsCount);
228 m_multiplePointsInfoLayout->addWidget(m_pointsMeasuresCount);
229 m_multiplePointsInfoLayout->addWidget(m_constrainedPointsCount);
230 m_multiplePointsInfoLayout->addWidget(m_fixedPointsCount);
231 m_multiplePointsInfoLayout->addWidget(m_freePointsCount);
232 m_multiplePointsInfoLayout->addWidget(m_pointsEditLockedCount);
233 m_multiplePointsInfoLayout->addWidget(m_pointsIgnoredCount);
234 m_multiplePointsInfoGroup->setLayout(m_multiplePointsInfoLayout);
237 m_pointInfoStack =
new QStackedWidget;
238 m_pointInfoStack->addWidget(m_singlePointInfoGroup);
239 m_pointInfoStack->addWidget(m_multiplePointsInfoGroup);
242 m_aprioriGridLayout =
new QGridLayout(m_aprioriDialog);
243 m_aprioriGridLayout->addWidget(m_pointInfoStack, 1, 1, 1, -1);
244 m_aprioriGridLayout->addWidget(m_pointGroup, 5, 1, 1, -1);
245 m_aprioriGridLayout->addWidget(m_sigmaGroup, 6, 1, 1, -1);
246 m_aprioriGridLayout->addWidget(m_sigmaWarningLabel, 7, 1, 1, -1);
247 m_aprioriGridLayout->addWidget(m_okButton, 8, 2);
248 m_aprioriGridLayout->addWidget(m_cancelButton, 8, 3);
249 m_aprioriGridLayout->addWidget(m_applyButton, 8, 4);
252 m_aprioriDialog =
new QDialog(parent);
253 m_aprioriDialog->setWindowTitle(
"Set Apriori Point and Constraints");
254 m_aprioriDialog->setLayout(m_aprioriGridLayout);
280 disconnect(m_currentAprioriButton, SIGNAL(clicked()),
this,
282 disconnect(m_referenceAprioriButton, SIGNAL(clicked()),
this,
284 disconnect(m_averageAprioriButton, SIGNAL(clicked()),
this,
287 disconnect(m_currentSigmaButton, SIGNAL(clicked()),
this, SLOT(
fillSigmaLineEdits()));
288 disconnect(m_currentSigmaButton, SIGNAL(clicked()),
this, SLOT(
fillSigmaLineEdits()));
290 disconnect(m_okButton, SIGNAL(clicked()),
this, SLOT(
setApriori()));
291 disconnect(m_applyButton, SIGNAL(clicked()),
this, SLOT(
setApriori()));
293 emit aprioriDialogClosed();
305 if (m_aprioriDialog != NULL) {
306 m_aprioriDialog->setVisible(
true);
322 m_points = selectedPoints;
330 if (m_points.size() == 1) {
346 if (m_points.size() == 0) {
347 QString msg =
"There are no Points selected. Please select a Point.";
348 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
353 if (m_points.size() == 1) {
354 QString
id = m_points.at(0)->text();
355 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
359 m_latLineEdit->setText(
363 m_latLineEdit->clear();
366 m_lonLineEdit->setText(
370 m_lonLineEdit->clear();
374 m_radiusLineEdit->setText(
378 m_radiusLineEdit->clear();
380 m_aprioriSource = (Source) USER;
394 if (m_points.size() == 0) {
395 QString msg =
"There are no Points selected. Please select a Point.";
396 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
401 if (m_points.size() == 1) {
403 QString
id = m_points.at(0)->text();
404 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
410 Camera *cam = m_qnetTool->controlNet()->
Camera(camIndex);
411 cam->
SetImage(m->GetSample(),m->GetLine());
414 m_latLineEdit->setText(
418 m_latLineEdit->clear();
421 m_lonLineEdit->setText(
425 m_lonLineEdit->clear();
429 m_radiusLineEdit->setText(
433 m_radiusLineEdit->clear();
437 if ((m_latLineEdit->text() ==
"") && (m_lonLineEdit->text() ==
"")
438 && (m_radiusLineEdit->text() ==
"")) {
439 QString msg =
"Cannot retrieve the latitude, longitude, and radius from the reference";
440 msg = msg +
"measure; this is the result of a known problem in our system. Please select ";
441 msg = msg +
"Current, Average, or enter your own values.";
442 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
445 m_aprioriSource = (Source) REFERENCE;
466 if (m_points.size() == 0) {
467 QString msg =
"There are no Points selected. Please select a Point.";
468 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
473 if (m_points.size() == 1) {
478 int goodMeasures = 0;
481 QString
id = m_points.at(0)->text();
482 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
488 for (
int i = 0; i < pt->GetNumMeasures(); i++) {
490 if (m->IsIgnored()) {
494 Camera *cam = m->Camera();
496 QString msg =
"The Camera must be set prior to calculating apriori";
499 if (cam->
SetImage(m->GetSample(), m->GetLine())) {
506 r2B += pB[0]*pB[0] + pB[1]*pB[1] + pB[2]*pB[2];
522 if (goodMeasures == 0) {
523 QString msg =
"ControlPoint [" +
id +
"] has no measures which " 524 "project to lat/lon/radius (x/y/z)";
531 double avgX = xB / goodMeasures;
532 double avgY = yB / goodMeasures;
533 double avgZ = zB / goodMeasures;
534 double avgR2 = r2B / goodMeasures;
535 double scale = sqrt(avgR2/(avgX*avgX+avgY*avgY+avgZ*avgZ));
562 m_latLineEdit->setText(
566 m_latLineEdit->clear();
569 m_lonLineEdit->setText(
573 m_lonLineEdit->clear();
577 m_radiusLineEdit->setText(
581 m_radiusLineEdit->clear();
586 if ((m_latLineEdit->text() ==
"") && (m_lonLineEdit->text() ==
"")
587 && (m_radiusLineEdit->text() ==
"")) {
588 QString msg =
"Average cannot be computed for this point [" + m_points.at(0)->text();
589 msg = msg +
"]; this is the result of a known problem in our system. Please select ";
590 msg = msg +
"Current, Reference, or enter your own values.";
591 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
594 m_aprioriSource = (Source) AVERAGE;
628 if (m_points.size() == 0) {
629 QString msg =
"There are no Points selected. Please select a Point.";
630 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
635 if (m_points.size() == 1) {
636 QString
id = m_points.at(0)->text();
637 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
640 m_latSigmaLineEdit->setText(
644 m_lonSigmaLineEdit->setText(
648 if (sPt.GetLocalRadiusSigma().
meters() !=
Null) {
649 m_radiusSigmaLineEdit->setText(
650 QString::number(sPt.GetLocalRadiusSigma().
meters(),
'f', 2));
665 if (selectedPoints.size() > 1) {
666 m_pointInfoStack->setCurrentWidget(m_multiplePointsInfoGroup);
669 m_pointInfoStack->setCurrentWidget(m_singlePointInfoGroup);
683 m_points = selectedPoints;
684 m_aprioriDialog->setEnabled(
true);
685 m_sigmaGroup->setEnabled(
true);
686 m_pointGroup->setEnabled(
true);
687 m_currentSigmaButton->setEnabled(
true);
688 m_sigmaWarningLabel->clear();
690 m_multiPointsMeasureCount = 0;
691 m_multiPointsConstraintedCount = 0;
692 m_multiPointsFixedCount = 0;
693 m_multiPointsFreeCount = 0;
694 m_multiPointsEditLockedCount = 0;
695 m_multiPointsIgnoredCount = 0;
698 if (m_points.size() > 1) {
699 for (
int i = 0; i < m_points.size(); i++) {
700 QString
id = m_points.at(i)->text();
701 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
702 m_multiPointsMeasureCount += pt->GetNumMeasures();
703 if (pt->IsEditLocked()) {
704 m_multiPointsEditLockedCount++;
706 if (pt->IsIgnored()) {
707 m_multiPointsIgnoredCount++;
710 m_multiPointsConstraintedCount++;
713 m_multiPointsFixedCount++;
716 m_multiPointsFreeCount++;
719 if (m_multiPointsEditLockedCount > 0) {
720 m_aprioriDialog->setDisabled(
true);
721 QString msg =
"There is an EditLocked point selected. To continue, unselect the";
722 msg = msg +
" Editlocked point.";
723 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
726 if (m_multiPointsFixedCount > 0 || m_multiPointsFreeCount > 0) {
727 m_aprioriDialog->setDisabled(
true);
728 QString msg =
"Sigmas can only be set on Constrained points. Use Filters to filter by";
729 msg = msg +
" Constrained points.";
730 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
733 m_pointGroup->setDisabled(
true);
734 m_currentSigmaButton->setDisabled(
true);
737 else if (m_points.size() == 1) {
738 QString
id = m_points.at(0)->text();
739 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
740 if (pt->IsEditLocked()) {
741 m_aprioriDialog->setDisabled(
true);
742 QString msg =
"This control point is edit locked. The Apriori latitude, longitude and ";
743 msg +=
"radius cannot be updated. You must first unlock the point by clicking the ";
744 msg +=
"check box above labeled \"Edit Lock Point\".";
745 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
749 m_sigmaWarningLabel->setText(
"Change point type to Constrained to enter constraints (Apriori Sigmas).");
750 m_sigmaGroup->setDisabled(
true);
753 m_aprioriDialog->setEnabled(
true);
754 m_sigmaGroup->setEnabled(
true);
755 m_pointGroup->setEnabled(
true);
756 m_currentSigmaButton->setEnabled(
true);
771 m_latLineEdit->clear();
772 m_lonLineEdit->clear();
773 m_radiusLineEdit->clear();
774 m_latSigmaLineEdit->clear();
775 m_lonSigmaLineEdit->clear();
776 m_radiusSigmaLineEdit->clear();
788 if (m_points.size() < 0) {
789 m_pointIDLabel->setText(
"Point ID: ");
790 m_pointTypeLabel->setText(
"Point Type: ");
791 m_pointMeasureNumber->setText(
"Number of Measures: ");
792 m_editLockedBoolLabel->setText(
"EditLocked: ");
793 m_ignoredBoolLabel->setText(
"Ignored: ");
796 else if (m_points.size() == 1) {
797 QString
id = m_points.at(0)->text();
798 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
799 m_pointIDLabel->setText(
"Point ID: " + QString(
id));
801 m_pointMeasureNumber->setText(
"Number of Measures: " + QString::number(pt->GetNumMeasures()));
803 if (pt->IsEditLocked()) {
804 m_editLockedBoolLabel->setText(
"EditLocked: True");
807 m_editLockedBoolLabel->setText(
"EditLocked: False");
809 if (pt->IsIgnored()) {
810 m_ignoredBoolLabel->setText(
"Ignored: True");
813 m_ignoredBoolLabel->setText(
"Ignored: False");
817 else if (m_points.size() > 1) {
818 m_pointsCount->setText(
"Number of Points: " + QString::number(m_points.size()));
819 m_pointsMeasuresCount->setText(
"Total Number of Measures: " +
820 QString::number(m_multiPointsMeasureCount));
821 m_constrainedPointsCount->setText(
"Number of Constrained Points: " +
822 QString::number(m_multiPointsConstraintedCount));
823 m_fixedPointsCount->setText(
"Number of Fixed Points: " +
824 QString::number(m_multiPointsFixedCount));
825 m_freePointsCount->setText(
"Number of Free Points: " +
826 QString::number(m_multiPointsFreeCount));
827 m_pointsEditLockedCount->setText(
"Number of Edit Locked Points: " +
828 QString::number(m_multiPointsEditLockedCount));
829 m_pointsIgnoredCount->setText(
"Number of Ignored Points: " +
830 QString::number(m_multiPointsIgnoredCount));
861 if (m_points.size() == 0) {
862 QString msg =
"There are no Points selected. Please select a Point.";
863 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
867 double latSigma =
Null;
869 double lonSigma =
Null;
871 double radiusSigma =
Null;
872 double radius =
Null;
873 bool lineEditModified =
false;
876 if (m_latLineEdit->text() !=
"") {
877 lat = m_latLineEdit->text().toDouble();
878 if (lat > 90 || lat < -90) {
879 QString msg =
"Invalid latitude value. Please enter a latitude value between -90 and 90.";
880 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
883 if (m_latLineEdit->isModified()) {
884 lineEditModified =
true;
887 if (m_lonLineEdit->text() !=
"") {
888 lon = m_lonLineEdit->text().toDouble();
889 if (m_lonLineEdit->isModified()) {
890 lineEditModified =
true;
893 if (m_radiusLineEdit->text() !=
"") {
894 radius = m_radiusLineEdit->text().toDouble();
895 if (m_radiusLineEdit->isModified()) {
896 lineEditModified =
true;
899 if (m_latSigmaLineEdit->text() !=
"") {
900 latSigma = m_latSigmaLineEdit->text().toDouble();
902 if (m_lonSigmaLineEdit->text() !=
"") {
903 lonSigma = m_lonSigmaLineEdit->text().toDouble();
905 if (m_radiusSigmaLineEdit->text() !=
"") {
906 radiusSigma = m_radiusSigmaLineEdit->text().toDouble();
912 if (lineEditModified) {
913 m_aprioriSource = (Source) USER;
916 for (
int i = 0; i < m_points.size(); i++) {
917 QString
id = m_points.at(i)->text();
918 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
919 if (m_points.size() == 1) {
924 if (m_aprioriSource == (Source) REFERENCE) {
927 else if (m_aprioriSource == (Source) AVERAGE) {
931 else if (m_aprioriSource == (Source) USER) {
936 if (!pt->HasAprioriCoordinates()) {
937 QString msg =
"Point [" +
id +
"] does not have an Apriori coordinate. " 938 "Make sure to save the ground source measurement then the Point before " 939 "setting the sigmas. ";
940 if (m_points.size() > 1) {
941 msg +=
"The sigmas for all of the selected points will not be set.";
944 msg +=
"The sigmas for this point will not be set.";
946 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
965 emit pointChanged(
id);
969 QString message =
"Error setting sigmas. \n";
971 QMessageBox::critical((
QWidget *)parent(),
"Error",message);
972 QApplication::restoreOverrideCursor();
974 emit pointChanged(
id);
This class defines a body-fixed surface point.
Status SetAprioriSurfacePointSource(SurfacePointSource::Source source)
This updates the source of the surface point.
void Coordinate(double p[3]) const
Returns the x,y,z of the surface intersection in BodyFixed km.
void fillReferenceAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the reference measure values.
double meters() const
Get the distance in meters.
int serialNumberIndex(const QString &sn)
Return a list index given a serial number.
void clearLineEdits()
Clears the line edits.
const double Null
Value for an Isis Null pixel.
The distance is being specified in kilometers.
void setVisiblity()
Shows the dialog box.
void resetInfoLabels()
Resets and populates the information stack labels.
bool IsCoord3Constrained()
Return bool indicating if 3rd coordinate is Constrained or not.
const ControlMeasure * GetMeasure(QString serialNumber) const
Get a control measure based on its cube's serial number.
void checkPointInfoDisable(QList< QListWidgetItem *> selectedPoints)
Enables/Disables features based on if there are multiple points selected or not.
double meters() const
Get the displacement in meters.
void fillAverageAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the average measure values.
Namespace for the standard library.
This class is designed to encapsulate the concept of a Latitude.
Distance GetLatSigmaDistance() const
Return the latitude sigma as a Distance.
Distance GetLonSigmaDistance() const
Return the longitude sigma in meters.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
This error is for when a programmer made an API call that was illegal.
virtual void reject()
This is called when the user selects the X button on the top right or they hit ESC.
The distance is being specified in meters.
Distance measurement, usually in meters.
void fillSigmaLineEdits()
This is the base for a new ticket that allows for a ground source button
Latitude GetLatitude() const
Return the body-fixed latitude for the surface point.
void createSetAprioriDialog(QWidget *parent)
Creates the dialog box for the set apriori tool.
double degrees() const
Get the angle in units of Degrees.
void setInfoStack(QList< QListWidgetItem *> selectedPoints)
Switches what information is visible based on how many points are selected.
void setPoints(QList< QListWidgetItem *> selectedPoints)
Set control points in the dialog.
bool SetImage(const double sample, const double line)
Sets the sample/line values of the image to get the lat/lon values.
This class is designed to encapsulate the concept of a Longitude.
Degrees are generally considered more human readable, 0-360 is one circle, however most math does not...
bool IsCoord2Constrained()
Return bool indicating if 2nd coordinate is Constrained or not.
#define _FILEINFO_
Macro for the filename and line number.
A type of error that could only have occurred due to a mistake on the user's part (e...
Status SetAprioriSurfacePoint(SurfacePoint aprioriSP)
This updates the apriori surface point.
bool IsCoord1Constrained()
Return bool indicating if 1st coordinate is Constrained or not.
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void closeEvent()
Disconnect all of the slots on a close event.
Longitude GetLongitude() const
Return the body-fixed longitude for the surface point.
QString toString() const
Returns a string representation of this exception.
void fillCurrentAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the current values.
Displacement is a signed length, usually in meters.
SurfacePoint GetSurfacePoint() const
Returns the surface point (most efficient accessor).
QString GetPointTypeString() const
Obtain a string representation of the PointType.
Namespace for ISIS/Bullet specific routines.
Isis::Camera * Camera(int index)
Returns the camera list from the given image number.
void SetSphericalSigmasDistance(const Distance &latSigma, const Distance &lonSigma, const Distance &radiusSigma)
Set the spherical sigmas (in Distance units) into the spherical variance/covariance matrix...
The distance is being specified in meters.
void setApriori()
Slot to set apriori on selected Points from Navigator list box.
int NumberOfConstrainedCoordinates()
Return bool indicating if point is Constrained or not.
Distance GetLocalRadius() const
Return the radius of the surface point.
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
void SetRectangular(const Displacement &x, const Displacement &y, const Displacement &z, const Distance &xSigma=Distance(), const Distance &ySigma=Distance(), const Distance &zSigma=Distance())
Set surface point in rectangular body-fixed coordinates wtih optional sigmas.
Unless noted otherwise, the portions of Isis written by the USGS are public domain.