Commit b18a1e0b authored by Kristin Berry's avatar Kristin Berry
Browse files

Initial draft of: update kerneldbgen to have an option to specify spice...

Initial draft of: update kerneldbgen to have an option to specify spice segment vs. spice interval for time coverage to fix cassis spiceinit error.
parent f6501877
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ const char *SpiceDbGen::calForm = "YYYY MON DD HR:MN:SC.###### TDB ::TDB";
*/
SpiceDbGen::SpiceDbGen(QString type) {
  p_type = type;
  m_coverageLevel = "SEGMENT"; // default
  //  calForm = "YYYY MON DD HR:MN:SC.### TDB ::TDB";
}

@@ -155,6 +156,17 @@ QStringList SpiceDbGen::GetFiles(FileName location, QString filter) {
}


/**
 * Sets the desired time coverage level of the Spice database. 
 * 
 * @param level The desired time coverage level. May be either Segment or 
 *              Interval.  
 */
void SpiceDbGen::setCoverageLevel(QString level) {
  m_coverageLevel = level; 
}


/**
  * Format a single kernel file to include the file.
  *
@@ -227,10 +239,16 @@ PvlGroup SpiceDbGen::AddSelection(FileName fileIn, double startOffset, double en
        SPICEDOUBLE_CELL(cover, 200000);
        ssize_c(0, &cover);
        ssize_c(200000, &cover);

        // A SPICE SEGMENT is composed of SPICE INTERVALS, and is a more coarse measurement
        if (QString::compare(m_coverageLevel, "SEGMENT", Qt::CaseInsensitive) == 0 ) {
          ckcov_c(tmp.toLatin1().data(), body, SPICEFALSE, "SEGMENT", 0.0, "TDB", &cover); 
        }
        else {
          ckcov_c(tmp.toLatin1().data(), body, SPICEFALSE, "INTERVAL", 0.0, "TDB", &cover);
        }

        NaifStatus::CheckErrors();

        result = FormatIntervals(cover, currFile, startOffset, endOffset);
      }
    }
+2 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ class SpiceDbGen {
                           std::vector<QString> & filter, double startOffset, double endOffset);
    void FurnishDependencies(QList<Isis::FileName> sclks, QList<Isis::FileName> fks,
                             QList<Isis::FileName> extras);
    void setCoverageLevel(QString level); 

  private:
    QStringList GetFiles(Isis::FileName location, QString filter);
@@ -65,6 +66,7 @@ class SpiceDbGen {
    Isis::PvlGroup GetIntervals(SpiceCell &cover);
    //private instance variables
    QString p_type;
    QString m_coverageLevel; 
    static const char *calForm;
};

+17 −5
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ void IsisMain() {
  UserInterface &ui = Application::GetUserInterface();
  PvlGroup dependency("Dependencies");

  //create the database writer based on the kernel type
  // Create the database writer based on the kernel type
  SpiceDbGen sdg(ui.GetString("TYPE"));

  // Load the SCLK. If it exists, add its location to the dependency group
@@ -37,6 +37,18 @@ void IsisMain() {
  }
  PvlObject selections(kernelType);

  // Specify whether to use SPICE segments (made up of SPICE intervals) 
  // or SPICE intervals for the SPICE database. Naif referes to this as "coverage level" 
  QString coverageLevel; 
  if (ui.GetString("LEVEL") == "SEGMENT") {
    coverageLevel = "SEGMENT"; 
  }
  else if (ui.GetString("LEVEL") == "INTERVAL") {
    coverageLevel = "INTERVAL"; 
  }
  // add to Pvl? 
  sdg.setCoverageLevel(coverageLevel); 

  selections += PvlKeyword("RunTime", iTime::CurrentLocalTime());
  selections.addGroup(dependency);

+35 −0
Original line number Diff line number Diff line
@@ -152,6 +152,10 @@
      Added STARTOFFSET and ENDOFFSET parameters to allow for slight editing to start and end times.
      Fixes #5272.
    </change>
    <change name="Kristin Berry" date="2018-05-09">
      Added option to specify the time coverage level to be used for the generated database. SPICE segements are made up of SPICE intervals. 
      Segments (the only old option) are now the default, but interval can be selected if needed. 
    </change>
  </history>

  <groups>
@@ -221,6 +225,37 @@
        </list>
      </parameter>
    </group>
    <group name="Coverage Level">
      <parameter name="LEVEL">
        <type>string</type>
        <default>
          <item>SEGMENT</item>
        </default>
        <brief>
           The level of time-granularity for the time-coverage interval to be output to the SPICE database. 
        </brief>
        <description>
        </description>
        <list>
          <option value="SEGMENT">
            <brief>
              SPICE Segment             
            </brief>
            <description>
              The coarsest level of time granularity, a SPICE segment is composed of SPICE intervals.              
            </description>
          </option>
          <option value="INTERVAL">
            <brief>
              SPICE Interval 
            </brief>
            <description>
              A finer level of time granularity. 
            </description>
          </option>
        </list>
      </parameter>
    </group>
    <group name="Predict">
      <parameter name="PREDICTDIR">
        <type>string</type>