File failed to load: https://isis.astrogeology.usgs.gov/6.0.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
KernelDb.cpp
1 
7 /* SPDX-License-Identifier: CC0-1.0 */
8 
9 #include "KernelDb.h"
10 
11 #include <iomanip>
12 #include <queue>
13 
14 #include "CameraFactory.h"
15 #include "FileName.h"
16 #include "IException.h"
17 #include "IString.h"
18 #include "iTime.h"
19 #include "Kernel.h"
20 #include "Preference.h"
21 #include "Preference.h"
22 #include "PvlGroup.h"
23 #include "PvlKeyword.h"
24 #include "PvlObject.h"
25 
26 using namespace std;
27 namespace Isis {
48  KernelDb::KernelDb(const unsigned int allowedKernelTypes) {
49  m_filename = "None";
50  m_allowedKernelTypes = allowedKernelTypes;
51  m_kernelDbFiles.clear();
52  }
53 
54 
76  KernelDb::KernelDb(const QString &dbName, const unsigned int allowedKernelTypes) :
77  m_kernelData(dbName) {
78  m_filename = dbName;
79  m_allowedKernelTypes = allowedKernelTypes;
80  m_kernelDbFiles.clear();
81  }
82 
83 
105  KernelDb::KernelDb(std::istream &dbStream, const unsigned int allowedKernelTypes) {
106  dbStream >> m_kernelData;
107  m_filename = "internal stream";
108  m_allowedKernelTypes = allowedKernelTypes;
109  m_kernelDbFiles.clear();
110  }
111 
116  }
117 
135  return findLast("LeapSecond", lab);
136  }
137 
138 
156  return findLast("TargetAttitudeShape", lab);
157  }
158 
159 
177  return findLast("TargetPosition", lab);
178  }
179 
180 
198  return findAll("SpacecraftPointing", lab);
199  }
200 
201 
218  return findLast("SpacecraftClock", lab);
219  }
220 
221 
239  return findLast("SpacecraftPosition", lab);
240  }
241 
242 
260  return findLast("Instrument", lab);
261  }
262 
263 
281  return findLast("Frame", lab);
282  }
283 
301  return findLast("InstrumentAddendum", lab);
302  }
303 
304 
322  return findLast("Dem", lab);
323  }
324 
338  Kernel KernelDb::findLast(const QString &entry, Pvl &lab) {
339 
340  QList< priority_queue<Kernel> > queues = findAll(entry, lab);
341  Kernel lastKernel;
342 
343  if (queues.size() > 0 && queues.at(0).size() > 0) {
344  lastKernel = queues.at(0).top();
345  }
346 
347  return lastKernel;
348  }
349 
366  Pvl &lab) {
367 
369  PvlObject &cube = lab.findObject("IsisCube");
370  int cameraVersion = -1;
371 
372  try {
373  cameraVersion = CameraFactory::CameraVersion(lab);
374  }
375  catch (IException &) {
376  }
377 
378  // Make sure the entry has been loaded into memory
379  if (!m_kernelData.hasObject(entry)) {
380  priority_queue<Kernel> emptyKernelQueue;
381  emptyKernelQueue.push(Kernel());
382  queues.push_back(emptyKernelQueue);
383  return queues;
384  }
385 
386  // Get the start and end time for the cube
387  iTime start;
388  iTime end;
389 
390  if (cube.hasGroup("Instrument")) {
391  start = (QString) cube.findGroup("Instrument")["StartTime"];
392 
393  if (cube.findGroup("Instrument").hasKeyword("StopTime")) {
394  end = ((QString) cube.findGroup("Instrument")["StopTime"]);
395  }
396  else {
397  end = ((QString) cube.findGroup("Instrument")["StartTime"]);
398  }
399  }
400 
401  // Loop through the objects to look for all matches to the entry value
402  for (int i = 0; i < m_kernelData.objects(); i++) {
403  if (m_kernelData.object(i).isNamed(entry)) {
404  priority_queue<Kernel> filesFound;
405  PvlObject &obj = m_kernelData.object(i);
406 
407  for (int groupIndex = obj.groups() - 1; groupIndex >= 0; groupIndex--) {
408  // Get the group and start testing the cases in the keywords
409  // to see if they all match this cube
410  PvlGroup &grp = obj.group(groupIndex);
411 
412  // If the group name isn't selection, skip it.
413  if (!grp.isNamed("Selection")) continue;
414 
415  QString type = "";
416 
417  // Make sure the type is allowed
418  if (grp.hasKeyword("Type")) {
419  type = (QString) grp["Type"];
420  if (!(Kernel::typeEnum(type) & m_allowedKernelTypes)) {
421  // will return 1 for each bit that has 1 in both type and allowed and
422  // return 0 for all other bits
423  //
424  // so, if Type = 0010 and allowed = 1010, then this bitwise operator
425  // (type & allowed) returns 0010 and is true.
426  // That is, this type is allowed.
427  continue;
428  }
429  }
430 
431  bool startMatches = matches(lab, grp, start, cameraVersion);
432  bool endMatches = matches(lab, grp, end, cameraVersion);
433 
434  if (startMatches && endMatches) {
435  // Simple case - the selection simply matches
436  filesFound.push(Kernel(Kernel::typeEnum(type), files(grp)));
437  QStringList kernelfiles = files(grp);
438  }
439  else if (startMatches) {
440  // Well, the selection start matched but not the end.
441  // Let's look for a second selection to handle overlap areas.
442  for (int endTimeIndex = obj.groups() - 1;
443  endTimeIndex >= 0;
444  endTimeIndex--) {
445 
446  PvlGroup &endTimeGrp = obj.group(endTimeIndex);
447 
448  // The second selection must:
449  // Not be the current selection
450  // Be a selection
451  // Be of the same quality
452  // Match the end time
453  //
454  // *If start time is also matched, do not merge and simply take the
455  // secondary match
456  if (endTimeIndex == groupIndex) continue;
457  if (!endTimeGrp.isNamed("Selection")) continue;
458  if (grp.hasKeyword("Type") != endTimeGrp.hasKeyword("Type")) continue;
459  if (grp.hasKeyword("Type") &&
460  grp["Type"] != endTimeGrp["Type"]) continue;
461  if (!matches(lab, endTimeGrp, end, cameraVersion)) continue;
462 
463  // Better match is true if we find a full overlap
464  bool betterMatch = false;
465 
466  // True if we have matching time ranges = we want to merge
467  bool endTimesMatch = true;
468 
469  // Check for matching time ranges
470  for (int keyIndex = 0;
471  !betterMatch && keyIndex < grp.keywords();
472  keyIndex++) {
473  PvlKeyword &key = grp[keyIndex];
474 
475  if (!key.isNamed("Time")) continue;
476 
477  iTime timeRangeStart((QString)key[0]);
478  iTime timeRangeEnd((QString)key[1]);
479 
480  bool thisEndMatches = matches(lab, endTimeGrp,
481  timeRangeEnd, cameraVersion);
482  endTimesMatch = endTimesMatch && thisEndMatches;
483 
484  if (matches(lab, endTimeGrp, start, cameraVersion)
485  && matches(lab, endTimeGrp, end, cameraVersion)) {
486  // If we run into a continuous kernel, we want to take that in all
487  // cases.
488  betterMatch = true;
489  }
490  }
491 
492  // No exact match but time ranges overlap, merge the selections
493  if (!betterMatch && endTimesMatch) {
494  QStringList startMatchFiles = files(grp);
495  QStringList endMatchFiles = files(endTimeGrp);
496 
497  while (endMatchFiles.size()) {
498  startMatchFiles.push_back(endMatchFiles[endMatchFiles.size() - 1]);
499  endMatchFiles.pop_back();
500  }
501 
502  filesFound.push(
503  Kernel(Kernel::typeEnum(type), startMatchFiles));
504  }
505  // Found an exact match, use it
506  else if (betterMatch) {
507  filesFound.push(Kernel(Kernel::typeEnum(type), files(endTimeGrp)));
508  QStringList kernelfiles = files(endTimeGrp);
509  }
510  }
511  }
512  }
513 
514  queues.push_back(filesFound);
515  }
516  }
517 
518  if (queues.size() == 0) {
519  priority_queue<Kernel> emptyKernelQueue;
520  emptyKernelQueue.push(Kernel());
521  queues.push_back(emptyKernelQueue);
522  }
523 
524  return queues;
525  }
526 
570  bool KernelDb::matches(const Pvl &lab, PvlGroup &grp,
571  iTime timeToMatch, int cameraVersion) {
572  // These are the conditions that make this test pass:
573  // 1) No time OR At least one matching time
574  // 2) All keyword matches are true OR No keyword matches present
575  //
576  // In order to accomplish this, matchTime is initialized to true and remains
577  // as such if and only if there are no time conditionals. If Time keywords
578  // exist, one of them has to set matchTime to true. The matchKeywords is
579  // true until a mismatch is found.
580  const PvlObject &cube = lab.findObject("IsisCube");
581  bool matchTime = !grp.hasKeyword("Time");
582  bool matchKeywords = true;
583 
584  // First, the time search. Loop through the keywords, if the name isn't
585  // Time then skip it. If it is, then get the start/end times and keep
586  // looking until one is found.
587  for (int keyword = 0; keyword < grp.keywords(); keyword++) {
588  PvlKeyword key = grp[keyword];
589 
590  if (key.isNamed("Time")) {
591  // Pull the selections start and end time out
592  iTime kernelStart = (QString) key[0];
593  iTime kernelEnd = (QString) key[1];
594 
595  // If the kernel times inside of the requested times we
596  // set the matchTime to be true.
597  if ((kernelStart <= timeToMatch) && (kernelEnd >= timeToMatch)) {
598  matchTime = true;
599  }
600  }
601  else if (key.isNamed("Match")) {
602  try {
603  QString matchGroup = key[0];
604  QString matchKey = key[1];
605  QString matchValue = key[2];
606 
607  QString cubeValue = cube.findGroup(matchGroup)[matchKey];
608  cubeValue = cubeValue.simplified().trimmed().toUpper();
609  matchValue = matchValue.simplified().trimmed().toUpper();
610 
611  // If QStrings are not the same, match automatically fails
612  if (cubeValue.compare(matchValue) != 0) {
613  matchKeywords = false;
614  }
615  }
616  catch (IException &e) {
617  // This error is thrown if the group or keyword do not exist in 'lab'
618  matchKeywords = false;
619  }
620  }
621  else if (key.isNamed("CameraVersion")) {
622  try {
623  for (int camVersionKeyIndex = 0;
624  camVersionKeyIndex < key.size();
625  camVersionKeyIndex++) {
626 
627  bool versionMatch = false;
628  IString val = key[camVersionKeyIndex];
629  IString commaTok;
630 
631  while ((commaTok = val.Token(",")).ToQt().length() > 0) {
632  if (commaTok.find('-') != string::npos) {
633  QString dashTok;
634  int start = commaTok.Token("-").ToInteger();
635  int end = commaTok.Token("-").ToInteger();
636  int direction;
637  direction = (start <= end) ? 1 : -1;
638  // Save the entire range of bands
639  for (int version = start;
640  version != end + direction;
641  version += direction) {
642  if (version == cameraVersion) {
643  versionMatch = true;
644  }
645  }
646  }
647  // This token is a single band specification
648  else {
649  if (commaTok.ToInteger() == cameraVersion) {
650  versionMatch = true;
651  }
652  }
653  }
654 
655  if (!versionMatch) {
656  matchKeywords = false;
657  }
658  }
659  }
660  catch (IException &) {
661  matchKeywords = false;
662  }
663  }
664  }
665 
666  return matchKeywords && matchTime;
667  }
668 
706  void KernelDb::loadSystemDb(const QString &mission, const Pvl &lab) {
707 
708  // Get the base DataDirectory
709  PvlGroup &dataDir = Preference::Preferences().findGroup("DataDirectory");
710  QString baseDir = dataDir["Base"];
711 
712  // Get the mission DataDirectory
713  QString missionDir = dataDir[mission];
714 
715  // Load the leapsecond DB
716  loadKernelDbFiles(dataDir, baseDir + "/kernels/lsk", lab);
717  // Load the target attitude shape DB
718  FileName tasDbPath(missionDir + "/kernels/pck");
719  if (tasDbPath.fileExists()) {
720  loadKernelDbFiles(dataDir, missionDir + "/kernels/pck", lab);
721  }
722  else {
723  loadKernelDbFiles(dataDir, baseDir + "/kernels/pck", lab);
724  }
725  // Load the target position DB
726  FileName tpDbPath(missionDir + "/kernels/tspk");
727  if (tpDbPath.fileExists()) {
728  loadKernelDbFiles(dataDir, missionDir + "/kernels/tspk", lab);
729  }
730  else {
731  loadKernelDbFiles(dataDir, baseDir + "/kernels/spk", lab);
732  }
733  // Load the DEM DB
734  loadKernelDbFiles(dataDir, baseDir + "/dems", lab);
735  // Load the mission specific spacecraft pointing DB
736  loadKernelDbFiles(dataDir, missionDir + "/kernels/ck", lab);
737  // Load the mission specific frame DB
738  loadKernelDbFiles(dataDir, missionDir + "/kernels/fk", lab);
739  // Load the mission specific instrument DB
740  loadKernelDbFiles(dataDir, missionDir + "/kernels/ik", lab);
741  // Load the mission specific spacecraft clock DB
742  loadKernelDbFiles(dataDir, missionDir + "/kernels/sclk", lab);
743  // Load the mission specific spacecraft position DB
744  loadKernelDbFiles(dataDir, missionDir + "/kernels/spk", lab);
745  // Load the mission specific instrument addendum DB
746  loadKernelDbFiles(dataDir, missionDir + "/kernels/iak", lab);
748  }
749 
779  QString directory, const Pvl &lab) {
780  // get most recent version of config file
781  FileName configFile = directory + "/kernels.????.conf";
782  bool noConfigFile = false;
783  // if there is no config file, default to the most recent kernel db file
784  try {
785  configFile = configFile.highestVersion();
786  }
787  catch (IException &e) {
788  noConfigFile = true;
789  }
790  if (noConfigFile) {
791  FileName kernelDb(directory + "/kernels.????.db");
792  m_kernelDbFiles.append(kernelDb.highestVersion());
793  }
794  else { // else, read in the appropriate database files from the config file
795  PvlObject inst = Pvl(configFile.expanded()).findObject("Instrument");
796  bool foundMatch = false;
797  // loop through each group until we find a match
798  for (int groupIndex = 0; groupIndex < inst.groups(); groupIndex++) {
799  if (!foundMatch) {
800  PvlGroup &grp = inst.group(groupIndex);
801  // Only add files in Selection groups with matching intrument id
802  if (grp.isNamed("Selection")
803  && KernelDb::matches(lab, grp, iTime(), 1)) {
804  foundMatch = true;
805  // add each File keywords in the matching group to the list
806  for (int keyIndex = 0; keyIndex < grp.keywords(); keyIndex++) {
807  PvlKeyword keyword = grp[keyIndex];
808  if (keyword.isNamed("File")) {
809  QString dir = dataDir[keyword[0]];
810  FileName kernelDb( dir + "/" + keyword[1]);
811  m_kernelDbFiles.append(kernelDb.highestVersion());
812  }
813  }
814  }
815  }
816  }
817  }
818  return;
819  }
820 
821 
840  // read each of the database files appended to the list into m_kernelData
841  foreach (FileName kernelDbFile, m_kernelDbFiles) {
842  try {
843  m_kernelData.read(kernelDbFile.expanded());
844  }
845  catch (IException &e) {
846  QString msg = "Unable to read kernel database file ["
847  + kernelDbFile.expanded() + "].";
848  throw IException(e, IException::Unknown, msg, _FILEINFO_);
849  }
850  }
851  }
852 
861  return m_kernelDbFiles;
862  }
863 
864 
876 
877  for (int i = 0; i < grp.keywords(); i++) {
878  PvlKeyword kfile = grp[i];
879  if (kfile.name() != "File") continue;
880 
881  // Two values in the "File" keyword from the DB,
882  // indicates an ISIS preference in the DataDirectory section
883  // and a filename
884  if (kfile.size() == 2) {
885  QString pref = kfile[0];
886  QString version = kfile[1];
887  FileName filename("$" + pref + "/" + version);
888  if (filename.isVersioned())
889  filename = filename.highestVersion();
890  files.push_back(filename.originalPath() + "/" + filename.name());
891  }
892  // One value in "File" indicates a full file spec
893  else if (kfile.size() == 1) {
894  FileName filename(kfile[0]);
895  if (filename.isVersioned())
896  filename = filename.highestVersion();
897  files.push_back(filename.originalPath() + "/" + filename.name());
898  }
899  else {
900  QString msg = "Invalid File keyword value in [Group = ";
901  msg += grp.name() + "] in database file [";
902  msg += m_filename + "]";
903  throw IException(IException::Unknown, msg, _FILEINFO_);
904  }
905  }
906 
907  return files;
908  }
909 } //end namespace isis
Isis::FileName::originalPath
QString originalPath() const
Returns the path of the original file name.
Definition: FileName.cpp:84
Isis::PvlKeyword::name
QString name() const
Returns the keyword name.
Definition: PvlKeyword.h:98
Isis::PvlObject::findGroup
PvlGroupIterator findGroup(const QString &name, PvlGroupIterator beg, PvlGroupIterator end)
Find a group with the specified name, within these indexes.
Definition: PvlObject.h:129
Isis::PvlObject::group
PvlGroup & group(const int index)
Return the group at the specified index.
Definition: PvlObject.cpp:452
Isis::KernelDb::targetAttitudeShape
Kernel targetAttitudeShape(Pvl &lab)
This method finds the highest version of all Target Attitude Shape kernels (pck) identified by the da...
Definition: KernelDb.cpp:155
Isis::PvlObject
Contains Pvl Groups and Pvl Objects.
Definition: PvlObject.h:61
Isis::PvlKeyword
A single keyword-value pair.
Definition: PvlKeyword.h:82
Isis::KernelDb::KernelDb
KernelDb(const unsigned int allowedKernelTypes)
Constructs a new KernelDb object with a given integer value representing the Kernel::Type enumeration...
Definition: KernelDb.cpp:48
Isis::KernelDb::files
QStringList files(PvlGroup &grp)
This method retrieves the values of all of the "File" keywords in the given PvlGroup.
Definition: KernelDb.cpp:874
QList
This is free and unencumbered software released into the public domain.
Definition: BoxcarCachingAlgorithm.h:13
Isis::FileName::name
QString name() const
Returns the name of the file excluding the path and the attributes in the file name.
Definition: FileName.cpp:162
Isis::iTime
Parse and return pieces of a time string.
Definition: iTime.h:65
Isis::FileName
File name manipulation and expansion.
Definition: FileName.h:100
Isis::IException::Unknown
@ Unknown
A type of error that cannot be classified as any of the other error types.
Definition: IException.h:118
Isis::PvlObject::groups
int groups() const
Returns the number of groups contained.
Definition: PvlObject.h:75
Isis::FileName::fileExists
bool fileExists() const
Returns true if the file exists; false otherwise.
Definition: FileName.cpp:449
Isis::KernelDb::instrument
Kernel instrument(Pvl &lab)
This method finds the last Instrument kernel found that matches the (ik) criteria in the database and...
Definition: KernelDb.cpp:259
Isis::PvlObject::hasGroup
bool hasGroup(const QString &name) const
Returns a boolean value based on whether the object has the specified group or not.
Definition: PvlObject.h:210
Isis::PvlContainer::hasKeyword
bool hasKeyword(const QString &name) const
Check to see if a keyword exists.
Definition: PvlContainer.cpp:159
Isis::Pvl
Container for cube-like labels.
Definition: Pvl.h:119
Isis::PvlObject::objects
int objects() const
Returns the number of objects.
Definition: PvlObject.h:219
Isis::KernelDb::targetPosition
Kernel targetPosition(Pvl &lab)
This method finds the highest version of all Target Position kernels (tspk) identified by the databas...
Definition: KernelDb.cpp:176
Isis::KernelDb::~KernelDb
~KernelDb()
Destructs KernelDb object.
Definition: KernelDb.cpp:115
Isis::IString::ToInteger
int ToInteger() const
Returns the object string as an integer.
Definition: IString.cpp:718
Isis::KernelDb::loadSystemDb
void loadSystemDb(const QString &mission, const Pvl &lab)
Loads the appropriate kernel database files with the defined BASE and MISSION info for each type of k...
Definition: KernelDb.cpp:706
Isis::PvlObject::object
PvlObject & object(const int index)
Return the object at the specified index.
Definition: PvlObject.cpp:489
QStringList
Isis::KernelDb::dem
Kernel dem(Pvl &lab)
This method finds the highest version of all Digital Terrain Models (DEMs) found that match the crite...
Definition: KernelDb.cpp:321
Isis::KernelDb::m_kernelDbFiles
QList< FileName > m_kernelDbFiles
List of the kernel database file names that were read in when the loadSystemDb() method is called.
Definition: KernelDb.h:141
Isis::KernelDb::m_kernelData
Pvl m_kernelData
Pvl containing the information in the kernel database(s) that is read in from the constructor and whe...
Definition: KernelDb.h:152
Isis::FileName::expanded
QString expanded() const
Returns a QString of the full file name including the file path, excluding the attributes.
Definition: FileName.cpp:196
Isis::PvlGroup
Contains multiple PvlContainers.
Definition: PvlGroup.h:41
Isis::KernelDb::instrumentAddendum
Kernel instrumentAddendum(Pvl &lab)
This method finds the highest version of all Instrument Addendum kernels (iak) identified by the data...
Definition: KernelDb.cpp:300
Isis::Pvl::read
void read(const QString &file)
Loads PVL information from a stream.
Definition: Pvl.cpp:90
Isis::CameraFactory::CameraVersion
static int CameraVersion(Cube &cube)
This looks up the current camera model version from the cube.
Definition: CameraFactory.cpp:161
Isis::PvlContainer::isNamed
bool isNamed(const QString &match) const
Returns whether the given string is equal to the container name or not.
Definition: PvlContainer.h:72
Isis::KernelDb::spacecraftClock
Kernel spacecraftClock(Pvl &lab)
This method finds the highest version of all Spacecraft Clock kernels (sclk) identified by the databa...
Definition: KernelDb.cpp:217
Isis::PvlObject::findObject
PvlObjectIterator findObject(const QString &name, PvlObjectIterator beg, PvlObjectIterator end)
Find the index of object with a specified name, between two indexes.
Definition: PvlObject.h:274
Isis::PvlContainer::name
QString name() const
Returns the container name.
Definition: PvlContainer.h:63
Isis::IException
Isis exception class.
Definition: IException.h:91
Isis::PvlKeyword::isNamed
bool isNamed(QString name) const
Determines whether two PvlKeywords have the same name or not.
Definition: PvlKeyword.h:110
Isis::KernelDb::kernelDbFiles
QList< FileName > kernelDbFiles()
Accessor method to retrieve the list of kernel database files that were read in when loadSystemDb() i...
Definition: KernelDb.cpp:860
Isis::PvlObject::hasObject
bool hasObject(const QString &name) const
Returns a boolean value based on whether the object exists in the current PvlObject or not.
Definition: PvlObject.h:323
Isis::KernelDb::m_filename
QString m_filename
The name of the kernel database file.
Definition: KernelDb.h:139
Isis::KernelDb::readKernelDbFiles
void readKernelDbFiles()
This method is called by loadSystemDb() to read kernel database file list compiled by loadKernelDbFil...
Definition: KernelDb.cpp:839
Isis::KernelDb::matches
static bool matches(const Pvl &lab, PvlGroup &kernelDbGrp, iTime timeToMatch, int cameraVersion)
This static method determines whether the given cube label matches the given criteria.
Definition: KernelDb.cpp:570
std
Namespace for the standard library.
Isis::KernelDb::findLast
Kernel findLast(const QString &entry, Pvl &lab)
Finds the highest priority Kernel object for the given entry based on the allowed Kernel types.
Definition: KernelDb.cpp:338
Isis::IString::Token
IString Token(const IString &separator)
Returns the first token in the IString.
Definition: IString.cpp:897
Isis::PvlKeyword::size
int size() const
Returns the number of values stored in this keyword.
Definition: PvlKeyword.h:125
Isis::KernelDb::findAll
QList< std::priority_queue< Kernel > > findAll(const QString &entry, Pvl &lab)
Finds all of the Kernel objects for the given entry value based on the allowed Kernel types.
Definition: KernelDb.cpp:365
Isis::Kernel
This class stores Kernel information, including Type and kernel file names.
Definition: Kernel.h:36
Isis::PvlContainer::keywords
int keywords() const
Returns the number of keywords contained in the PvlContainer.
Definition: PvlContainer.h:86
Isis::FileName::isVersioned
bool isVersioned() const
Checks to see if a file name is versioned by date or numerically.
Definition: FileName.cpp:281
Isis::KernelDb::frame
Kernel frame(Pvl &lab)
This method finds the highest version of all Frame kernels (fk) identified by the database and the al...
Definition: KernelDb.cpp:280
Isis::IString
Adds specific functionality to C++ strings.
Definition: IString.h:165
Isis::FileName::highestVersion
FileName highestVersion() const
Searches the directory specified in the file name for the highest version of the file name.
Definition: FileName.cpp:313
Isis::KernelDb::spacecraftPosition
Kernel spacecraftPosition(Pvl &lab)
This method finds the highest version of all Spacecraft Position kernels (spk) identified by the data...
Definition: KernelDb.cpp:238
Isis::Kernel::typeEnum
static Type typeEnum(const QString &type)
Converts the given string to a character as follows.
Definition: Kernel.cpp:57
Isis::KernelDb::loadKernelDbFiles
void loadKernelDbFiles(PvlGroup &dataDir, QString directory, const Pvl &lab)
This method is called by loadSystemDb() to create a list of all appropriate kernel database files to ...
Definition: KernelDb.cpp:778
Isis::KernelDb::spacecraftPointing
QList< std::priority_queue< Kernel > > spacecraftPointing(Pvl &lab)
This method finds a list of the highest versions of all Spacecraft Pointing kernels (ck) identified b...
Definition: KernelDb.cpp:197
Isis::KernelDb::leapSecond
Kernel leapSecond(Pvl &lab)
This method finds the top priority of all Leap Second kernels (lsk) identified by the database and th...
Definition: KernelDb.cpp:134
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::KernelDb::m_allowedKernelTypes
unsigned int m_allowedKernelTypes
This integer value represents which Kernel::Types are allowed.
Definition: KernelDb.h:144

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/13/2023 15:16:46