Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

Isis Developer Reference
BundleSettings.h
Go to the documentation of this file.
1#ifndef BundleSettings_h
2#define BundleSettings_h
3
9
10/* SPDX-License-Identifier: CC0-1.0 */
11
12// Qt library
13#include <QList>
14#include <QPair>
15#include <QSharedPointer>
16#include <QString>
17#include <QStringRef>
18#include <QXmlStreamReader>
19
20
21
22// ISIS library
23#include "BundleTargetBody.h"
26#include "SpecialPixel.h"
27#include "SurfacePoint.h"
28
29class QDataStream;
30class QUuid;
31class QXmlStreamWriter;
32
33
34using namespace Isis;
35
36namespace Isis {
37 class FileName;
38 class Project;
39 class PvlObject;
40
126 public:
127
128 //=====================================================================//
129 //================ constructors, destructor, operators ================//
130 //=====================================================================//
132 BundleSettings(const BundleSettings &other);
135
136 void setValidateNetwork(bool validate);
137 bool validateNetwork() const;
138
139
140 //=====================================================================//
141 //============================ Solve options ==========================//
142 //=====================================================================//
143
144 // mutators
145 void setSolveOptions(bool solveObservationMode = false,
146 bool updateCubeLabel = false,
147 bool errorPropagation = false,
148 bool solveRadius = false,
151 double globalPointCoord1AprioriSigma = Isis::Null,
152 double globalPointCoord2AprioriSigma = Isis::Null,
153 double globalPointCoord3AprioriSigma = Isis::Null);
155 double multiplier = 1.0);
157 void setCreateInverseMatrix(bool createMatrix);
158
159 // accessors
162 bool createInverseMatrix() const;
163 bool solveObservationMode() const;
164 bool solveRadius() const;
165 bool updateCubeLabel() const;
166 bool errorPropagation() const;
167 bool outlierRejection() const;
168 double outlierRejectionMultiplier() const;
169// These sigmas are either for planetocentric lat/lon/radius or body-fixed x/y/z
170 double globalPointCoord1AprioriSigma() const;
171 double globalPointCoord2AprioriSigma() const;
172 double globalPointCoord3AprioriSigma() const;
173
174 int numberSolveSettings() const;
178
179
180 //=====================================================================//
181 //======================- Convergence Criteria ========================//
182 //=====================================================================//
183
193
194
195 static ConvergenceCriteria stringToConvergenceCriteria(QString criteria);
196 static QString convergenceCriteriaToString(ConvergenceCriteria criteria);
197 void setConvergenceCriteria(ConvergenceCriteria criteria,
198 double threshold,
199 int maximumIterations);
200 ConvergenceCriteria convergenceCriteria() const;
201 double convergenceCriteriaThreshold() const;
203
204 //=====================================================================//
205 //================ Parameter Uncertainties (Weighting) ================//
206 //=====================================================================//
207 // mutators
208// void setGlobalLatitudeAprioriSigma(double sigma);
209// void setGlobalLongitudeAprioriSigma(double sigma);
210// void setGlobalRadiiAprioriSigma(double sigma);
211
212
213 //=====================================================================//
214 //=============== Maximum Likelihood Estimation Options ===============//
215 //=====================================================================//
216
235
236
238 double cQuantile);
241
242 //=====================================================================//
243 //========================= Self Calibration ==========================//
244 //=====================================================================//
245
246
247 //=====================================================================//
248 //============================== Target Body ==========================//
249 //=====================================================================//
250 // Note targeBody information is not currently serialized.
253// bool solveTargetBodyPolePosition() const;
254// static TargetRadiiSolveMethod stringToTargetRadiiOption(QString option);
255// static QString targetRadiiOptionToString(TargetRadiiSolveMethod targetRadiiSolveMethod);
256 int numberTargetBodyParameters() const;
257 bool solveTargetBody() const;
258 bool solvePoleRA() const;
259 bool solvePoleRAVelocity() const;
260 bool solvePoleDec() const;
261 bool solvePoleDecVelocity() const;
262 bool solvePM() const;
263 bool solvePMVelocity() const;
264 bool solvePMAcceleration() const;
265 bool solveTriaxialRadii() const;
266 bool solveMeanRadius() const;
267// void BundleSettings::setTargetBodySolveOptions(bool solveTargetBodyPolePosition,
268
269
270 //=====================================================================//
271 //================== Output Options ??? (from Jigsaw only)=============//
272 //=====================================================================//
274 void setSCPVLFilename(QString SCParamFilename);
275 QString outputFilePrefix() const;
276 void setCubeList(QString fileName);
277 QString cubeList() const;
278 QString SCPVLFilename() const;
279
280 void save(QXmlStreamWriter &stream, const Project *project) const;
281
282 void readBundleSettings(QXmlStreamReader *xmlReader);
283
284 private:
285 void init();
286
292 struct MaximumLikelihoodModelTableRecord {
293 unsigned int indexFieldValue;
294 QString nameFieldValue;
295 double quantileFieldValue;
296 };
297
298 bool m_validateNetwork;
299 QString m_cubeList;
300 bool m_solveObservationMode;
301 bool m_solveRadius;
302 bool m_updateCubeLabel;
303 bool m_errorPropagation;
304 bool m_createInverseMatrix;
305 bool m_outlierRejection;
307 double m_outlierRejectionMultiplier;
309
310 // Parameter Uncertainties (Weighting)
311 double m_globalPointCoord1AprioriSigma;
312 double m_globalPointCoord2AprioriSigma;
313 double m_globalPointCoord3AprioriSigma;
314
315 // QList of observation solve settings
316 QList<BundleObservationSolveSettings> m_observationSolveSettings;
317
318 // Convergence Criteria
319 ConvergenceCriteria m_convergenceCriteria;
322 double m_convergenceCriteriaThreshold;
324 int m_convergenceCriteriaMaximumIterations;
327
328 // Maximum Likelihood Estimation Options
337
338 // Self Calibration
339
340 // Target Body
341 bool m_solveTargetBody;
342 BundleTargetBodyQsp m_bundleTargetBody;
344 // Control Points
345 SurfacePoint::CoordinateType m_cpCoordTypeReports;
347 SurfacePoint::CoordinateType m_cpCoordTypeBundle;
349 // Output Options
350 QString m_outputFilePrefix;
353 };
354 // typedefs
357
358
359};
360
362
363#endif
Q_DECLARE_METATYPE(Isis::BundleSettingsQsp)
This class is used to modify and manage solve settings for 1 to many BundleObservations.
Definition BundleObservationSolveSettings.h:81
double globalPointCoord2AprioriSigma() const
Retrieves the global a priori sigma for 2nd coordinate of points for this bundle.
Definition BundleSettings.cpp:471
bool validateNetwork() const
This method is used to determine whether to validate the network before the bundle adjustment.
Definition BundleSettings.cpp:198
int convergenceCriteriaMaximumIterations() const
Retrieves the maximum number of iterations allowed to solve the bundle adjustment.
Definition BundleSettings.cpp:659
MaximumLikelihoodModel
This enum defines the options for maximum likelihood estimation.
Definition BundleSettings.h:220
@ Chen
Use a Chen maximum likelihood model.
Definition BundleSettings.h:231
@ Welsch
Use a Welsch maximum likelihood model.
Definition BundleSettings.h:228
@ NoMaximumLikelihoodEstimator
Do not use a maximum likelihood model.
Definition BundleSettings.h:221
@ Huber
Use a Huber maximum likelihood model.
Definition BundleSettings.h:222
@ ModifiedHuber
Use a modified Huber maximum likelihood model.
Definition BundleSettings.h:225
BundleSettings & operator=(const BundleSettings &other)
Assignment operator to allow proper copying of the 'other' BundleSettings object to this one.
Definition BundleSettings.cpp:144
double globalPointCoord3AprioriSigma() const
Retrieves the global a priori sigma 3rd coordinate of points for this bundle.
Definition BundleSettings.cpp:481
void addMaximumLikelihoodEstimatorModel(MaximumLikelihoodWFunctions::Model model, double cQuantile)
Add a maximum likelihood estimator (MLE) model to the bundle adjustment.
Definition BundleSettings.cpp:702
BundleSettings()
Constructs a BundleSettings object.
Definition BundleSettings.cpp:38
SurfacePoint::CoordinateType controlPointCoordTypeBundle() const
Indicates the control point coordinate type for the actual bundle adjust.
Definition BundleSettings.cpp:350
bool errorPropagation() const
This method is used to determine whether this bundle adjustment will perform error propagation.
Definition BundleSettings.cpp:423
void setConvergenceCriteria(ConvergenceCriteria criteria, double threshold, int maximumIterations)
Set the convergence criteria options for the bundle adjustment.
Definition BundleSettings.cpp:620
bool solvePMVelocity() const
This method is used to determine whether the bundle adjustment will solve for target body prime merid...
Definition BundleSettings.cpp:888
void save(QXmlStreamWriter &stream, const Project *project) const
This method is used to write a BundleSettings object in an XML format.
Definition BundleSettings.cpp:1025
ConvergenceCriteria
This enum defines the options for the bundle adjustment's convergence.
Definition BundleSettings.h:187
@ Sigma0
The value of sigma0 will be used to determine that the bundle adjustment has converged.
Definition BundleSettings.h:188
@ ParameterCorrections
All parameter corrections will be used to determine that the bundle adjustment has converged.
Definition BundleSettings.h:190
BundleTargetBodyQsp bundleTargetBody() const
Retrieves a pointer to target body information for the bundle adjustment.
Definition BundleSettings.cpp:754
void setCreateInverseMatrix(bool createMatrix)
Turn the creation of the inverse correlation matrix file on or off.
Definition BundleSettings.cpp:441
bool solveMeanRadius() const
This method is used to determine whether the bundle adjustment will solve for target body mean radius...
Definition BundleSettings.cpp:936
bool solveRadius() const
This method is used to determine whether this bundle adjustment will solve for radius.
Definition BundleSettings.cpp:400
bool solveTriaxialRadii() const
This method is used to determine whether the bundle adjustment will solve for target body triaxial ra...
Definition BundleSettings.cpp:920
bool solvePMAcceleration() const
This method is used to determine whether the bundle adjustment will solve for target body prime merid...
Definition BundleSettings.cpp:904
QList< BundleObservationSolveSettings > observationSolveSettings() const
Retrieves solve settings for the observation corresponding to the given index.
Definition BundleSettings.cpp:551
void setBundleTargetBody(BundleTargetBodyQsp bundleTargetBody)
Sets the target body for the bundle adjustment.
Definition BundleSettings.cpp:743
int numberTargetBodyParameters() const
This method is used to determine whether the bundle adjustment will solve for target body pole positi...
Definition BundleSettings.cpp:776
QString outputFilePrefix() const
Retrieve the output file prefix.
Definition BundleSettings.cpp:1011
double globalPointCoord1AprioriSigma() const
Retrieves global a priori sigma for 1st coordinate of points for this bundle.
Definition BundleSettings.cpp:461
bool updateCubeLabel() const
This method is used to determine whether this bundle adjustment will update the cube labels.
Definition BundleSettings.cpp:412
bool outlierRejection() const
This method is used to determine whether outlier rejection will be performed on this bundle adjustmen...
Definition BundleSettings.cpp:378
void setOutputFilePrefix(QString outputFilePrefix)
Set the output file prefix for the bundle adjustment.
Definition BundleSettings.cpp:997
bool solvePoleRA() const
This method is used to determine whether the bundle adjustment will solve for target body pole right ...
Definition BundleSettings.cpp:808
bool solvePoleDecVelocity() const
This method is used to determine whether the bundle adjustment will solve for target body pole declin...
Definition BundleSettings.cpp:856
void setSCPVLFilename(QString SCParamFilename)
static QString convergenceCriteriaToString(ConvergenceCriteria criteria)
Converts the given BundleSettings::ConvergenceCriteria enumeration to a string.
Definition BundleSettings.cpp:600
void setValidateNetwork(bool validate)
Sets the internal flag to indicate whether to validate the network before the bundle adjustment.
Definition BundleSettings.cpp:183
QString SCPVLFilename() const
~BundleSettings()
Destroys the BundleSettings object.
Definition BundleSettings.cpp:128
static ConvergenceCriteria stringToConvergenceCriteria(QString criteria)
Converts the given string value to a BundleSettings::ConvergenceCriteria enumeration.
Definition BundleSettings.cpp:576
bool createInverseMatrix() const
Indicates if the settings will allow the inverse correlation matrix to be created.
Definition BundleSettings.cpp:366
bool solvePoleRAVelocity() const
This method is used to determine whether the bundle adjustment will solve for target body pole right ...
Definition BundleSettings.cpp:824
void readBundleSettings(QXmlStreamReader *xmlReader)
Definition BundleSettings.cpp:1111
QString cubeList() const
BundleSettings::cubeList.
Definition BundleSettings.cpp:219
void setOutlierRejection(bool outlierRejection, double multiplier=1.0)
Set the outlier rejection options for the bundle adjustment.
Definition BundleSettings.cpp:304
ConvergenceCriteria convergenceCriteria() const
Retrieves the convergence criteria to be used to solve the bundle adjustment.
Definition BundleSettings.cpp:635
QList< QPair< MaximumLikelihoodWFunctions::Model, double > > maximumLikelihoodEstimatorModels() const
Retrieves the list of maximum likelihood estimator (MLE) models with their corresponding C-Quantiles.
Definition BundleSettings.cpp:724
bool solvePoleDec() const
This method is used to determine whether the bundle adjustment will solve for target body pole declin...
Definition BundleSettings.cpp:840
int numberSolveSettings() const
Retrieves the number of observation solve settings.
Definition BundleSettings.cpp:492
void setSolveOptions(bool solveObservationMode=false, bool updateCubeLabel=false, bool errorPropagation=false, bool solveRadius=false, SurfacePoint::CoordinateType coordTypeBundle=SurfacePoint::Latitudinal, SurfacePoint::CoordinateType coordTypeReports=SurfacePoint::Latitudinal, double globalPointCoord1AprioriSigma=Isis::Null, double globalPointCoord2AprioriSigma=Isis::Null, double globalPointCoord3AprioriSigma=Isis::Null)
Set the solve options for the bundle adjustment.
Definition BundleSettings.cpp:244
SurfacePoint::CoordinateType controlPointCoordTypeReports() const
Indicates the control point coordinate type for reports.
Definition BundleSettings.cpp:336
bool solvePM() const
This method is used to determine whether the bundle adjustment will solve for target body prime merid...
Definition BundleSettings.cpp:872
void setCubeList(QString fileName)
BundleSettings::setCubeList.
Definition BundleSettings.cpp:209
double convergenceCriteriaThreshold() const
Retrieves the convergence threshold to be used to solve the bundle adjustment.
Definition BundleSettings.cpp:646
void setObservationSolveOptions(QList< BundleObservationSolveSettings > obsSolveSettingsList)
Add the list of solve options for each observation.
Definition BundleSettings.cpp:322
bool solveObservationMode() const
This method is used to determine whether this bundle adjustment will solve for observation mode.
Definition BundleSettings.cpp:389
bool solveTargetBody() const
This method is used to determine whether the bundle adjustment will solve for target body.
Definition BundleSettings.cpp:790
double outlierRejectionMultiplier() const
Retrieves the outlier rejection multiplier for the bundle adjustment.
Definition BundleSettings.cpp:451
Model
The supported maximum likelihood estimation models.
Definition MaximumLikelihoodWFunctions.h:56
The main project for ipce.
Definition Project.h:287
CoordinateType
Defines the coordinate typ, units, and coordinate index for some of the output methods.
Definition SurfacePoint.h:139
@ Latitudinal
Planetocentric latitudinal (lat/lon/rad) coordinates.
Definition SurfacePoint.h:140
This is free and unencumbered software released into the public domain.
Definition BoxcarCachingAlgorithm.h:13
Definition JigsawWorkOrder.h:28
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
QSharedPointer< BundleSettings > BundleSettingsQsp
Definition for a BundleSettingsQsp, a shared pointer to a BundleSettings object.
Definition BundleSettings.h:356
QSharedPointer< BundleTargetBody > BundleTargetBodyQsp
Definition for BundleTargetBodyQsp, a QSharedPointer to a BundleTargetBody.
Definition BundleTargetBody.h:187
bool validate(const NaifVertex &v)
Verifies that the given NaifVector or NaifVertex is 3 dimensional.
Definition NaifDskApi.cpp:28