Isis 3 Programmer 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???
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;
216 
217  // pointing related parameters
243  // position related parameters
269  };
273 };
274 
275 #endif // BundleObservationSolveSettings_h
static InstrumentPointingSolveOption stringToInstrumentPointingSolveOption(QString option)
Translates a QString InstrumentPointingSolveOption to its enumerated value.
The main project for ipce.
Definition: Project.h:289
int m_ckSolveDegree
Degree of the camera angles polynomial being fit to in the bundle adjustment.
File name manipulation and expansion.
Definition: FileName.h:116
QSet< QString > observationNumbers() const
Returns a list of observation numbers associated with these solve settings.
int numberCameraPositionCoefficientsSolved() const
Accesses the number of camera position coefficients in the solution.
InstrumentPositionSolveOption instrumentPositionSolveOption() const
Accesses the instrument position solve option.
QSharedPointer< BundleObservationSolveSettings > BundleObservationSolveSettingsQsp
Definition for BundleObservationSolveSettingsQsp, a QSharedPointer to a BundleObservationSolveSetting...
bool removeObservationNumber(QString observationNumber)
Removes an observation number from this solve settings.
bool m_solvePositionOverHermiteSpline
The polynomial will be fit over an existing Hermite spline.
XmlHandler(BundleObservationSolveSettings *settings, Project *project)
Constructs an XmlHandler for serialization.
bool solvePositionOverHermite() const
Whether or not the polynomial for solving will be fit over an existing Hermite spline.
SpicePosition::Source positionInterpolationType() const
Accesses the SpicePosition interpolation type for the spacecraft position.
void initialize()
Initializes the default state of this BundleObservationSolveSettings.
Solve for pointing angles, their velocities and their accelerations.
QString m_instrumentId
The spacecraft instrument id for this observation.
int m_spkSolveDegree
Degree of the camera position polynomial being fit to in the bundle adjustment.
int m_numberCamAngleCoefSolved
The number of camera angle coefficients in solution.
BundleObservationSolveSettings()
Constructor with default parameter initializations.
int ckDegree() const
Accesses the degree of polynomial fit to original camera angles (ckDegree).
InstrumentPointingSolveOption instrumentPointingSolveOption() const
Accesses the instrument pointing solve option.
QList< double > m_positionAprioriSigma
The instrument pointing a priori sigmas.
Solve for all coefficients in the polynomials fit to the instrument positions.
SpicePosition::Source m_positionInterpolationType
SpicePosition interpolation types.
int ckSolveDegree() const
Accesses the degree of the camera angles polynomial being fit to in the bundle adjustment (ckSolveDeg...
int spkSolveDegree() const
Accesses the degree of thecamera position polynomial being fit to in the bundle adjustment (spkSolveD...
void addObservationNumber(QString observationNumber)
Associates an observation number with these solve settings.
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
bool m_solvePointingPolynomialOverExisting
The polynomial will be fit over the existing pointing polynomial.
void save(QXmlStreamWriter &stream, const Project *project) const
Saves this BundleObservationSolveSettings to an xml stream.
static QString instrumentPointingSolveOptionToString(InstrumentPointingSolveOption option)
Tranlsates an enumerated InstrumentPointingSolveOption value to its string representation.
bool solvePolyOverPointing() const
Whether or not the solve polynomial will be fit over the existing pointing polynomial.
XML Handler that parses XMLs in a stack-oriented way.
Source
The rotation can come from one of 3 places for an Isis cube.
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.
void setInstrumentId(QString instrumentId)
Sets the instrument id for this observation.
InstrumentPositionSolveOption m_instrumentPositionSolveOption
Option for how to solve for instrument position.
QList< double > aprioriPositionSigmas() const
Accesses the a priori position sigmas.
This class is used to modify and manage solve settings for 1 to many BundleObservations.
Solve for instrument positions, velocities, and accelerations.
QList< double > m_anglesAprioriSigma
The image position a priori sigmas.The size of the list is equal to the number of coefficients in the...
Solve for pointing angles and their angular velocities.
int m_spkDegree
Degree of the polynomial fit to the original camera position.
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
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.
InstrumentPointingSolveOption m_instrumentPointingSolveOption
Option for how to solve for instrument pointing.
int m_numberCamPosCoefSolved
The number of camera position coefficients in the solution.
int numberCameraAngleCoefficientsSolved() const
Accesses the number of camera angle coefficients in the solution.
InstrumentPositionSolveOption
Options for how to solve for instrument position.
static InstrumentPositionSolveOption stringToInstrumentPositionSolveOption(QString option)
Translates a QString InstrumentPositionSolveOption to its enumerated value.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
Solve for all coefficients in the polynomials fit to the pointing angles.
InstrumentPointingSolveOption
Options for how to solve for instrument pointing.
QString instrumentId() const
Accesses the instrument id for this observation.
SpiceRotation::Source m_pointingInterpolationType
SpiceRotation interpolation type.
QSet< QString > m_observationNumbers
Associated observation numbers for these settings.
static QString instrumentPositionSolveOptionToString(InstrumentPositionSolveOption option)
Translates an enumerated InstrumentPositionSolveOption to its string representation.
int m_ckDegree
Degree of the polynomial fit to the original camera angles.
SpiceRotation::Source pointingInterpolationType() const
Accesses the SpiceRotation interpolation type for the instrument pointing.
Manage a stack of content handlers for reading XML files.
int spkDegree() const
Accesses the degree of the polynomial fit to the original camera position (spkDegree).
Solve for pointing angles: right ascension, declination and, optionally, twist.
bool solveTwist() const
Accesses the flag for solving for twist.
QUuid * m_id
A unique ID for this object (useful for others to reference this object when saving to disk)...
QList< double > aprioriPointingSigmas() const
Accesses the a priori pointing sigmas.
Source
This enum indicates the status of the object.
BundleObservationSolveSettings & operator=(const BundleObservationSolveSettings &src)
Assigns the state of another BundleObservationSolveSettings to this one.