Isis 3 Programmer Reference
|
Obtain SPICE information for a spacecraft. More...
#include <Spice.h>
Public Member Functions | |
Spice (Pvl &cubeLabel) | |
Constructs a Spice object and loads SPICE kernels using information from the label object. More... | |
Spice (Cube &cube) | |
Constructs a Spice object and loads SPICE kernels using information from the label object. More... | |
Spice (Cube &cube, bool noTables) | |
Constructs a Spice object. More... | |
virtual | ~Spice () |
Destroys the Spice object. More... | |
void | setTime (const iTime &time) |
Sets the ephemeris time and reads the spacecraft and sun position from the kernels at that instant in time. More... | |
void | instrumentPosition (double p[3]) const |
Returns the spacecraft position in body-fixed frame km units. More... | |
void | instrumentBodyFixedPosition (double p[3]) const |
Returns the spacecraft position in body-fixed frame km units. More... | |
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. More... | |
double | targetCenterDistance () const |
Calculates and returns the distance from the spacecraft to the target center. More... | |
Longitude | solarLongitude () |
Returns the solar longitude. More... | |
void | instrumentBodyFixedVelocity (double v[3]) const |
Returns the spacecraft velocity in body-fixed frame km/sec units. More... | |
iTime | time () const |
Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions. More... | |
void | radii (Distance r[3]) const |
Returns the radii of the body in km. More... | |
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. More... | |
iTime | cacheStartTime () const |
Accessor method for the cache start time. More... | |
iTime | cacheEndTime () const |
Accessor method for the cache end time. More... | |
void | subSpacecraftPoint (double &lat, double &lon) |
Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric) More... | |
void | subSolarPoint (double &lat, double &lon) |
Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric) More... | |
Target * | target () const |
Returns a pointer to the target object. More... | |
QString | targetName () const |
Returns the QString name of the target. More... | |
iTime | getClockTime (QString clockValue, int sclkCode=-1, bool clockTicks=false) |
This converts the spacecraft clock ticks value (clockValue) to an iTime. More... | |
SpiceDouble | getDouble (const QString &key, int index=0) |
This returns a value from the NAIF text pool. More... | |
SpiceInt | getInteger (const QString &key, int index=0) |
This returns a value from the NAIF text pool. More... | |
QString | getString (const QString &key, int index=0) |
This returns a value from the NAIF text pool. More... | |
SpicePosition * | sunPosition () const |
Accessor method for the sun position. More... | |
SpicePosition * | instrumentPosition () const |
Accessor method for the instrument position. More... | |
SpiceRotation * | bodyRotation () const |
Accessor method for the body rotation. More... | |
SpiceRotation * | instrumentRotation () const |
Accessor method for the instrument rotation. More... | |
bool | hasKernels (Pvl &lab) |
Returns true if the kernel group has kernel files. More... | |
bool | isTimeSet () |
Returns true if time has been initialized. More... | |
SpiceInt | naifBodyCode () const |
This returns the NAIF body code of the target indicated in the labels. More... | |
SpiceInt | naifSpkCode () const |
This returns the NAIF SPK code to use when reading from SPK kernels. More... | |
SpiceInt | naifCkCode () const |
This returns the NAIF CK code to use when reading from CK kernels. More... | |
SpiceInt | naifIkCode () const |
This returns the NAIF IK code to use when reading from instrument kernels. More... | |
SpiceInt | naifSclkCode () const |
This returns the NAIF SCLK code to use when reading from instrument kernels. More... | |
SpiceInt | naifBodyFrameCode () const |
This returns the NAIF body frame code. More... | |
PvlObject | getStoredNaifKeywords () const |
This returns the PvlObject that stores all of the requested Naif data and can be a replacement for furnishing text kernels. More... | |
virtual double | resolution () |
Virtual method that returns the pixel resolution of the sensor in meters/pix. More... | |
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. More... | |
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) |
Protected Attributes | |
SpiceDouble | m_uB [3] |
This contains the sun position (u) in the bodyfixed reference frame (B). More... | |
SpiceDouble | m_BJ [3][3] |
This contains the transformation matrix from J2000 (J) to Body fixed (B). More... | |
Private Member Functions | |
Spice (const Spice &other) | |
Spice & | operator= (const Spice &other) |
void | init (Pvl &lab, bool noTables) |
Initialization of Spice object. More... | |
void | load (PvlKeyword &key, bool notab) |
Loads/furnishes NAIF kernel(s) More... | |
void | computeSolarLongitude (iTime et) |
Computes the solar longitude for the given ephemeris time. More... | |
Private Attributes | |
Longitude * | m_solarLongitude |
Body rotation solar longitude value. More... | |
iTime * | m_et |
Ephemeris time (read NAIF documentation for a detailed description) More... | |
QVector< QString > * | m_kernels |
Vector containing kernels filenames. More... | |
Target * | m_target |
Target of the observation. More... | |
iTime * | m_startTime |
Corrected start (shutter open) time of the observation. More... | |
iTime * | m_endTime |
Corrected end (shutter close) time of the observation. More... | |
SpiceDouble * | m_cacheSize |
Cache size. Note: This value is 1 for Framing cameras. More... | |
SpiceDouble * | m_startTimePadding |
Kernels pvl group StartPadding keyword value. More... | |
SpiceDouble * | m_endTimePadding |
Kernels pvl group EndPadding keyword value. More... | |
SpicePosition * | m_instrumentPosition |
Instrument spice position. More... | |
SpiceRotation * | m_instrumentRotation |
Instrument spice rotation. More... | |
SpicePosition * | m_sunPosition |
Sun spice position. More... | |
SpiceRotation * | m_bodyRotation |
Body spice rotation. More... | |
bool | m_allowDownsizing |
Indicates whether to allow downsizing. More... | |
SpiceInt * | m_spkCode |
Spacecraft and planet ephemeris kernel (SPK) code. More... | |
SpiceInt * | m_ckCode |
Camera kernel (CK) code. More... | |
SpiceInt * | m_ikCode |
Instrument kernel (IK) code. More... | |
SpiceInt * | m_sclkCode |
Spacecraft clock correlation kernel (SCLK) code. More... | |
SpiceInt * | m_spkBodyCode |
Spacecraft and planet ephemeris kernel (SPK) body code. More... | |
SpiceInt * | m_bodyFrameCode |
Naif's BODY_FRAME_CODE value. More... | |
PvlObject * | m_naifKeywords |
NaifKeywords PvlObject from cube. More... | |
bool | m_usingNaif |
Indicates whether we are reading values from the NaifKeywords PvlObject in cube. More... | |
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:
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.
2003-05-16 Stuart Sides - Modified schema from astrogeology... isis.astrogeology...
2003-10-15 Jeff Anderson - Added requirement for frame kernel in labels
2003-10-28 Jeff Anderson - Changed SpaceCraft to Spacecraft in labels and method names
2003-11-03 Jeff Anderson - Added SubSolarPoint and SubSpacecraftPoint methods
2003-11-12 Jeff Anderson - Added Target method
2004-01-14 Jeff Anderson - Changed how the SPK, CK, and Instrument codes where handled. The instrument code must be in the labels as NaifFrameCode and then the other two can be automatically computed.
2004-02-18 Jeff Anderson - Modified to ignore kernel labels which were blank
2004-03-25 Jeff Anderson - Modified NaifBodyCode method to convert Jupiter target code of 599 to 5
2004-03-25 Jeff Anderson - Fixed bug in destructor and added GetString method.
2005-02-15 Elizabeth Ribelin - Modified file to support Doxygen documentation
2005-02-24 Jeff Anderson - Modified SubSolarPoint and SubSpacecraftPoint to return positive longitudes only
2005-09-12 Jeff Anderson - Check for case-insensitive values for TargetName of SKY
2005-09-20 Jeff Anderson - Added IsSky method
2006-01-05 Debbie A. Cook - Added units to comments
2006-03-28 Jeff Anderson - Refactored using SpiceRotation and SpicePosition classes. Added Tables and nadir kernel information.
2006-03-31 Elizabeth Miller - Added TargetCenterDistance method
2006-04-19 Elizabeth Miller - Added SolarLongitude method
2007-01-30 Tracie Sucharski - Throw error in the load method before calling furnish if the file does not exist.
2007-07-09 Steven Lambright - Frame kernel is now optional, added Extra kernel support.
2007-07-10 Debbie A. Cook - Modified method ComputeSolarLongitude to use pxform instead of tipbod to get body-fixed to J2000 rotation matrix so that the correct frame will be used. If the frame is different from the default IAU frame, the correct frame should be set in the iak file (see frames.req). Also modified setting of m_bodyRotation frameCode. The old code forced the IAU_ frame. The new code uses the Naif routine cidfrm to get the frame associated with the body id. These change will recognize any frame changes made in the iak file.
2007-08-10 Steven Lambright - Added support for Nadir keyword in InstrumentPointing group to not be the first element in the PvlKeyword.
2007-08-24 Debbie A. Cook - Removed p_sB so it is recalculated every time it is used insuring that any updates to the position or rotation are applied. Also removed p_BP since it is no longer used
2008-02-13 Steven Lambright - Added StartPadding and EndPadding caching capabilties
2008-02-13 Steven Lambright - Added Support Check for StartPadding and EndPadding caching capabilties; An clarified exception is thrown if a framing camera tries to use time padding
2008-02-27 Kris Becker - Modified so that planetary ephemeris SPKs are loaded before spacecraft SPKs so that missions that augment planet ephemerides will take precidence.
2008-06-23 Steven Lambright - Added NaifStatus error checking
2008-06-25 Debbie A. Cook - Added method InstrumentVelocity to support miniRF
2008-11-28 Debbie A. Cook - Added method hasKernels()
2009-03-18 Tracie Sucharski - Cleaned up some unnecessary, obsolete code. Make sure the table is used if the kernel names follow the "Table" keyword value, due to change made to spiceinit to retain kernel names if the spice is written to blob.
2009-06-18 Debbie A. Cook - Modified to downsize instrument rotation table when loading cache
2009-07-01 Debbie A. Cook - Modified to downsize body rotation, and sun position tables when loading cache
2009-08-03 Debbie A. Cook - Added tolerance argument to method CreateCache to allow downsizing of instrument position Spice table.
2009-08-21 Kris Becker - Moved the NAIF code methods to public scope.
2010-01-29 Debbie A. Cook - Redid Tracie's change to make sure the table is loaded instead of the kernels if the kernel keyword value lists "Table" before the kernel files.
2010-03-19 Debbie A. Cook - Added constructor and moved common constructor initialization into new method Init. Also added parameter notab to method Load.
2010-04-09 Debbie A. Cook - Moved the loading of the "extra" kernel(s) from the middle of the loads to the end.
2011-02-08 Jeannie Walldren - Added documentation to methods and private variables. Commented out createCache(double,double) since it appears that this method is not needed. Initialize pointers to NULL in Init() method.
2011-02-09 Steven Lambright - Refactored to use iTime where possible. Changed p_radii to a Distance so the units are no longer ambiguous. These changes were meant for readability and reducing the likelyhood of future code having bugs due to unit mismatches.
2011-02-11 Jeannie Walldren - Changed documentation references to SetEphemerisTime() method (these were replaced with references to setTime()). Added missing documentation to new methods.
2011-05-03 Jeannie Walldren - Added Isis Disclaimer to files.
2011-05-25 Janet Barrett and Steven Lambright - Added API that stores naif values and arbitrary computations so that the text kernels do not have to be furnished. This makes the Camera instantiation much, much quicker. Text kernels are no longer furnished when their data has been stored in the labels.
2011-05-26 Debbie A. Cook - Put back the code for spkwriter that was checked in May 25 but disappeared in the May 26 build. This code turns aberration corrections off for the instrument position if the spk file was created by spkwriter.
2011-07-08 Jeff Anderson - Fixed Init method to record the integer body frame code in the labels of the cube. Vesta exposed this problem because it was not a instrinsic body in the NAIF toolkit version 63.
2011-07-11 Jeff Anderson - Added private copy constructors and operator= methods
2011-09-19 Debbie Cook - Added cubes with Ideal Cameras to the exclusion list for reading instrument keywords from the label. The Ideal Camera has variable values for the affine coefficients that are set in the camera itself and not read from a kernel. The camera puts these values into the Naif kernel pool.
2012-07-06 Debbie A. Cook, Updated Spice members to be more compliant with Isis coding standards. References #972.
2012-09-10 Steven Lambright - Undid Debbie's change from 2011-09-19 because the Ideal camera now supports putting those keywords in the label on the fly. References #1094.
2012-10-11 Debbie A. Cook - Deleted deprecated createCache code already commented out for over a year. Updated to use new Target and ShapeModel classes. Added resolution method needed for Target and its ShapeModel. Changed private member names from p_ to m_ to comply with coding standards. References Mantis tickets #775 and #1114.
2012-10-25 Jeannie Backer - Added accesssor method to return the BODY_FRAME_CODE value found in the init() method. Improved unitTest coverage in all areas. New method has 100% scope, line, function coverage. Improved padding around control statements and indentation of history entries to be more compliant with standards. Moved accessor method implementations to cpp file. Changed Resolution() method to lower camel case. Added documentation. Fixes #1181.
2012-10-31 Kris Becker - Added implementation for swapping of observer/target and light time correction to surface. Fixes (mostly) #0909, #1136 and #1223.
2012-12-10 Kris Becker - A newly designed class, SpacecraftPosition, is now being instantiated instead of SpicePosition specifically to properly order NAIF observer and target codes (to more accurately determine the target body position at the time the observation was initiated) and help determine light time correction to the surface of the target body instead of the center of the body. See the documention in SpacecraftPosition.h for a more detailed description of these changes. References #909, #1136 and #1223.
2013-01-09 Steven Lambright and Mathew Eis - Fixed a possible crash condition that never exhibited any problems, but valgrind caught it. This was discovered when adding support for Mac OSX 10.8. References #1354.
2013-09-26 Tracie Sucharski - If the Target is Saturn and the shape model is the ring plane, load an extra kernel, saturnRings_v001.tpc, which changes the prime meridian to {0, 0, 0}. This insures the longitude values are calculated in the inertial system relative to the ascending node of the ring plane. Fixes #1757.
2013-12-17 Janet Barrett - Added the instrumentBodyFixedPosition and instrumentBodyFixedVelocity methods. Fixes #1684.
2015-04-30 Stuart - Added an error check around the NAIF SPICE call scs2e_c in getClockTime. Avoids a segfault. Fixes #2247.
2015-07-21 Kristin Berry - Added additional NaifStatus::CheckErrors() to see if any NAIF errors were signaled. References #2248.
2016-05-18 Jeannie Backer and Stuart Sides - Moved the construction of the Target after the NAIF kernels have been loaded or the NAIF keywords have been pulled from the cube labels, so we can find target body codes that are defined in kernels and not just body codes build into spicelib. References #3934
2016-10-19 Kristin Berry - Added exception to Spice::time() to throw if m_et is NULL. Also added isTimeSet(), a function that will return true if m_et is set. References #4476.
2016-10-21 Jeannie Backer - Reorder method signatures and member variable declarations to fit ISIS coding standards. References #4476.
2018-06-07 Debbie A Cook - Added BODY_CODE to Naif keywords. This code is used in the target body radii keyword name. Isis retrieves this code from the standard PCK. Because target bodies new to Naif are not included in the standard PCK, missions create a special body-specific PCK to define the new body, including its body code. This PCK is only loaded in spiceinit so the code needs to be saved so that the radii keyword can be created to retrieve the target radii.
2019-04-16 Kristin Berry - Added a parameter to getClockTime called clockTicks which defaults to false. When set to true, this indicates that the input value is in encoded clock ticks, rather than a full spacecraft clock time string. As such, when used sct2e_c is used to convert to an ET rather than scs2e_c.
|
protected |
Isis::Spice::Spice | ( | Pvl & | lab | ) |
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.
lab | Label containing Instrument and Kernels groups. |
Definition at line 59 of file Spice.cpp.
References Isis::PvlObject::findGroup().
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.
lab | Label containing Instrument and Kernels groups. |
2005-10-07 Jim Torson - Modified the constructor so it can handle multiple SpacecraftPosition and multiple SpacecraftPointing kernel files
2005-11-29 Debbie A. Cook - Added loop to allow multiple frames kernels and code to initialize Naif codes when no platform is used (landers)
2006-01-03 Debbie A. Cook - Added loop to allow multiple spacecraft clock kernels (for Viking)
2006-02-21 Jeff Anderson/Debbie Cook - Refactor to use SpicePosition and SpiceRotation classes
2009-03-18 Tracie Sucharski - Remove code for old keywords.
Definition at line 89 of file Spice.cpp.
References Isis::PvlObject::findGroup(), and Isis::Cube::label().
Isis::Spice::Spice | ( | Cube & | cube, |
bool | noTables | ||
) |
Constructs a Spice object.
lab | Pvl labels. |
noTables | Indicates the use of tables. |
Definition at line 103 of file Spice.cpp.
References Isis::Cube::label().
|
virtual |
Destroys the Spice object.
Definition at line 435 of file Spice.cpp.
References Isis::FileName::expanded().
SpiceRotation * Isis::Spice::bodyRotation | ( | ) | const |
Accessor method for the body rotation.
Definition at line 1478 of file Spice.cpp.
Referenced by Isis::Sensor::computeRaDec(), Isis::Sensor::EmissionAngle(), Isis::RadarGroundMap::GetdXYdPosition(), Isis::RadarGroundMap::GetXY(), Isis::Camera::LocalPhotometricAngles(), Isis::Sensor::lookDirectionJ2000(), Isis::Sensor::PhaseAngle(), Isis::RadarGroundMap::SetFocalPlane(), Isis::RadarGroundMap::SetGround(), Isis::Sensor::SetGround(), Isis::Sensor::SetGroundLocal(), Isis::Sensor::SetLookDirection(), Isis::Sensor::SetUniversalGround(), and Isis::Sensor::SlantDistance().
iTime Isis::Spice::cacheEndTime | ( | ) | const |
iTime Isis::Spice::cacheStartTime | ( | ) | const |
|
private |
Computes the solar longitude for the given ephemeris time.
If the target is sky, the longitude is set to -999.0.
et | Ephemeris time |
Definition at line 1311 of file Spice.cpp.
References Isis::iTime::Et(), and Isis::Longitude::force360Domain().
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().
startTime | Starting ephemeris time to cache |
endTime | Ending ephemeris time to cache |
size | Size of the cache. |
tol | Tolerance. |
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" |
Definition at line 574 of file Spice.cpp.
References _FILEINFO_, Isis::iTime::Et(), and Isis::FileName::expanded().
Referenced by Isis::CrismCamera::CrismCamera(), and Isis::Camera::LoadCache().
iTime Isis::Spice::getClockTime | ( | QString | clockValue, |
int | sclkCode = -1 , |
||
bool | clockTicks = false |
||
) |
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.
Definition at line 977 of file Spice.cpp.
References 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::VimsSkyMap::Init(), Isis::VimsGroundMap::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::NewHorizonsLeisaCamera::NewHorizonsLeisaCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::NewHorizonsMvicTdiCamera::NewHorizonsMvicTdiCamera(), Isis::OsirisRexOcamsCamera::OsirisRexOcamsCamera(), Isis::RosettaVirtisCamera::readHouseKeeping(), Isis::DawnVirCamera::readHouseKeeping(), Isis::RosettaVirtisCamera::readSCET(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), Isis::ThemisVisCamera::ThemisVisCamera(), Isis::VikingCamera::VikingCamera(), and Isis::VimsCamera::VimsCamera().
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
key | Name of NAIF keyword to obtain from the pool |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::iException::Io | - "Can not find key in instrument kernels." |
Definition at line 963 of file Spice.cpp.
Referenced by Isis::LroWideAngleCameraFocalPlaneMap::addFilter(), Isis::LroWideAngleCameraDistortionMap::addFilter(), Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::ApolloPanoramicCamera::ApolloPanoramicCamera(), Isis::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), Isis::MdisCamera::computeFocalLength(), 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::CameraFocalPlaneMap::Init(), 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::MsiCamera::MsiCamera(), Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera(), Isis::NewHorizonsMvicFrameCamera::NewHorizonsMvicFrameCamera(), Isis::NewHorizonsMvicTdiCamera::NewHorizonsMvicTdiCamera(), Isis::NirCamera::NirCamera(), Isis::OsirisRexOcamsCamera::OsirisRexOcamsCamera(), Isis::RosettaOsirisCamera::RosettaOsirisCamera(), Isis::RosettaVirtisCamera::RosettaVirtisCamera(), Isis::KaguyaMiCameraDistortionMap::SetDistortion(), Isis::TaylorCameraDistortionMap::SetDistortion(), Isis::LroNarrowAngleDistortionMap::SetDistortion(), Isis::Camera::SetFocalLength(), Isis::Camera::SetPixelPitch(), Isis::SsiCamera::SsiCamera(), Isis::TgoCassisCamera::TgoCassisCamera(), Isis::TgoCassisDistortionMap::TgoCassisDistortionMap(), and Isis::UvvisCamera::UvvisCamera().
SpiceInt Isis::Spice::getInteger | ( | const QString & | key, |
int | index = 0 |
||
) |
This returns a value from the NAIF text pool.
It is a static convience
key | Name of NAIF keyword to obtain from the pool |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::iException::Io | - "Can not find key in instrument kernels |
Definition at line 949 of file Spice.cpp.
Referenced by Isis::RosettaVirtisCamera::getPointingTable(), Isis::DawnVirCamera::getPointingTable(), Isis::LroWideAngleCamera::GetVector(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), and Isis::LroWideAngleCamera::LroWideAngleCamera().
PvlObject Isis::Spice::getStoredNaifKeywords | ( | ) | const |
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
key | Name of NAIF keyword to obtain from the pool |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::IException::Io | - "Can not find key in instrument kernels." |
Definition at line 1185 of file Spice.cpp.
Referenced by Isis::LightTimeCorrectionState::checkAberrationCorrection(), Isis::LightTimeCorrectionState::checkLightTimeToSurfaceCorrect(), Isis::LightTimeCorrectionState::checkObserverTargetSwap(), Isis::MdisCamera::computeFocalLength(), Isis::MdisCamera::MdisCamera(), and Isis::NewHorizonsLorriCamera::NewHorizonsLorriCamera().
bool Isis::Spice::hasKernels | ( | Pvl & | lab | ) |
Returns true if the kernel group has kernel files.
lab | Label containing Instrument and Kernels groups. |
Definition at line 1393 of file Spice.cpp.
References Isis::PvlObject::findGroup(), Isis::PvlContainer::hasKeyword(), and Isis::PvlKeyword::size().
|
private |
Initialization of Spice object.
lab | Pvl labels |
noTables | Indicates the use of tables. |
Isis::IException::Io | - "Can not find NAIF code for NAIF target" |
Isis::IException::Camera | - "No camera pointing available" |
Isis::IException::Camera | - "No instrument position available" |
Definition at line 120 of file Spice.cpp.
References _FILEINFO_, Isis::LightTimeCorrectionState::checkSpkKernelsForAberrationCorrection(), Isis::PvlContainer::fileName(), Isis::PvlObject::findGroup(), Isis::PvlObject::findObject(), Isis::PvlContainer::hasKeyword(), Isis::PvlObject::hasObject(), Isis::toDouble(), Isis::toInt(), and Isis::toString().
void Isis::Spice::instrumentBodyFixedPosition | ( | double | p[3] | ) | const |
Returns the spacecraft position in body-fixed frame km units.
p[] | Spacecraft position |
Isis::iException::Programmer | - "You must call SetTime first" |
Definition at line 760 of file Spice.cpp.
References _FILEINFO_.
void Isis::Spice::instrumentBodyFixedVelocity | ( | double | v[3] | ) | const |
Returns the spacecraft velocity in body-fixed frame km/sec units.
v[] | Spacecraft velocity |
Definition at line 778 of file Spice.cpp.
References _FILEINFO_.
void Isis::Spice::instrumentPosition | ( | double | p[3] | ) | const |
Returns the spacecraft position in body-fixed frame km units.
p[] | Spacecraft position |
Isis::iException::Programmer | - "You must call SetTime first" |
Definition at line 747 of file Spice.cpp.
Referenced by Isis::RadarGroundMap::GetdXYdPosition(), Isis::RadarGroundMap::GetXY(), Isis::RadarGroundMap::SetFocalPlane(), Isis::RadarGroundMap::SetGround(), and Isis::AdvancedTrackTool::updateRow().
SpicePosition * Isis::Spice::instrumentPosition | ( | ) | const |
Accessor method for the instrument position.
Definition at line 1467 of file Spice.cpp.
Referenced by Isis::Camera::DetectorResolution(), Isis::Sensor::EmissionAngle(), Isis::Camera::LocalPhotometricAngles(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::Camera::OffNadirAngle(), Isis::Sensor::PhaseAngle(), Isis::Sensor::SetGround(), Isis::Sensor::SetGroundLocal(), Isis::Sensor::SetLookDirection(), Isis::Sensor::SetUniversalGround(), Isis::Sensor::SlantDistance(), and Isis::Sensor::SpacecraftAltitude().
SpiceRotation * Isis::Spice::instrumentRotation | ( | ) | const |
Accessor method for the instrument rotation.
Definition at line 1489 of file Spice.cpp.
Referenced by Isis::DawnVirCamera::DawnVirCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::JunoCamera::JunoCamera(), Isis::Sensor::LookDirection(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::RosettaVirtisCamera::readSCET(), Isis::RosettaVirtisCamera::RosettaVirtisCamera(), Isis::RadarGroundMap::SetFocalPlane(), Isis::Sensor::SetLookDirection(), Isis::Sensor::SetRightAscensionDeclination(), and Isis::TgoCassisCamera::TgoCassisCamera().
bool Isis::Spice::isTimeSet | ( | ) |
Returns true if time has been initialized.
Definition at line 1444 of file Spice.cpp.
Referenced by Isis::CameraDetectorMap::SetParent().
|
private |
Loads/furnishes NAIF kernel(s)
key | PvlKeyword |
noTables | Indicates the use of tables. |
Isis::IException::Io | - "Spice file does not exist." |
Definition at line 410 of file Spice.cpp.
References _FILEINFO_, Isis::FileName::expanded(), Isis::FileName::fileExists(), and Isis::PvlKeyword::size().
SpiceInt Isis::Spice::naifBodyCode | ( | ) | const |
This returns the NAIF body code of the target indicated in the labels.
Definition at line 866 of file Spice.cpp.
Referenced by Isis::Camera::SpkCenterId().
SpiceInt Isis::Spice::naifBodyFrameCode | ( | ) | const |
SpiceInt Isis::Spice::naifCkCode | ( | ) | const |
SpiceInt Isis::Spice::naifIkCode | ( | ) | const |
This returns the NAIF IK code to use when reading from instrument kernels.
Definition at line 893 of file Spice.cpp.
Referenced by Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::ApolloPanoramicCamera::ApolloPanoramicCamera(), Isis::Chandrayaan1M3Camera::Chandrayaan1M3Camera(), 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::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::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().
SpiceInt Isis::Spice::naifSclkCode | ( | ) | const |
This returns the NAIF SCLK code to use when reading from instrument kernels.
Definition at line 903 of file Spice.cpp.
Referenced by Isis::CrismCamera::CrismCamera().
SpiceInt Isis::Spice::naifSpkCode | ( | ) | const |
This returns the NAIF SPK code to use when reading from SPK kernels.
Definition at line 875 of file Spice.cpp.
Referenced by Isis::RosettaVirtisCamera::readHouseKeeping(), Isis::DawnVirCamera::readHouseKeeping(), Isis::RosettaVirtisCamera::readSCET(), and Isis::Camera::SpkTargetId().
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.
r[] | Radii of the target in kilometers |
Definition at line 855 of file Spice.cpp.
Referenced by Isis::Camera::BasicMapping(), Isis::Camera::GroundRange(), Isis::VimsGroundMap::Init(), Isis::ControlPointEditWidget::openReferenceRadius(), Isis::QnetTool::openReferenceRadius(), Isis::SunShadowTool::recalculateShadowHeight(), Isis::RadarGroundMap::SetFocalPlane(), and Isis::AdvancedTrackTool::updateRow().
|
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.
key | The naif keyword,value name |
type | The naif value's primitive type |
index | The index into the naif keyword array to read |
Definition at line 1017 of file Spice.cpp.
References _FILEINFO_.
Referenced by Isis::IdealCamera::IdealCamera().
|
virtual |
Virtual method that returns the pixel resolution of the sensor in meters/pix.
Reimplemented in Isis::Camera, and Isis::Sensor.
void Isis::Spice::setTime | ( | const iTime & | et | ) |
Sets the ephemeris time and reads the spacecraft and sun position from the kernels at that instant in time.
et | Ephemeris time (read NAIF documentation for a detailed description) |
2005-11-29 Debbie A. Cook - Added alternate code for processing instruments without a platform
2011-02-09 Steven Lambright - Changed name from SetEphemerisTime()
Definition at line 705 of file Spice.cpp.
References Isis::iTime::Et().
Referenced by Isis::Sensor::setTime().
Longitude Isis::Spice::solarLongitude | ( | ) |
Returns the solar longitude.
Definition at line 1376 of file Spice.cpp.
Referenced by Isis::AdvancedTrackTool::updateRow().
void Isis::Spice::subSolarPoint | ( | double & | lat, |
double & | lon | ||
) |
Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric)
lat | Sub-solar latitude |
lon | Sub-solar longitude |
Isis::IException::Programmer | - "You must call SetTime first." |
Definition at line 1251 of file Spice.cpp.
References _FILEINFO_, and Isis::PI.
Referenced by Isis::Sensor::LocalSolarTime(), and Isis::Camera::SunAzimuth().
void Isis::Spice::subSpacecraftPoint | ( | double & | lat, |
double & | lon | ||
) |
Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric)
lat | Sub-spacecraft latitude |
lon | Sub-spacecraft longitude |
Isis::IException::Programmer | - "You must call SetTime first." |
Definition at line 1202 of file Spice.cpp.
References _FILEINFO_, and Isis::PI.
Referenced by Isis::Camera::GroundRangeResolution(), Isis::Sensor::SpacecraftAltitude(), and Isis::Camera::SpacecraftAzimuth().
void Isis::Spice::sunPosition | ( | double | p[3] | ) | const |
Fills the input vector with sun position information, in either body-fixed or J2000 reference frame and km units.
p[] | Sun position |
Definition at line 827 of file Spice.cpp.
References _FILEINFO_.
Referenced by Isis::SunShadowTool::recalculateShadowHeight().
SpicePosition * Isis::Spice::sunPosition | ( | ) | const |
Accessor method for the sun position.
Definition at line 1456 of file Spice.cpp.
Referenced by Isis::Sensor::SolarDistance().
Target * Isis::Spice::target | ( | ) | const |
Returns a pointer to the target object.
Definition at line 1290 of file Spice.cpp.
Referenced by Isis::Camera::BasicMapping(), Isis::Camera::basicRingMapping(), Isis::Sensor::Coordinate(), Isis::Sensor::EmissionAngle(), Isis::FeatureNomenclatureTool::findMissingNomenclature(), Isis::Sensor::GetLatitude(), Isis::Camera::GetLocalNormal(), Isis::Sensor::GetLongitude(), Isis::Sensor::GetSurfacePoint(), Isis::UniversalGroundMap::GroundRange(), Isis::Camera::GroundRangeResolution(), Isis::Sensor::HasSurfaceIntersection(), Isis::Sensor::IgnoreElevationModel(), Isis::ImportImagesWorkOrder::importConfirmedImages(), Isis::Sensor::IncidenceAngle(), Isis::Camera::LoadCache(), Isis::Sensor::LocalRadius(), Isis::Camera::NorthAzimuth(), Isis::Sensor::PhaseAngle(), Isis::Camera::RawFocalPlanetoImage(), Isis::VimsGroundMap::SetGround(), Isis::Sensor::SetGround(), Isis::Camera::SetGround(), Isis::Sensor::SetGroundLocal(), Isis::Camera::SetImage(), Isis::Sensor::SetLookDirection(), Isis::Camera::SetRightAscensionDeclination(), Isis::Sensor::setTime(), Isis::Sensor::SetUniversalGround(), Isis::Camera::SetUniversalGround(), Isis::Sensor::SlantDistance(), Isis::Sensor::SolarDistance(), Isis::TrackTool::updateLabels(), and Isis::AdvancedTrackTool::updateRow().
double Isis::Spice::targetCenterDistance | ( | ) | const |
QString Isis::Spice::targetName | ( | ) | const |
Returns the QString name of the target.
Definition at line 1300 of file Spice.cpp.
References Isis::Target::name().
iTime Isis::Spice::time | ( | ) | const |
Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions.
IException::Programmer | "Unable to retrieve the time Spice::setTime must be called first." |
Definition at line 809 of file Spice.cpp.
References _FILEINFO_.
Referenced by Isis::RadarSlantRangeMap::ComputeA(), Isis::HiresCamera::HiresCamera(), Isis::KaguyaTcCamera::KaguyaTcCamera(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::LwirCamera::LwirCamera(), Isis::NewHorizonsMvicFrameCamera::SetBand(), Isis::LineScanCameraDetectorMap::SetDetector(), Isis::VariableLineScanCameraDetectorMap::SetDetector(), Isis::RadarPulseMap::SetDetector(), Isis::RadarSlantRangeMap::SetFocalPlane(), Isis::CameraDetectorMap::SetParent(), Isis::Sensor::setTime(), Isis::RadarSlantRangeMap::SetUndistortedFocalPlane(), Isis::Hyb2OncCamera::ShutterOpenCloseTimes(), Isis::JunoCamera::ShutterOpenCloseTimes(), Isis::MsiCamera::ShutterOpenCloseTimes(), Isis::OsirisRexOcamsCamera::ShutterOpenCloseTimes(), Isis::HayabusaAmicaCamera::ShutterOpenCloseTimes(), Isis::FramingCamera::ShutterOpenCloseTimes(), Isis::DawnFcCamera::ShutterOpenCloseTimes(), Isis::NewHorizonsLorriCamera::ShutterOpenCloseTimes(), Isis::RosettaOsirisCamera::ShutterOpenCloseTimes(), Isis::HayabusaNirsCamera::ShutterOpenCloseTimes(), Isis::Mariner10Camera::ShutterOpenCloseTimes(), Isis::NewHorizonsMvicFrameCamera::ShutterOpenCloseTimes(), Isis::ApolloMetricCamera::ShutterOpenCloseTimes(), Isis::SsiCamera::ShutterOpenCloseTimes(), Isis::VoyagerCamera::ShutterOpenCloseTimes(), Isis::LoHighCamera::ShutterOpenCloseTimes(), Isis::HiresCamera::ShutterOpenCloseTimes(), Isis::LwirCamera::ShutterOpenCloseTimes(), Isis::VikingCamera::ShutterOpenCloseTimes(), Isis::IssNACamera::ShutterOpenCloseTimes(), Isis::IssWACamera::ShutterOpenCloseTimes(), Isis::NirCamera::ShutterOpenCloseTimes(), Isis::LoMediumCamera::ShutterOpenCloseTimes(), Isis::TgoCassisCamera::ShutterOpenCloseTimes(), Isis::UvvisCamera::ShutterOpenCloseTimes(), Isis::MdisCamera::ShutterOpenCloseTimes(), Isis::Camera::StartEndEphemerisTimes(), Isis::AdvancedTrackTool::updateRow(), and Isis::UvvisCamera::UvvisCamera().
|
private |
|
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.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
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
Definition at line 377 of file Spice.h.
Referenced by Isis::Sensor::IncidenceAngle(), Isis::Camera::LocalPhotometricAngles(), and Isis::Sensor::PhaseAngle().
|
private |