Ejemplo n.º 1
0
ConstellationDefinition ConstellationSet::findCD( const gpstk::DayTime dt ) const
         throw(NoConstellationFound)
{
   DayTime localDT = dt;
   localDT.setSecOfDay(  (DayTime::SEC_DAY/2) );   // Set to noon to match CDs
   
      // Best case (hopefully nominal) is that there is a definition
      // available for the date in question.
   CI ci = cdMap.find(localDT);
   //cout << "Found in map: " << ci->first << endl;
   if (ci==cdMap.end())
   {
         // If no, first check to see whether date in question is later
         // than any date available.
      if (localDT>getLatestDate())
      {
         ConstellationSet::NoConstellationFound exc("All Constellation Definitions Too Early");
         GPSTK_THROW(exc);
      }
      
         // If not, start at the day of interest and back up until we
         // find a definition or hit the earliest definition
      bool done = false;
      localDT -= DayTime::SEC_DAY;
      while (!done && localDT > getEarliestDate() )
      {
         ci = cdMap.find(localDT);
         if (ci!=cdMap.end()) done = true;
         localDT -= DayTime::SEC_DAY;
      }
         // Did not find one before reaching the "head" of the list
      if (!done)
      {
         ConstellationSet::NoConstellationFound exc("All Constellation Definitions Too Late");
         GPSTK_THROW(exc);   
      }
   }

   ConstellationDefinition cd = ci->second;
   return(cd);
}
Ejemplo n.º 2
0
gpstk::DayTime ConstellationSet::parseDate(string date)
  throw(InvalidDateString)
{
   string whitespace = " \t\r\n";
   string::size_type end  = date.find_last_not_of(whitespace);
   string::size_type front = date.find("STATUS");
   front = date.find_first_not_of(whitespace, front+6);
   string dateString = date.substr(front, end-front+1);
   DayTime dt;
   try
   {
      //cout << dateString << endl;
      dt.setToString(dateString, "%d %b %Y");
      dt.setSecOfDay(  (DayTime::SEC_DAY/2) );
      return dt;
   }
   catch(DayTime::DayTimeException exc)
   {
      string s = "Invalid date: '" + dateString + "'";
      //cout << s << endl;
      ConstellationSet::InvalidDateString excids(s);
      GPSTK_THROW(excids);
   }
}