Isis Developer Reference
Isis::Spice Class Reference

Obtain SPICE information for a spacecraft. More...

#include <Spice.h>

Inheritance diagram for Isis::Spice:
Inheritance graph
Collaboration diagram for Isis::Spice:
Collaboration graph

Public Member Functions

 Spice (Cube &cube)
 Constructs a Spice object and loads SPICE kernels using information from the label object.
 
 Spice (Pvl &lab, nlohmann::json)
 Constructs a Spice Object.
 
virtual ~Spice ()
 Destroys the Spice object.
 
virtual void setTime (const iTime &time)
 Sets the ephemeris time and reads the spacecraft and sun position from the kernels at that instant in time.
 
void instrumentPosition (double p[3]) const
 Returns the spacecraft position in body-fixed frame km units.
 
virtual void instrumentBodyFixedPosition (double p[3]) const
 Returns the spacecraft position in body-fixed frame km units.
 
virtual void sunPosition (double p[3]) const
 Fills the input vector with sun position information, in either body-fixed or J2000 reference frame and km units.
 
virtual double targetCenterDistance () const
 Calculates and returns the distance from the spacecraft to the target center.
 
virtual double sunToBodyDist () const
 
virtual Longitude solarLongitude ()
 Returns the solar longitude.
 
virtual void instrumentBodyFixedVelocity (double v[3]) const
 Returns the spacecraft velocity in body-fixed frame km/sec units.
 
virtual iTime time () const
 Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions.
 
void radii (Distance r[3]) const
 Returns the radii of the body in km.
 
virtual void createCache (iTime startTime, iTime endTime, const int size, double tol)
 This method creates an internal cache of spacecraft and sun positions over a specified time range.
 
virtual iTime cacheStartTime () const
 Accessor method for the cache start time.
 
virtual iTime cacheEndTime () const
 Accessor method for the cache end time.
 
virtual void subSpacecraftPoint (double &lat, double &lon)
 Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric)
 
virtual void subSolarPoint (double &lat, double &lon)
 Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric)
 
virtual Targettarget () const
 Returns a pointer to the target object.
 
QString targetName () const
 Returns the QString name of the target.
 
virtual iTime getClockTime (QString clockValue, int sclkCode=-1, bool clockTicks=false)
 This converts the spacecraft clock ticks value (clockValue) to an iTime.
 
SpiceDouble getDouble (const QString &key, int index=0)
 This returns a value from the NAIF text pool.
 
SpiceInt getInteger (const QString &key, int index=0)
 This returns a value from the NAIF text pool.
 
QString getString (const QString &key, int index=0)
 This returns a value from the NAIF text pool.
 
virtual SpicePositionsunPosition () const
 Accessor method for the sun position.
 
virtual SpicePositioninstrumentPosition () const
 Accessor method for the instrument position.
 
virtual SpiceRotationbodyRotation () const
 Accessor method for the body rotation.
 
virtual SpiceRotationinstrumentRotation () const
 Accessor method for the instrument rotation.
 
bool isUsingAle ()
 
bool hasKernels (Pvl &lab)
 Returns true if the kernel group has kernel files.
 
bool isTimeSet ()
 Returns true if time has been initialized.
 
SpiceInt naifBodyCode () const
 This returns the NAIF body code of the target indicated in the labels.
 
SpiceInt naifSpkCode () const
 This returns the NAIF SPK code to use when reading from SPK kernels.
 
SpiceInt naifCkCode () const
 This returns the NAIF CK code to use when reading from CK kernels.
 
SpiceInt naifIkCode () const
 This returns the NAIF IK code to use when reading from instrument kernels.
 
SpiceInt naifSclkCode () const
 This returns the NAIF SCLK code to use when reading from instrument kernels.
 
SpiceInt naifBodyFrameCode () const
 This returns the NAIF body frame code.
 
PvlObject getStoredNaifKeywords () const
 This returns the PvlObject that stores all of the requested Naif data and can be a replacement for furnishing text kernels.
 
virtual double resolution ()
 Virtual method that returns the pixel resolution of the sensor in meters/pix.
 

Protected Types

enum  SpiceValueType { SpiceDoubleType , SpiceStringType , SpiceIntType , SpiceByteCodeType }
 NAIF value primitive type. More...
 

Protected Member Functions

QVariant readValue (QString key, SpiceValueType type, int index=0)
 This should be used for reading ALL text naif kernel values.
 
void storeResult (QString name, SpiceValueType type, QVariant value)
 
QVariant getStoredResult (QString name, SpiceValueType type)
 
void storeValue (QString key, int index, SpiceValueType type, QVariant value)
 
QVariant readStoredValue (QString key, SpiceValueType type, int index)
 
virtual void computeSolarLongitude (iTime et)
 Computes the solar longitude for the given ephemeris time.
 

Protected Attributes

SpiceDouble m_uB [3]
 This contains the sun position (u) in the bodyfixed reference frame (B).
 
SpiceDouble m_BJ [3][3]
 This contains the transformation matrix from J2000 (J) to Body fixed (B).
 
Targetm_target
 Target of the observation.
 
iTimem_et
 Ephemeris time (read NAIF documentation for a detailed description)
 
Longitudem_solarLongitude
 Body rotation solar longitude value.
 

Detailed Description

Obtain SPICE information for a spacecraft.

This class initializes standard NAIF SPICE kernels in order to allow queries of a spacecraft's position and attitude at a given time. It also allows for access to the position of the sun and transformation matrices from J2000 to a body-fixed reference frame for a given target (e.g., Mars). The constructor for this class expects a PVL object with the following minimum information:

Group = Instrument
TargetName = Mars
EndGroup
Group = Kernels
NaifFrameCode = -94030
LeapSecond = naif0007.tls
TargetAttitudeShape = pck00006.tpc
TargetPosition = de405.bsp
InstrumentPointing = (mgs_sc_ab1.bc,
Instrument = moc13.ti
SpacecraftClock = MGS_SCLKSCET.00045.tsc
InstrumentPosition = mgs_ab1.bsp
InstrumentAddendum = mocAddendum.ti
EndGroup
Determine SPICE kernels defined in an ISIS file.
Definition Kernels.h:94

This group is typically found in the image labels after it has been run through the program "spiceinit" It is recommended you read NAIF documentation to obtain a better understanding about the various types of SPICE kernels. The NAIF toolkit accesses information from kernels on a last-in-first-out (LIFO) basis. This means that the creation of a second object can cause problems with the first object. To alleviate this problem we have supplied the CreateCache method which should be invoked immediately after the object is constructed. This caches information (spacecraft position, pointing, etc) internally in the object and unloads all NAIF kernels.

Author
2003-03-13 Jeff Anderson

Member Enumeration Documentation

◆ SpiceValueType

NAIF value primitive type.

Enumerator
SpiceDoubleType 

SpiceDouble type.

SpiceStringType 

SpiceString type.

SpiceIntType 

SpiceInt type.

SpiceByteCodeType 

SpiceByteCode type.

Constructor & Destructor Documentation

◆ Spice() [1/2]

Isis::Spice::Spice ( Cube & cube)

Constructs a Spice object and loads SPICE kernels using information from the label object.

The constructor expects an Instrument and Kernels group to be in the labels.

Parameters
labLabel containing Instrument and Kernels groups.

References Isis::Cube::hasBlob(), Isis::Cube::label(), and Isis::PvlObject::Traverse.

◆ Spice() [2/2]

Isis::Spice::Spice ( Pvl & lab,
nlohmann::json isd )

Constructs a Spice Object.

Parameters
labIsis Cube Pvl Lavel
isdALE Json ISD

◆ ~Spice()

Isis::Spice::~Spice ( )
virtual

Destroys the Spice object.

References Isis::NaifStatus::CheckErrors(), m_et, m_solarLongitude, and m_target.

Member Function Documentation

◆ bodyRotation()

◆ cacheEndTime()

iTime Isis::Spice::cacheEndTime ( ) const
virtual

Accessor method for the cache end time.

Returns
iTime End time for the image.
Author
Steven Lambright

◆ cacheStartTime()

iTime Isis::Spice::cacheStartTime ( ) const
virtual

Accessor method for the cache start time.

Returns
iTime Start time for the image.
Author
Steven Lambright

◆ computeSolarLongitude()

◆ createCache()

void Isis::Spice::createCache ( iTime startTime,
iTime endTime,
const int size,
double tol )
virtual

This method creates an internal cache of spacecraft and sun positions over a specified time range.

The SPICE kernels are then immediately unloaded. This allows multiple instances of the Spice object to be created as the NAIF toolkit can clash if multiple sets of SPICE kernels are loaded. Note that the cache size is specified as an argument. Therefore, times requested via setTime() which are not directly loaded in the cache will be interpolated. If the instrument position is not cached and cacheSize is greater than 3, the tolerance is passed to the SpicePosition Memcache2HermiteCache() method.

Note: Before this method is called, the private variables m_cacheSize, m_startTime and m_endTime must be set. This is done in the Camera classes using the methods SetCacheSize() and SetStartEndEphemerisTime().

Parameters
startTimeStarting ephemeris time to cache
endTimeEnding ephemeris time to cache
sizeSize of the cache.
tolTolerance.
Exceptions
Isis::IException::Programmer- "Argument cacheSize must be greater than zero"
Isis::IException::Programmer- "Argument startTime must be less than or equal to endTime"
Isis::IException::User- "This instrument does not support time padding"

References _FILEINFO_, Isis::SpicePosition::cacheSize(), Isis::NaifStatus::CheckErrors(), computeSolarLongitude(), Isis::iTime::Et(), Isis::SpicePosition::GetSource(), Isis::SpiceRotation::GetSource(), Isis::SpicePosition::HasVelocity(), instrumentPosition(), Isis::SpicePosition::IsCached(), Isis::SpiceRotation::IsCached(), isUsingAle(), Isis::SpicePosition::LoadCache(), Isis::SpiceRotation::LoadCache(), m_et, Isis::SpicePosition::Memcache, Isis::SpiceRotation::Memcache, Isis::SpicePosition::Memcache2HermiteCache(), Isis::SpiceRotation::MinimizeCache(), Isis::IException::Programmer, Isis::IException::User, and Isis::SpiceRotation::Yes.

Referenced by Isis::CrismCamera::CrismCamera(), Isis::Camera::LoadCache(), and Isis::MiniRF::MiniRF().

◆ getClockTime()

iTime Isis::Spice::getClockTime ( QString clockValue,
int sclkCode = -1,
bool clockTicks = false )
virtual

This converts the spacecraft clock ticks value (clockValue) to an iTime.

If the clock ticks value is provided directly, rather than the spacecraft clock string, set clockTicks=true.

Use this when possible because naif calls (such as scs2e_c) cannot be called when not using naif.

References Isis::NaifStatus::CheckErrors(), getStoredResult(), naifSclkCode(), SpiceDoubleType, storeResult(), and Isis::toString().

Referenced by Isis::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::HayabusaAmicaCamera::HayabusaAmicaCamera(), Isis::HayabusaNirsCamera::HayabusaNirsCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::Hyb2OncCamera::Hyb2OncCamera(), Isis::VimsGroundMap::Init(), Isis::VimsSkyMap::Init(), Isis::JunoCamera::JunoCamera(), Isis::KaguyaTcCamera::KaguyaTcCamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::MarciCamera::MarciCamera(), Isis::MdisCamera::MdisCamera(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::MsiCamera::MsiCamera(), Isis::NewHorizonsLeisaCamera::NewHorizonsLeisaCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::NewHorizonsMvicTdiCamera::NewHorizonsMvicTdiCamera(), Isis::OsirisRexOcamsCamera::OsirisRexOcamsCamera(), Isis::OsirisRexTagcamsCamera::OsirisRexTagcamsCamera(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), Isis::ThemisVisCamera::ThemisVisCamera(), Isis::VikingCamera::VikingCamera(), and Isis::VimsCamera::VimsCamera().

◆ getDouble()

SpiceDouble Isis::Spice::getDouble ( const QString & key,
int index = 0 )

This returns a value from the NAIF text pool.

It is a static convience method

Parameters
keyName of NAIF keyword to obtain from the pool
indexIf the keyword is an array, the element to obtain. Defaults to 0
Returns
SpiceDouble Spice double from NAIF text pool
Exceptions
Isis::iException::Io- "Can not find key in instrument kernels."

References readValue(), and SpiceDoubleType.

Referenced by Isis::LroWideAngleCameraDistortionMap::addFilter(), Isis::LroWideAngleCameraFocalPlaneMap::addFilter(), Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::ApolloPanoramicCamera::ApolloPanoramicCamera(), Isis::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), Isis::ClipperPushBroomCamera::ClipperPushBroomCamera(), Isis::CrismCamera::CrismCamera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HayabusaAmicaCamera::HayabusaAmicaCamera(), Isis::HayabusaNirsCamera::HayabusaNirsCamera(), Isis::HiresCamera::HiresCamera(), Isis::HrscCamera::HrscCamera(), Isis::Hyb2OncCamera::Hyb2OncCamera(), Isis::RosettaOsirisCamera::initDistortion(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::JunoCamera::JunoCamera(), Isis::KaguyaMiCamera::KaguyaMiCamera(), Isis::KaguyaTcCamera::KaguyaTcCamera(), Isis::KaguyaTcCameraDistortionMap::KaguyaTcCameraDistortionMap(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::LwirCamera::LwirCamera(), Isis::MarciCamera::MarciCamera(), Isis::MarciDistortionMap::MarciDistortionMap(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MdisCamera::MdisCamera(), Isis::MexHrscSrcCamera::MexHrscSrcCamera(), Isis::MsiCamera::MsiCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::NewHorizonsMvicTdiCamera::NewHorizonsMvicTdiCamera(), Isis::NirCamera::NirCamera(), Isis::OsirisRexOcamsCamera::OsirisRexOcamsCamera(), Isis::OsirisRexTagcamsCamera::OsirisRexTagcamsCamera(), Isis::OsirisRexTagcamsDistortionMap::OsirisRexTagcamsDistortionMap(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::RosettaVirtisCamera::RosettaVirtisCamera(), Isis::KaguyaMiCameraDistortionMap::SetDistortion(), Isis::LroNarrowAngleDistortionMap::SetDistortion(), Isis::TaylorCameraDistortionMap::SetDistortion(), Isis::OsirisRexOcamsDistortionMap::SetDistortion(), Isis::Camera::SetFocalLength(), Isis::Camera::SetPixelPitch(), Isis::SsiCamera::SsiCamera(), Isis::TgoCassisCamera::TgoCassisCamera(), Isis::TgoCassisDistortionMap::TgoCassisDistortionMap(), and Isis::UvvisCamera::UvvisCamera().

◆ getInteger()

SpiceInt Isis::Spice::getInteger ( const QString & key,
int index = 0 )

This returns a value from the NAIF text pool.

It is a static convience

Parameters
keyName of NAIF keyword to obtain from the pool
indexIf the keyword is an array, the element to obtain. Defaults to 0
Returns
SpiceInt Spice integer from NAIF text pool
Exceptions
Isis::iException::Io- "Can not find key in instrument kernels

References readValue(), and SpiceIntType.

Referenced by Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), and Isis::LroWideAngleCamera::LroWideAngleCamera().

◆ getStoredNaifKeywords()

PvlObject Isis::Spice::getStoredNaifKeywords ( ) const

This returns the PvlObject that stores all of the requested Naif data and can be a replacement for furnishing text kernels.

Referenced by Isis::Cube::attachSpiceFromIsd().

◆ getStoredResult()

QVariant Isis::Spice::getStoredResult ( QString name,
SpiceValueType type )
protected

◆ getString()

QString Isis::Spice::getString ( const QString & key,
int index = 0 )

This returns a value from the NAIF text pool.

It is a static convience method

Parameters
keyName of NAIF keyword to obtain from the pool
indexIf the keyword is an array, the element to obtain. Defaults to 0
Returns
QString Value from the NAIF text pool
Exceptions
Isis::IException::Io- "Can not find key in instrument kernels."

References readValue(), and SpiceStringType.

Referenced by Isis::LightTimeCorrectionState::checkAberrationCorrection(), Isis::LightTimeCorrectionState::checkLightTimeToSurfaceCorrect(), Isis::LightTimeCorrectionState::checkObserverTargetSwap(), Isis::MdisCamera::MdisCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::OsirisRexTagcamsCamera::OsirisRexTagcamsCamera(), Isis::OsirisRexTagcamsDistortionMap::OsirisRexTagcamsDistortionMap(), and Isis::OsirisRexOcamsDistortionMap::SetDistortion().

◆ hasKernels()

bool Isis::Spice::hasKernels ( Pvl & lab)

Returns true if the kernel group has kernel files.

Parameters
labLabel containing Instrument and Kernels groups.
Returns
bool status of kernel files in the kernel group

References Isis::PvlContainer::hasKeyword(), Isis::PvlKeyword::size(), and Isis::PvlObject::Traverse.

◆ instrumentBodyFixedPosition()

void Isis::Spice::instrumentBodyFixedPosition ( double p[3]) const
virtual

Returns the spacecraft position in body-fixed frame km units.

Parameters
p[]Spacecraft position
See also
setTime()
Exceptions
Isis::iException::Programmer- "You must call SetTime first"

Reimplemented in Isis::CSMCamera.

References _FILEINFO_, Isis::SpicePosition::Coordinate(), m_et, Isis::IException::Programmer, and Isis::SpiceRotation::ReferenceVector().

Referenced by Isis::IsisSensor::getState(), Isis::IsisSensor::getState(), instrumentPosition(), Isis::Camera::LocalPhotometricAngles(), Isis::Sensor::PhaseAngle(), and Isis::Sensor::SlantDistance().

◆ instrumentBodyFixedVelocity()

void Isis::Spice::instrumentBodyFixedVelocity ( double v[3]) const
virtual

Returns the spacecraft velocity in body-fixed frame km/sec units.

Parameters
v[]Spacecraft velocity

References _FILEINFO_, Isis::SpicePosition::Coordinate(), m_et, Isis::IException::Programmer, Isis::SpiceRotation::ReferenceVector(), and Isis::SpicePosition::Velocity().

◆ instrumentPosition() [1/2]

◆ instrumentPosition() [2/2]

void Isis::Spice::instrumentPosition ( double p[3]) const

Returns the spacecraft position in body-fixed frame km units.

Parameters
p[]Spacecraft position
See also
setTime()
Exceptions
Isis::iException::Programmer- "You must call SetTime first"

References instrumentBodyFixedPosition().

Referenced by Isis::Cube::attachSpiceFromIsd(), Isis::CameraGroundMap::GetdXYdPosition(), Isis::RadarGroundMap::GetdXYdPosition(), Isis::RadarGroundMap::GetXY(), Isis::CameraGroundMap::GetXY(), Isis::RadarGroundMap::SetFocalPlane(), and Isis::RadarGroundMap::SetGround().

◆ instrumentRotation()

◆ isTimeSet()

bool Isis::Spice::isTimeSet ( )

Returns true if time has been initialized.

Author
2016-10-19 Kristin Berry
Returns
bool true if time has been set

References m_et.

Referenced by Isis::CameraDetectorMap::SetParent(), and Isis::RollingShutterCameraDetectorMap::SetParent().

◆ isUsingAle()

bool Isis::Spice::isUsingAle ( )

Referenced by createCache().

◆ naifBodyCode()

SpiceInt Isis::Spice::naifBodyCode ( ) const

This returns the NAIF body code of the target indicated in the labels.

Returns
SpiceInt NAIF body code

References m_target, and Isis::Target::naifBodyCode().

Referenced by Isis::Camera::SpkCenterId().

◆ naifBodyFrameCode()

SpiceInt Isis::Spice::naifBodyFrameCode ( ) const

This returns the NAIF body frame code.

It is read from the labels, if it exists. Otherwise, it's calculated by the init() method.

Returns
SpiceInt NAIF body frame code

◆ naifCkCode()

SpiceInt Isis::Spice::naifCkCode ( ) const

This returns the NAIF CK code to use when reading from CK kernels.

Returns
SpiceInt NAIF CK code

◆ naifIkCode()

SpiceInt Isis::Spice::naifIkCode ( ) const

This returns the NAIF IK code to use when reading from instrument kernels.

Returns
SpiceInt NAIF IK code

Referenced by Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::ApolloPanoramicCamera::ApolloPanoramicCamera(), Isis::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), Isis::ClipperNacRollingShutterCamera::ClipperNacRollingShutterCamera(), Isis::ClipperPushBroomCamera::ClipperPushBroomCamera(), Isis::ClipperWacFcCamera::ClipperWacFcCamera(), Isis::CrismCamera::CrismCamera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HayabusaAmicaCamera::HayabusaAmicaCamera(), Isis::HayabusaNirsCamera::HayabusaNirsCamera(), Isis::HiresCamera::HiresCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::Hyb2OncCamera::Hyb2OncCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::JunoCamera::JunoCamera(), Isis::KaguyaMiCamera::KaguyaMiCamera(), Isis::KaguyaTcCamera::KaguyaTcCamera(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::LwirCamera::LwirCamera(), Isis::MarciCamera::MarciCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MdisCamera::MdisCamera(), Isis::MexHrscSrcCamera::MexHrscSrcCamera(), Isis::MiniRF::MiniRF(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::MsiCamera::MsiCamera(), Isis::NewHorizonsLeisaCamera::NewHorizonsLeisaCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::NewHorizonsMvicTdiCamera::NewHorizonsMvicTdiCamera(), Isis::NirCamera::NirCamera(), Isis::OsirisRexOcamsCamera::OsirisRexOcamsCamera(), Isis::OsirisRexTagcamsCamera::OsirisRexTagcamsCamera(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::RosettaVirtisCamera::RosettaVirtisCamera(), Isis::Camera::SetFocalLength(), Isis::Camera::SetPixelPitch(), Isis::SsiCamera::SsiCamera(), Isis::TgoCassisCamera::TgoCassisCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), Isis::ThemisVisCamera::ThemisVisCamera(), Isis::UvvisCamera::UvvisCamera(), Isis::VikingCamera::VikingCamera(), Isis::VimsCamera::VimsCamera(), and Isis::VoyagerCamera::VoyagerCamera().

◆ naifSclkCode()

SpiceInt Isis::Spice::naifSclkCode ( ) const

This returns the NAIF SCLK code to use when reading from instrument kernels.

Returns
SpiceInt NAIF SCLK code

Referenced by Isis::CrismCamera::CrismCamera(), and getClockTime().

◆ naifSpkCode()

SpiceInt Isis::Spice::naifSpkCode ( ) const

This returns the NAIF SPK code to use when reading from SPK kernels.

Returns
SpiceInt NAIF SPK code

Referenced by Isis::Camera::SpkTargetId().

◆ radii()

void Isis::Spice::radii ( Distance r[3]) const

Returns the radii of the body in km.

The radii are obtained from the appropriate SPICE kernel for the body specified by TargetName in the Instrument group of the labels.

Parameters
r[]Radii of the target in kilometers

References m_target, and Isis::Target::radii().

Referenced by Isis::Camera::BasicMapping(), Isis::Camera::GroundRange(), Isis::VimsGroundMap::Init(), Isis::MiniRF::MiniRF(), Isis::RadarGroundMap::SetFocalPlane(), Isis::CSMCamera::setTarget(), subSolarPoint(), and subSpacecraftPoint().

◆ readStoredValue()

QVariant Isis::Spice::readStoredValue ( QString key,
SpiceValueType type,
int index )
protected

◆ readValue()

QVariant Isis::Spice::readValue ( QString key,
SpiceValueType type,
int index = 0 )
protected

This should be used for reading ALL text naif kernel values.

This will read it from Naif if we're using naif/not attached kernels. If we have attached kernels and a NaifKeywords label object we will grab it from there instead. This allows us to not furnish kernels after spiceinit.

Parameters
keyThe naif keyword,value name
typeThe naif value's primitive type
indexThe index into the naif keyword array to read

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Isis::IException::Io, readStoredValue(), SpiceDoubleType, SpiceIntType, SpiceStringType, storeValue(), and Isis::IException::Unknown.

Referenced by getDouble(), getInteger(), getString(), and Isis::IdealCamera::IdealCamera().

◆ resolution()

double Isis::Spice::resolution ( )
virtual

Virtual method that returns the pixel resolution of the sensor in meters/pix.

Returns
double Resolution value of 1.0

Reimplemented in Isis::Camera, and Isis::Sensor.

Referenced by Isis::ShapeModel::resolution().

◆ setTime()

void Isis::Spice::setTime ( const iTime & et)
virtual

Sets the ephemeris time and reads the spacecraft and sun position from the kernels at that instant in time.

Parameters
etEphemeris time (read NAIF documentation for a detailed description)
See also
http://naif.jpl.nasa.gov/naif/

Reimplemented in Isis::CSMCamera, and Isis::Sensor.

References computeSolarLongitude(), Isis::SpicePosition::Coordinate(), Isis::iTime::Et(), instrumentPosition(), m_et, m_uB, Isis::SpiceRotation::ReferenceVector(), Isis::SpicePosition::SetEphemerisTime(), and Isis::SpiceRotation::SetEphemerisTime().

Referenced by Isis::Sensor::setTime().

◆ solarLongitude()

Longitude Isis::Spice::solarLongitude ( )
virtual

Returns the solar longitude.

Returns
double The Solar Longitude

References computeSolarLongitude(), m_et, and m_solarLongitude.

Referenced by Isis::Cube::attachSpiceFromIsd().

◆ storeResult()

void Isis::Spice::storeResult ( QString name,
SpiceValueType type,
QVariant value )
protected

◆ storeValue()

◆ subSolarPoint()

void Isis::Spice::subSolarPoint ( double & lat,
double & lon )
virtual

Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric)

Parameters
latSub-solar latitude
lonSub-solar longitude
See also
setTime()
Exceptions
Isis::IException::Programmer- "You must call SetTime first."

Reimplemented in Isis::CSMCamera.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), m_et, m_uB, Isis::PI, Isis::IException::Programmer, radii(), and target().

Referenced by Isis::Sensor::LocalSolarTime(), and Isis::Camera::SunAzimuth().

◆ subSpacecraftPoint()

void Isis::Spice::subSpacecraftPoint ( double & lat,
double & lon )
virtual

Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric)

Parameters
latSub-spacecraft latitude
lonSub-spacecraft longitude
See also
setTime()
Exceptions
Isis::IException::Programmer- "You must call SetTime first."

Reimplemented in Isis::CSMCamera.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Isis::SpicePosition::Coordinate(), m_et, Isis::PI, Isis::IException::Programmer, radii(), Isis::SpiceRotation::ReferenceVector(), and target().

Referenced by Isis::Sensor::SpacecraftAltitude(), and Isis::Camera::SpacecraftAzimuth().

◆ sunPosition() [1/2]

SpicePosition * Isis::Spice::sunPosition ( ) const
virtual

Accessor method for the sun position.

Returns
iTime Sun position for the image.
Author
Steven Lambright

Reimplemented in Isis::CSMCamera.

Referenced by Isis::Sensor::SolarDistance(), and sunToBodyDist().

◆ sunPosition() [2/2]

void Isis::Spice::sunPosition ( double p[3]) const
virtual

Fills the input vector with sun position information, in either body-fixed or J2000 reference frame and km units.

Parameters
p[]Sun position
See also
setTime()

Reimplemented in Isis::CSMCamera.

References _FILEINFO_, m_et, m_uB, and Isis::IException::Programmer.

Referenced by Isis::Cube::attachSpiceFromIsd().

◆ sunToBodyDist()

double Isis::Spice::sunToBodyDist ( ) const
virtual

◆ target()

Target * Isis::Spice::target ( ) const
virtual

Returns a pointer to the target object.

Returns
string

References m_target.

Referenced by Isis::Camera::BasicMapping(), Isis::Camera::basicRingMapping(), Isis::Sensor::Coordinate(), Isis::CSMCamera::EmissionAngle(), Isis::Sensor::EmissionAngle(), Isis::Sensor::GetLatitude(), Isis::Camera::GetLocalNormal(), Isis::Sensor::GetLongitude(), Isis::Sensor::GetSurfacePoint(), Isis::CameraGroundMap::GetXY(), Isis::UniversalGroundMap::GroundRange(), Isis::Sensor::HasSurfaceIntersection(), Isis::Sensor::IgnoreElevationModel(), Isis::CSMCamera::IncidenceAngle(), Isis::Sensor::IncidenceAngle(), Isis::Camera::LoadCache(), Isis::Sensor::LocalRadius(), Isis::Sensor::LocalRadius(), Isis::Sensor::LocalRadius(), Isis::Camera::NorthAzimuth(), Isis::CSMCamera::PhaseAngle(), Isis::CameraGroundMap::SetGround(), Isis::VimsGroundMap::SetGround(), Isis::RadarGroundMap::SetGround(), Isis::Camera::SetGround(), Isis::CSMCamera::SetGround(), Isis::Sensor::SetGround(), Isis::Camera::SetGround(), Isis::CSMCamera::SetGround(), Isis::Camera::SetImage(), Isis::CSMCamera::SetImage(), Isis::Camera::SetImage(), Isis::Sensor::SetLookDirection(), Isis::CSMCamera::SetLookDirection(), Isis::Camera::SetRightAscensionDeclination(), Isis::CSMCamera::setTarget(), Isis::Sensor::setTime(), Isis::Camera::SetUniversalGround(), Isis::Sensor::SetUniversalGround(), Isis::Camera::SetUniversalGround(), Isis::Sensor::SetUniversalGround(), Isis::Sensor::SlantDistance(), Isis::Camera::Slope(), Isis::Sensor::SolarDistance(), subSolarPoint(), and subSpacecraftPoint().

◆ targetCenterDistance()

double Isis::Spice::targetCenterDistance ( ) const
virtual

Calculates and returns the distance from the spacecraft to the target center.

Returns
double Distance to the center of the target from the spacecraft

Reimplemented in Isis::CSMCamera.

References Isis::SpicePosition::Coordinate(), and Isis::SpiceRotation::ReferenceVector().

◆ targetName()

QString Isis::Spice::targetName ( ) const

Returns the QString name of the target.

Returns
QString

References m_target, and Isis::Target::name().

◆ time()

iTime Isis::Spice::time ( ) const
virtual

Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions.

Returns
iTime the currently set ephemeris time
Exceptions
IException::Programmer"Unable to retrieve the time Spice::setTime must be called first."

References _FILEINFO_, m_et, and Isis::IException::Programmer.

Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::IsisSensor::getState(), Isis::IsisSensor::getState(), Isis::HiresCamera::HiresCamera(), Isis::KaguyaTcCamera::KaguyaTcCamera(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::LwirCamera::LwirCamera(), Isis::NewHorizonsMvicFrameCamera::SetBand(), Isis::ApolloPanoramicDetectorMap::SetDetector(), Isis::LineScanCameraDetectorMap::SetDetector(), Isis::RadarPulseMap::SetDetector(), Isis::VariableLineScanCameraDetectorMap::SetDetector(), Isis::RadarSlantRangeMap::SetFocalPlane(), Isis::CameraDetectorMap::SetParent(), Isis::RollingShutterCameraDetectorMap::SetParent(), Isis::Sensor::setTime(), Isis::RadarSlantRangeMap::SetUndistortedFocalPlane(), Isis::ApolloMetricCamera::ShutterOpenCloseTimes(), Isis::IssNACamera::ShutterOpenCloseTimes(), Isis::IssWACamera::ShutterOpenCloseTimes(), Isis::HiresCamera::ShutterOpenCloseTimes(), Isis::LwirCamera::ShutterOpenCloseTimes(), Isis::NirCamera::ShutterOpenCloseTimes(), Isis::UvvisCamera::ShutterOpenCloseTimes(), Isis::ClipperWacFcCamera::ShutterOpenCloseTimes(), Isis::DawnFcCamera::ShutterOpenCloseTimes(), Isis::SsiCamera::ShutterOpenCloseTimes(), Isis::HayabusaAmicaCamera::ShutterOpenCloseTimes(), Isis::HayabusaNirsCamera::ShutterOpenCloseTimes(), Isis::Hyb2OncCamera::ShutterOpenCloseTimes(), Isis::JunoCamera::ShutterOpenCloseTimes(), Isis::LoHighCamera::ShutterOpenCloseTimes(), Isis::LoMediumCamera::ShutterOpenCloseTimes(), Isis::Mariner10Camera::ShutterOpenCloseTimes(), Isis::MdisCamera::ShutterOpenCloseTimes(), Isis::MexHrscSrcCamera::ShutterOpenCloseTimes(), Isis::MsiCamera::ShutterOpenCloseTimes(), Isis::NewHorizonsLorriCamera::ShutterOpenCloseTimes(), Isis::NewHorizonsMvicFrameCamera::ShutterOpenCloseTimes(), Isis::OsirisRexOcamsCamera::ShutterOpenCloseTimes(), Isis::OsirisRexTagcamsCamera::ShutterOpenCloseTimes(), Isis::RosettaOsirisCamera::ShutterOpenCloseTimes(), Isis::TgoCassisCamera::ShutterOpenCloseTimes(), Isis::VikingCamera::ShutterOpenCloseTimes(), Isis::VoyagerCamera::ShutterOpenCloseTimes(), Isis::FramingCamera::ShutterOpenCloseTimes(), Isis::Camera::StartEndEphemerisTimes(), and Isis::UvvisCamera::UvvisCamera().

Member Data Documentation

◆ m_BJ

SpiceDouble Isis::Spice::m_BJ[3][3]
protected

This contains the transformation matrix from J2000 (J) to Body fixed (B).

Recall that the transpose of this matrix JB will convert from body-fixed to J2000. It is left in protected space so that conversions between double and SpiceDouble do not have to occur in inheriting classes.

◆ m_et

◆ m_solarLongitude

Longitude* Isis::Spice::m_solarLongitude
protected

Body rotation solar longitude value.

Referenced by computeSolarLongitude(), solarLongitude(), and ~Spice().

◆ m_target

Target* Isis::Spice::m_target
protected

◆ m_uB

SpiceDouble Isis::Spice::m_uB[3]
protected

This contains the sun position (u) in the bodyfixed reference frame (B).

It is left protected so that conversions between double and SpiceDouble do not have to occur in inheriting classes. Units are km

Referenced by Isis::Sensor::IncidenceAngle(), Isis::Camera::LocalPhotometricAngles(), Isis::Sensor::PhaseAngle(), setTime(), subSolarPoint(), and sunPosition().


The documentation for this class was generated from the following files: