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
CSMCamera.h
Go to the documentation of this file.
1#ifndef CSMCamera_h
2#define CSMCamera_h
8
9/* SPDX-License-Identifier: CC0-1.0 */
10
11#include "Camera.h"
12#include "iTime.h"
13#include "Target.h"
14
15#include <vector>
16
17#include <QList>
18#include <QPointF>
19#include <QStringList>
20
21#include "csm/csm.h"
22#include "csm/RasterGM.h"
23
24namespace Isis {
25 class CSMCamera : public Camera {
26
27 public:
28 // constructors
29 CSMCamera(Cube &cube);
30 CSMCamera(Cube &cube, QString pluginName, QString modelName, QString stateString);
31 CSMCamera(Cube &cube, csm::RasterGM *model);
32
34
35
41 virtual CameraType GetCameraType() const {
42 return Csm;
43 }
44
51 virtual int CkFrameId() const { return (-1); }
52
59 virtual int CkReferenceId() const { return (-1); }
60
67 virtual int SpkCenterId() const { return -1; }
68
75 virtual int SpkReferenceId() const { return (-1); }
76
78
79 virtual bool SetImage(const double sample, const double line);
80
81 virtual bool SetGround(Latitude latitude, Longitude longitude);
82 virtual bool SetGround(const SurfacePoint &surfacePt);
83 virtual bool SetUniversalGround(const double latitude, const double longitude);
84 virtual bool SetUniversalGround(const double latitude, const double longitude, double radius);
85 virtual bool SetRightAscensionDeclination(const double ra, const double dec);
86 virtual void setTime(const iTime &time);
87 virtual bool SetLookDirection(const std::vector<double> lookB);
88 virtual double CelestialNorthClockAngle();
89
90 virtual double LineResolution();
91 virtual double SampleResolution();
92 virtual double DetectorResolution();
93 virtual double ObliqueLineResolution(bool useLocal = true);
94 virtual double ObliqueSampleResolution(bool useLocal = true);
95 virtual double ObliqueDetectorResolution(bool useLocal = true);
96
97 virtual double parentLine() const;
98 virtual double parentSample() const;
99
100 virtual void subSpacecraftPoint(double &lat, double &lon);
101 virtual void subSpacecraftPoint(double &lat, double &lon, double line, double sample);
102 virtual void subSolarPoint(double &lat, double &lon);
103
104 virtual double PhaseAngle() const;
105 virtual double EmissionAngle() const;
106 virtual double IncidenceAngle() const;
107
108 virtual SpicePosition *sunPosition() const;
109 virtual SpicePosition *instrumentPosition() const;
110 virtual SpiceRotation *bodyRotation() const;
111 virtual SpiceRotation *instrumentRotation() const;
112
113 virtual void instrumentBodyFixedPosition(double p[3]) const;
114 virtual void sunPosition(double p[3]) const;
115 virtual double SolarDistance() const;
116
117 virtual double SlantDistance() const;
118 virtual double targetCenterDistance() const;
119
120 virtual double RightAscension();
121 virtual double Declination();
122
123 std::vector<int> getParameterIndices(csm::param::Set paramSet) const;
124 std::vector<int> getParameterIndices(csm::param::Type paramType) const;
125 std::vector<int> getParameterIndices(QStringList paramList) const;
126 void applyParameterCorrection(int index, double correction);
127 double getParameterCovariance(int index1, int index2);
128 QString getParameterName(int index);
129 QString getParameterUnits(int index);
130 double getParameterValue(int index);
131
132 std::vector<double> getSensorPartials(int index, SurfacePoint groundPoint);
133 virtual std::vector<double> GroundPartials(SurfacePoint groundPoint);
134 virtual std::vector<double> GroundPartials();
135
136 QString getModelState() const;
137
138 protected:
139 void setTarget(Pvl label);
140
141 std::vector<double> sensorPositionBodyFixed() const;
142 std::vector<double> sensorPositionBodyFixed(double line, double sample) const;
143
144 virtual void computeSolarLongitude(iTime et);
145
146 private:
147 void init(Cube &cube, QString pluginName, QString modelName, QString stateString);
148 void initFromModel(Cube &cube);
149
150 // Not owned. Cannot be freed because test mocks pass stack-allocated
151 // objects via constructModelFromState(). A proper fix would require
152 // heap-allocating the mock model in the test fixtures.
153 csm::RasterGM *m_model = nullptr;
154 iTime m_refTime;
155
156 void isisToCsmPixel(double line, double sample, csm::ImageCoord &csmPixel) const;
157 void csmToIsisPixel(csm::ImageCoord csmPixel, double &line, double &sample) const;
158 csm::EcefCoord isisToCsmGround(const SurfacePoint &groundPt) const;
159 SurfacePoint csmToIsisGround(const csm::EcefCoord &groundPt) const;
160
161 virtual std::vector<double> ImagePartials(SurfacePoint groundPoint);
162 virtual std::vector<double> ImagePartials();
163 };
164};
165#endif
QString getModelState() const
Get the CSM Model state string to re-create the CSM Model.
Definition CSMCamera.cpp:1151
virtual void computeSolarLongitude(iTime et)
Computes the solar longitude for the given ephemeris time.
Definition CSMCamera.cpp:1279
virtual double DetectorResolution()
Compute the detector resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:534
std::vector< int > getParameterIndices(csm::param::Set paramSet) const
Get the indices of the parameters that belong to a set.
Definition CSMCamera.cpp:1018
CSMCamera(Cube &cube)
Constructor for an ISIS Camera model that uses a Community Sensor Model (CSM) for the principal trans...
Definition CSMCamera.cpp:62
void setTarget(Pvl label)
Set the Target object for the camera model.
Definition CSMCamera.cpp:824
QString getParameterUnits(int index)
Get the units of the parameter at a particular index.
Definition CSMCamera.cpp:1141
virtual int CkFrameId() const
CK frame ID - - Instrument Code from spacit run on CK.
Definition CSMCamera.h:51
double getParameterCovariance(int index1, int index2)
Get the covariance between two parameters.
Definition CSMCamera.cpp:1095
virtual bool SetImage(const double sample, const double line)
Set the image sample and line for the Camera Model and then compute the corresponding image time,...
Definition CSMCamera.cpp:174
virtual QList< QPointF > PixelIfovOffsets()
Returns the pixel ifov offsets from center of pixel.
Definition CSMCamera.cpp:1193
virtual void setTime(const iTime &time)
Set the time and update the sensor position and orientation.
Definition CSMCamera.cpp:1164
virtual double parentLine() const
Returns the currently set parent line for the camera model.
Definition CSMCamera.cpp:604
virtual SpicePosition * sunPosition() const
Get the SpicePosition object that contains the state information for the sun in J2000.
Definition CSMCamera.cpp:1221
~CSMCamera()
Definition CSMCamera.h:33
double getParameterValue(int index)
Get the value of a parameter.
Definition CSMCamera.cpp:1129
virtual double SampleResolution()
Compute the sample resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:513
virtual void subSpacecraftPoint(double &lat, double &lon)
Get the latitude and longitude of the sub-spacecraft point at the currently set time.
Definition CSMCamera.cpp:677
virtual bool SetUniversalGround(const double latitude, const double longitude)
Set the latitude and longitude for the Camera Model and then compute the corresponding image time,...
Definition CSMCamera.cpp:250
virtual double LineResolution()
Compute the line resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:492
virtual double ObliqueLineResolution(bool useLocal=true)
Compute the oblique line resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:561
virtual CameraType GetCameraType() const
The CSM camera needs a bogus type for now.
Definition CSMCamera.h:41
virtual int SpkReferenceId() const
SPK Reference ID - J2000.
Definition CSMCamera.h:75
virtual double IncidenceAngle() const
Compute the incidence angle at the currently set ground point.
Definition CSMCamera.cpp:955
virtual double RightAscension()
Computes the Right Ascension of the currently set image coordinate.
Definition CSMCamera.cpp:1303
std::vector< double > getSensorPartials(int index, SurfacePoint groundPoint)
Definition CSMCamera.cpp:1100
virtual int CkReferenceId() const
CK Reference ID - J2000.
Definition CSMCamera.h:59
QString getParameterName(int index)
Get the name of the parameter.
Definition CSMCamera.cpp:1117
virtual double CelestialNorthClockAngle()
Computes the celestial north clock angle at the current line/sample or ra/dec.
Definition CSMCamera.cpp:384
virtual double Declination()
Computes the Declination of the currently set image coordinate.
Definition CSMCamera.cpp:1321
void applyParameterCorrection(int index, double correction)
Adjust the value of a parameter.
Definition CSMCamera.cpp:1083
virtual void subSolarPoint(double &lat, double &lon)
Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east,...
Definition CSMCamera.cpp:1180
virtual std::vector< double > GroundPartials()
Compute the partial derivatives of the sample, line with respect to the x, y, z coordinates of the gr...
Definition CSMCamera.cpp:789
virtual bool SetRightAscensionDeclination(const double ra, const double dec)
Given the ra/dec compute the look direction.
Definition CSMCamera.cpp:314
virtual SpicePosition * instrumentPosition() const
Get the SpicePosition object the contains the state information for the sensor in J2000.
Definition CSMCamera.cpp:1236
virtual double PhaseAngle() const
Compute the phase angle at the currently set ground point.
Definition CSMCamera.cpp:916
virtual double ObliqueSampleResolution(bool useLocal=true)
Compute the oblique sample resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:576
std::vector< double > sensorPositionBodyFixed() const
Get the position of the sensor in the body fixed coordinate system at the currently set time.
Definition CSMCamera.cpp:642
virtual double EmissionAngle() const
Compute the emission angle at the currently set ground point.
Definition CSMCamera.cpp:940
virtual void instrumentBodyFixedPosition(double p[3]) const
Get the position of the sensor in the body fixed coordinate system at the currently set time.
Definition CSMCamera.cpp:628
virtual SpiceRotation * instrumentRotation() const
Get the SpiceRotation object the contains the orientation of the sensor relative to J2000.
Definition CSMCamera.cpp:1265
virtual double parentSample() const
Returns the currently set parent sample for the camera model.
Definition CSMCamera.cpp:616
virtual double ObliqueDetectorResolution(bool useLocal=true)
Compute the oblique detector resolution in meters per pixel for the current set point.
Definition CSMCamera.cpp:591
virtual SpiceRotation * bodyRotation() const
Get the SpiceRotation object the contains the orientation of the target body relative to J2000.
Definition CSMCamera.cpp:1250
virtual double SolarDistance() const
Computes the distance to the sun from the currently set ground point.
Definition CSMCamera.cpp:1292
virtual double SlantDistance() const
Compute the slant distance from the sensor to the ground point at the currently set time.
Definition CSMCamera.cpp:980
virtual bool SetGround(Latitude latitude, Longitude longitude)
Set the latitude and longitude for the Camera Model and then compute the corresponding image time,...
Definition CSMCamera.cpp:285
virtual bool SetLookDirection(const std::vector< double > lookB)
Sets the look direction of the spacecraft.
Definition CSMCamera.cpp:355
virtual int SpkCenterId() const
SPK Center ID - 6 (Saturn)
Definition CSMCamera.h:67
virtual double targetCenterDistance() const
Calculates and returns the distance from the spacecraft to the target center at the currently set tim...
Definition CSMCamera.cpp:1002
Camera(Cube &cube)
Constructs the Camera object.
Definition Camera.cpp:56
CameraType
This enum defines the types of cameras supported in this class.
Definition Camera.h:358
@ Csm
Community Sensor Model Camera.
Definition Camera.h:365
IO Handler for Isis Cubes.
Definition Cube.h:168
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
virtual iTime time() const
Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions.
Definition Spice.cpp:1101
Obtain SPICE position information for a body.
Definition SpicePosition.h:176
Obtain SPICE rotation information for a body.
Definition SpiceRotation.h:208
This class defines a body-fixed surface point.
Definition SurfacePoint.h:132
Parse and return pieces of a time string.
Definition iTime.h:65
This is free and unencumbered software released into the public domain.
Definition BoxcarCachingAlgorithm.h:13
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16