Isis 3 Developer Reference
BundleObservationSolveSettings.h
Go to the documentation of this file.
1 #ifndef BundleObservationSolveSettings_h
2 #define BundleObservationSolveSettings_h
3 
26 #include <QList>
27 #include <QSet>
28 #include <QString>
29 
30 #include "SpicePosition.h"
31 #include "SpiceRotation.h"
32 #include "XmlStackedHandler.h"
33 
34 class QDataStream;
35 class QUuid;
36 class QXmlStreamWriter;
37 
38 namespace Isis {
39  class FileName;
40  class Project; // TODO: does xml stuff need project???
41  class PvlObject;
42  class XmlStackedHandlerReader;
92 
93  public:
96  XmlStackedHandlerReader *xmlReader); // TODO: does xml stuff need project???
98  Project *project,
99  XmlStackedHandlerReader *xmlReader); // TODO: does xml stuff need project???
103  void initialize();
104 
105  void setInstrumentId(QString instrumentId);
106  QString instrumentId() const;
107  void addObservationNumber(QString observationNumber);
108  bool removeObservationNumber(QString observationNumber);
110 
111 
112 
123  };
124 
128  bool solveTwist,
129  int ckDegree = 2,
130  int ckSolveDegree = 2,
131  bool solvePolynomialOverExisting = false,
132  double anglesAprioriSigma = -1.0,
133  double angularVelocityAprioriSigma = -1.0,
134  double angularAccelerationAprioriSigma = -1.0,
135  QList<double> * additionalPointingSigmas=nullptr);
137  bool solveTwist() const;
138  int ckDegree() const;
139  int ckSolveDegree() const;
141  bool solvePolyOverPointing() const;
144 
145 
146 
156  };
157 
161  int spkDegree = 2,
162  int spkSolveDegree = 2,
163  bool positionOverHermite = false,
164  double positionAprioriSigma = -1.0,
165  double velocityAprioriSigma = -1.0,
166  double accelerationAprioriSigma = -1.0,
167  QList<double> * additionalPositionSigmas=nullptr);
169  int spkDegree() const;
170  int spkSolveDegree() const;
172  bool solvePositionOverHermite() const;
175 
176  // TODO: does xml stuff need project???
177  void save(QXmlStreamWriter &stream, const Project *project) const;
178 
179 
180  private:
188  class XmlHandler : public XmlStackedHandler {
189  public:
190  // TODO: does xml stuff need project???
191  XmlHandler(BundleObservationSolveSettings *settings, Project *project);
192  ~XmlHandler();
193 
194  virtual bool startElement(const QString &namespaceURI, const QString &localName,
195  const QString &qName, const QXmlAttributes &atts);
196  virtual bool characters(const QString &ch);
197  virtual bool endElement(const QString &namespaceURI, const QString &localName,
198  const QString &qName);
199 
200  private:
201  Q_DISABLE_COPY(XmlHandler);
202 
203  BundleObservationSolveSettings *m_xmlHandlerObservationSettings;
204  Project *m_xmlHandlerProject; // TODO: does xml stuff need project???
205  QString m_xmlHandlerCharacters;
206  QStringList m_xmlHandlerAprioriSigmas;
207  };
208 
213  QUuid *m_id;
214  QString m_instrumentId;
215  QSet<QString> m_observationNumbers;
216 
217  // pointing related parameters
219  InstrumentPointingSolveOption m_instrumentPointingSolveOption;
220  int m_numberCamAngleCoefSolved;
222  int m_ckDegree;
224  int m_ckSolveDegree;
226  bool m_solveTwist;
227  bool m_solvePointingPolynomialOverExisting;
229  QList<double> m_anglesAprioriSigma;
234  m_pointingInterpolationType;
243  // position related parameters
245  InstrumentPositionSolveOption m_instrumentPositionSolveOption;
246  int m_numberCamPosCoefSolved;
248  int m_spkDegree;
250  int m_spkSolveDegree;
252  bool m_solvePositionOverHermiteSpline;
254  QList<double> m_positionAprioriSigma;
259  m_positionInterpolationType;
269  };
273 };
274 
275 #endif // BundleObservationSolveSettings_h
static InstrumentPointingSolveOption stringToInstrumentPointingSolveOption(QString option)
Translates a QString InstrumentPointingSolveOption to its enumerated value.
Definition: BundleObservationSolveSettings.cpp:301
The main project for ipce.
Definition: Project.h:289
File name manipulation and expansion.
Definition: FileName.h:116
QSet< QString > observationNumbers() const
Returns a list of observation numbers associated with these solve settings.
Definition: BundleObservationSolveSettings.cpp:280
int numberCameraPositionCoefficientsSolved() const
Accesses the number of camera position coefficients in the solution.
Definition: BundleObservationSolveSettings.cpp:749
InstrumentPositionSolveOption instrumentPositionSolveOption() const
Accesses the instrument position solve option.
Definition: BundleObservationSolveSettings.cpp:718
QSharedPointer< BundleObservationSolveSettings > BundleObservationSolveSettingsQsp
Definition for BundleObservationSolveSettingsQsp, a QSharedPointer to a BundleObservationSolveSetting...
Definition: BundleObservationSolveSettings.h:272
bool removeObservationNumber(QString observationNumber)
Removes an observation number from this solve settings.
Definition: BundleObservationSolveSettings.cpp:270
Solve for instrument positions only.
Definition: BundleObservationSolveSettings.h:150
bool solvePositionOverHermite() const
Whether or not the polynomial for solving will be fit over an existing Hermite spline.
Definition: BundleObservationSolveSettings.cpp:760
SpicePosition::Source positionInterpolationType() const
Accesses the SpicePosition interpolation type for the spacecraft position.
Definition: BundleObservationSolveSettings.cpp:780
void initialize()
Initializes the default state of this BundleObservationSolveSettings.
Definition: BundleObservationSolveSettings.cpp:193
Solve for pointing angles, their velocities and their accelerations.
Definition: BundleObservationSolveSettings.h:119
BundleObservationSolveSettings()
Constructor with default parameter initializations.
Definition: BundleObservationSolveSettings.cpp:29
int ckDegree() const
Accesses the degree of polynomial fit to original camera angles (ckDegree).
Definition: BundleObservationSolveSettings.cpp:488
InstrumentPointingSolveOption instrumentPointingSolveOption() const
Accesses the instrument pointing solve option.
Definition: BundleObservationSolveSettings.cpp:468
Solve for all coefficients in the polynomials fit to the instrument positions.
Definition: BundleObservationSolveSettings.h:154
int ckSolveDegree() const
Accesses the degree of the camera angles polynomial being fit to in the bundle adjustment (ckSolveDeg...
Definition: BundleObservationSolveSettings.cpp:499
int spkSolveDegree() const
Accesses the degree of thecamera position polynomial being fit to in the bundle adjustment (spkSolveD...
Definition: BundleObservationSolveSettings.cpp:739
void addObservationNumber(QString observationNumber)
Associates an observation number with these solve settings.
Definition: BundleObservationSolveSettings.cpp:257
Solve for instrument positions and velocities.
Definition: BundleObservationSolveSettings.h:151
void save(QXmlStreamWriter &stream, const Project *project) const
Saves this BundleObservationSolveSettings to an xml stream.
Definition: BundleObservationSolveSettings.cpp:799
static QString instrumentPointingSolveOptionToString(InstrumentPointingSolveOption option)
Tranlsates an enumerated InstrumentPointingSolveOption value to its string representation.
Definition: BundleObservationSolveSettings.cpp:350
bool solvePolyOverPointing() const
Whether or not the solve polynomial will be fit over the existing pointing polynomial.
Definition: BundleObservationSolveSettings.cpp:520
XML Handler that parses XMLs in a stack-oriented way.
Definition: XmlStackedHandler.h:112
Source
The rotation can come from one of 3 places for an Isis cube.
Definition: SpiceRotation.h:258
void setInstrumentPositionSettings(InstrumentPositionSolveOption option, int spkDegree=2, int spkSolveDegree=2, bool positionOverHermite=false, double positionAprioriSigma=-1.0, double velocityAprioriSigma=-1.0, double accelerationAprioriSigma=-1.0, QList< double > *additionalPositionSigmas=nullptr)
Sets the instrument pointing settings.
Definition: BundleObservationSolveSettings.cpp:635
void setInstrumentId(QString instrumentId)
Sets the instrument id for this observation.
Definition: BundleObservationSolveSettings.cpp:235
QList< double > aprioriPositionSigmas() const
Accesses the a priori position sigmas.
Definition: BundleObservationSolveSettings.cpp:770
This class is used to modify and manage solve settings for 1 to many BundleObservations.
Definition: BundleObservationSolveSettings.h:91
Solve for instrument positions, velocities, and accelerations.
Definition: BundleObservationSolveSettings.h:152
Solve for pointing angles and their angular velocities.
Definition: BundleObservationSolveSettings.h:118
Solve for none of the position factors.
Definition: BundleObservationSolveSettings.h:149
void setInstrumentPointingSettings(InstrumentPointingSolveOption option, bool solveTwist, int ckDegree=2, int ckSolveDegree=2, bool solvePolynomialOverExisting=false, double anglesAprioriSigma=-1.0, double angularVelocityAprioriSigma=-1.0, double angularAccelerationAprioriSigma=-1.0, QList< double > *additionalPointingSigmas=nullptr)
Sets the instrument pointing settings.
Definition: BundleObservationSolveSettings.cpp:376
~BundleObservationSolveSettings()
Destructor.
Definition: BundleObservationSolveSettings.cpp:138
int numberCameraAngleCoefficientsSolved() const
Accesses the number of camera angle coefficients in the solution.
Definition: BundleObservationSolveSettings.cpp:509
InstrumentPositionSolveOption
Options for how to solve for instrument position.
Definition: BundleObservationSolveSettings.h:148
static InstrumentPositionSolveOption stringToInstrumentPositionSolveOption(QString option)
Translates a QString InstrumentPositionSolveOption to its enumerated value.
Definition: BundleObservationSolveSettings.cpp:561
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
Solve for all coefficients in the polynomials fit to the pointing angles.
Definition: BundleObservationSolveSettings.h:121
InstrumentPointingSolveOption
Options for how to solve for instrument pointing.
Definition: BundleObservationSolveSettings.h:114
QString instrumentId() const
Accesses the instrument id for this observation.
Definition: BundleObservationSolveSettings.cpp:245
Solve for none of the pointing factors.
Definition: BundleObservationSolveSettings.h:115
static QString instrumentPositionSolveOptionToString(InstrumentPositionSolveOption option)
Translates an enumerated InstrumentPositionSolveOption to its string representation.
Definition: BundleObservationSolveSettings.cpp:610
SpiceRotation::Source pointingInterpolationType() const
Accesses the SpiceRotation interpolation type for the instrument pointing.
Definition: BundleObservationSolveSettings.cpp:540
Manage a stack of content handlers for reading XML files.
Definition: XmlStackedHandlerReader.h:25
int spkDegree() const
Accesses the degree of the polynomial fit to the original camera position (spkDegree).
Definition: BundleObservationSolveSettings.cpp:728
Solve for pointing angles: right ascension, declination and, optionally, twist.
Definition: BundleObservationSolveSettings.h:116
bool solveTwist() const
Accesses the flag for solving for twist.
Definition: BundleObservationSolveSettings.cpp:478
QList< double > aprioriPointingSigmas() const
Accesses the a priori pointing sigmas.
Definition: BundleObservationSolveSettings.cpp:530
Source
This enum indicates the status of the object.
Definition: SpicePosition.h:190
BundleObservationSolveSettings & operator=(const BundleObservationSolveSettings &src)
Assigns the state of another BundleObservationSolveSettings to this one.
Definition: BundleObservationSolveSettings.cpp:155