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);
357 vector<Distance> targetRadii = m_qnetTool->controlNet()->
GetTargetRadii();
363 m_latLineEdit->setText(
367 m_latLineEdit->clear();
370 m_lonLineEdit->setText(
374 m_lonLineEdit->clear();
378 m_radiusLineEdit->setText(
382 m_radiusLineEdit->clear();
384 m_aprioriSource = (Source) USER;
398 if (m_points.size() == 0) {
399 QString msg =
"There are no Points selected. Please select a Point.";
400 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
405 if (m_points.size() == 1) {
407 QString
id = m_points.at(0)->text();
408 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
410 vector<Distance> targetRadii = m_qnetTool->controlNet()->
GetTargetRadii();
415 Camera *cam = m_qnetTool->controlNet()->
Camera(camIndex);
416 cam->
SetImage(m->GetSample(),m->GetLine());
422 m_latLineEdit->setText(
426 m_latLineEdit->clear();
429 m_lonLineEdit->setText(
433 m_lonLineEdit->clear();
437 m_radiusLineEdit->setText(
441 m_radiusLineEdit->clear();
445 if ((m_latLineEdit->text() ==
"") && (m_lonLineEdit->text() ==
"")
446 && (m_radiusLineEdit->text() ==
"")) {
447 QString msg =
"Cannot retrieve the latitude, longitude, and radius from the reference";
448 msg = msg +
"measure; this is the result of a known problem in our system. Please select ";
449 msg = msg +
"Current, Average, or enter your own values.";
450 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
453 m_aprioriSource = (Source) REFERENCE;
474 if (m_points.size() == 0) {
475 QString msg =
"There are no Points selected. Please select a Point.";
476 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
481 if (m_points.size() == 1) {
486 int goodMeasures = 0;
489 QString
id = m_points.at(0)->text();
490 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
496 for (
int i = 0; i < pt->GetNumMeasures(); i++) {
498 if (m->IsIgnored()) {
502 Camera *cam = m->Camera();
504 QString msg =
"The Camera must be set prior to calculating apriori";
507 if (cam->
SetImage(m->GetSample(), m->GetLine())) {
514 r2B += pB[0]*pB[0] + pB[1]*pB[1] + pB[2]*pB[2];
530 if (goodMeasures == 0) {
531 QString msg =
"ControlPoint [" +
id +
"] has no measures which "
532 "project to lat/lon/radius (x/y/z)";
538 if (pt->
GetPointTypeString() ==
"Free" || pt->NumberOfConstrainedCoordinates() == 0) {
539 double avgX = xB / goodMeasures;
540 double avgY = yB / goodMeasures;
541 double avgZ = zB / goodMeasures;
542 double avgR2 = r2B / goodMeasures;
543 double scale = sqrt(avgR2/(avgX*avgX+avgY*avgY+avgZ*avgZ));
553 !(pt->NumberOfConstrainedCoordinates() == 3) &&
554 !pt->IsLatitudeConstrained() &&
555 !pt->IsLongitudeConstrained() &&
556 !pt->IsRadiusConstrained()){
569 vector<Distance> targetRadii = m_qnetTool->controlNet()->
GetTargetRadii();
575 m_latLineEdit->setText(
579 m_latLineEdit->clear();
582 m_lonLineEdit->setText(
586 m_lonLineEdit->clear();
590 m_radiusLineEdit->setText(
594 m_radiusLineEdit->clear();
599 if ((m_latLineEdit->text() ==
"") && (m_lonLineEdit->text() ==
"")
600 && (m_radiusLineEdit->text() ==
"")) {
601 QString msg =
"Average cannot be computed for this point [" + m_points.at(0)->text();
602 msg = msg +
"]; this is the result of a known problem in our system. Please select ";
603 msg = msg +
"Current, Reference, or enter your own values.";
604 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
607 m_aprioriSource = (Source) AVERAGE;
641 if (m_points.size() == 0) {
642 QString msg =
"There are no Points selected. Please select a Point.";
643 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
648 if (m_points.size() == 1) {
649 QString
id = m_points.at(0)->text();
650 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
652 vector<Distance> targetRadii = m_qnetTool->controlNet()->
GetTargetRadii();
657 m_latSigmaLineEdit->setText(
661 m_lonSigmaLineEdit->setText(
665 if (sPt.GetLocalRadiusSigma().
meters() !=
Null) {
666 m_radiusSigmaLineEdit->setText(
667 QString::number(sPt.GetLocalRadiusSigma().
meters(),
'f', 2));
682 if (selectedPoints.size() > 1) {
683 m_pointInfoStack->setCurrentWidget(m_multiplePointsInfoGroup);
686 m_pointInfoStack->setCurrentWidget(m_singlePointInfoGroup);
700 m_points = selectedPoints;
701 m_aprioriDialog->setEnabled(
true);
702 m_sigmaGroup->setEnabled(
true);
703 m_pointGroup->setEnabled(
true);
704 m_currentSigmaButton->setEnabled(
true);
705 m_sigmaWarningLabel->clear();
707 m_multiPointsMeasureCount = 0;
708 m_multiPointsConstraintedCount = 0;
709 m_multiPointsFixedCount = 0;
710 m_multiPointsFreeCount = 0;
711 m_multiPointsEditLockedCount = 0;
712 m_multiPointsIgnoredCount = 0;
715 if (m_points.size() > 1) {
716 for (
int i = 0; i < m_points.size(); i++) {
717 QString
id = m_points.at(i)->text();
718 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
719 m_multiPointsMeasureCount += pt->GetNumMeasures();
720 if (pt->IsEditLocked()) {
721 m_multiPointsEditLockedCount++;
723 if (pt->IsIgnored()) {
724 m_multiPointsIgnoredCount++;
727 m_multiPointsConstraintedCount++;
730 m_multiPointsFixedCount++;
733 m_multiPointsFreeCount++;
736 if (m_multiPointsEditLockedCount > 0) {
737 m_aprioriDialog->setDisabled(
true);
738 QString msg =
"There is an EditLocked point selected. To continue, unselect the";
739 msg = msg +
" Editlocked point.";
740 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
743 if (m_multiPointsFixedCount > 0 || m_multiPointsFreeCount > 0) {
744 m_aprioriDialog->setDisabled(
true);
745 QString msg =
"Sigmas can only be set on Constrained points. Use Filters to filter by";
746 msg = msg +
" Constrained points.";
747 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
750 m_pointGroup->setDisabled(
true);
751 m_currentSigmaButton->setDisabled(
true);
754 else if (m_points.size() == 1) {
755 QString
id = m_points.at(0)->text();
756 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
757 if (pt->IsEditLocked()) {
758 m_aprioriDialog->setDisabled(
true);
759 QString msg =
"This control point is edit locked. The Apriori latitude, longitude and ";
760 msg +=
"radius cannot be updated. You must first unlock the point by clicking the ";
761 msg +=
"check box above labeled \"Edit Lock Point\".";
762 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
766 m_sigmaWarningLabel->setText(
"Change point type to Constrained to enter constraints (Apriori Sigmas).");
767 m_sigmaGroup->setDisabled(
true);
770 m_aprioriDialog->setEnabled(
true);
771 m_sigmaGroup->setEnabled(
true);
772 m_pointGroup->setEnabled(
true);
773 m_currentSigmaButton->setEnabled(
true);
788 m_latLineEdit->clear();
789 m_lonLineEdit->clear();
790 m_radiusLineEdit->clear();
791 m_latSigmaLineEdit->clear();
792 m_lonSigmaLineEdit->clear();
793 m_radiusSigmaLineEdit->clear();
805 if (m_points.size() < 0) {
806 m_pointIDLabel->setText(
"Point ID: ");
807 m_pointTypeLabel->setText(
"Point Type: ");
808 m_pointMeasureNumber->setText(
"Number of Measures: ");
809 m_editLockedBoolLabel->setText(
"EditLocked: ");
810 m_ignoredBoolLabel->setText(
"Ignored: ");
813 else if (m_points.size() == 1) {
814 QString
id = m_points.at(0)->text();
815 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
816 m_pointIDLabel->setText(
"Point ID: " + QString(
id));
818 m_pointMeasureNumber->setText(
"Number of Measures: " + QString::number(pt->GetNumMeasures()));
820 if (pt->IsEditLocked()) {
821 m_editLockedBoolLabel->setText(
"EditLocked: True");
824 m_editLockedBoolLabel->setText(
"EditLocked: False");
826 if (pt->IsIgnored()) {
827 m_ignoredBoolLabel->setText(
"Ignored: True");
830 m_ignoredBoolLabel->setText(
"Ignored: False");
834 else if (m_points.size() > 1) {
835 m_pointsCount->setText(
"Number of Points: " + QString::number(m_points.size()));
836 m_pointsMeasuresCount->setText(
"Total Number of Measures: " +
837 QString::number(m_multiPointsMeasureCount));
838 m_constrainedPointsCount->setText(
"Number of Constrained Points: " +
839 QString::number(m_multiPointsConstraintedCount));
840 m_fixedPointsCount->setText(
"Number of Fixed Points: " +
841 QString::number(m_multiPointsFixedCount));
842 m_freePointsCount->setText(
"Number of Free Points: " +
843 QString::number(m_multiPointsFreeCount));
844 m_pointsEditLockedCount->setText(
"Number of Edit Locked Points: " +
845 QString::number(m_multiPointsEditLockedCount));
846 m_pointsIgnoredCount->setText(
"Number of Ignored Points: " +
847 QString::number(m_multiPointsIgnoredCount));
878 if (m_points.size() == 0) {
879 QString msg =
"There are no Points selected. Please select a Point.";
880 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
884 double latSigma =
Null;
886 double lonSigma =
Null;
888 double radiusSigma =
Null;
889 double radius =
Null;
890 bool lineEditModified =
false;
893 if (m_latLineEdit->text() !=
"") {
894 lat = m_latLineEdit->text().toDouble();
895 if (lat > 90 || lat < -90) {
896 QString msg =
"Invalid latitude value. Please enter a latitude value between -90 and 90.";
897 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
900 if (m_latLineEdit->isModified()) {
901 lineEditModified =
true;
904 if (m_lonLineEdit->text() !=
"") {
905 lon = m_lonLineEdit->text().toDouble();
906 if (m_lonLineEdit->isModified()) {
907 lineEditModified =
true;
910 if (m_radiusLineEdit->text() !=
"") {
911 radius = m_radiusLineEdit->text().toDouble();
912 if (m_radiusLineEdit->isModified()) {
913 lineEditModified =
true;
916 if (m_latSigmaLineEdit->text() !=
"") {
917 latSigma = m_latSigmaLineEdit->text().toDouble();
919 if (m_lonSigmaLineEdit->text() !=
"") {
920 lonSigma = m_lonSigmaLineEdit->text().toDouble();
922 if (m_radiusSigmaLineEdit->text() !=
"") {
923 radiusSigma = m_radiusSigmaLineEdit->text().toDouble();
929 if (lineEditModified) {
930 m_aprioriSource = (Source) USER;
933 for (
int i = 0; i < m_points.size(); i++) {
934 QString
id = m_points.at(i)->text();
935 ControlPoint *pt = m_qnetTool->controlNet()->GetPoint(
id);
936 if (m_points.size() == 1) {
941 if (m_aprioriSource == (Source) REFERENCE) {
944 else if (m_aprioriSource == (Source) AVERAGE) {
948 else if (m_aprioriSource == (Source) USER) {
953 if (!pt->HasAprioriCoordinates()) {
954 QString msg =
"Point [" +
id +
"] does not have an Apriori coordinate. "
955 "Make sure to save the ground source measurement then the Point before "
956 "setting the sigmas. ";
957 if (m_points.size() > 1) {
958 msg +=
"The sigmas for all of the selected points will not be set.";
961 msg +=
"The sigmas for this point will not be set.";
963 QMessageBox::warning((
QWidget *)parent(),
"Warning", msg);
971 vector<Distance> targetRadii = m_qnetTool->controlNet()->
GetTargetRadii();
986 emit pointChanged(
id);
990 QString message =
"Error setting sigmas. \n";
992 QMessageBox::critical((
QWidget *)parent(),
"Error",message);
993 QApplication::restoreOverrideCursor();
995 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 fillReferenceAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the reference measure values.
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.
std::vector< Distance > GetTargetRadii()
Get the target radii.
void setVisiblity()
Shows the dialog box.
double degrees() const
Get the angle in units of Degrees.
void resetInfoLabels()
Resets and populates the information stack labels.
Distance GetLocalRadius() const
Return the radius of the surface point.
double meters() const
Get the displacement in meters.
QString GetPointTypeString() const
Obtain a string representation of the PointType.
void fillAverageAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the average measure values.
This class is designed to encapsulate the concept of a Latitude.
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.
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
Distance measurement, usually in meters.
void fillSigmaLineEdits()
This is the base for a new ticket that allows for a ground source button.
void createSetAprioriDialog(QWidget *parent)
Creates the dialog box for the set apriori tool.
Longitude GetLongitude() const
Return the body-fixed longitude for the surface point.
void SetRadii(const Distance &majorRadius, const Distance &minorRadius, const Distance &polarRadius)
Reset the radii of the surface body of the surface point.
Distance GetLonSigmaDistance() const
Return the longiitude sigma in meters.
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.
double meters() const
Get the distance in meters.
Degrees are generally considered more human readable, 0-360 is one circle, however most math does not...
void setPoints(QList< QListWidgetItem * > selectedPoints)
Set control points in the dialog.
Latitude GetLatitude() const
Return the body-fixed latitude for the surface point.
#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.
void checkPointInfoDisable(QList< QListWidgetItem * > selectedPoints)
Enables/Disables features based on if there are multiple points selected or not.
SurfacePoint GetSurfacePoint() const
Returns the surface point (most efficient accessor).
void setInfoStack(QList< QListWidgetItem * > selectedPoints)
Switches what information is visible based on how many points are selected.
void Coordinate(double p[3]) const
Returns the x,y,z of the surface intersection in BodyFixed km.
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.
void fillCurrentAprioriLineEdits()
Populates the apriori lat/lon/radius line edits with the current values.
Displacement is a signed length, usually in meters.
QString toString() const
Returns a string representation of this exception.
Distance GetLatSigmaDistance() const
Return the latitude sigma in meters.
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
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 meters) 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.
const ControlMeasure * GetMeasure(QString serialNumber) const
Get a control measure based on its cube's serial number.
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.