⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rinexnavdata.hpp

📁 gps源代码
💻 HPP
字号:
#pragma ident "$Id: RinexNavData.hpp 236 2006-10-15 18:13:18Z architest $"/** * @file RinexNavData.hpp * Encapsulates RINEX Navigation data */#ifndef RINEXNAVDATA_HPP#define RINEXNAVDATA_HPP//============================================================================////  This file is part of GPSTk, the GPS Toolkit.////  The GPSTk is free software; you can redistribute it and/or modify//  it under the terms of the GNU Lesser General Public License as published//  by the Free Software Foundation; either version 2.1 of the License, or//  any later version.////  The GPSTk is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU Lesser General Public License for more details.////  You should have received a copy of the GNU Lesser General Public//  License along with GPSTk; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//  //  Copyright 2004, The University of Texas at Austin////============================================================================//============================================================================////This software developed by Applied Research Laboratories at the University of//Texas at Austin, under contract to an agency or agencies within the U.S. //Department of Defense. The U.S. Government retains all rights to use,//duplicate, distribute, disclose, or release this software. ////Pursuant to DoD Directive 523024 //// DISTRIBUTION STATEMENT A: This software has been approved for public //                           release, distribution is unlimited.////=============================================================================#include <list>#include "StringUtils.hpp"#include "DayTime.hpp"#include "FFStream.hpp"#include "RinexNavBase.hpp"#include "EngEphemeris.hpp"namespace gpstk{   /** @addtogroup RinexNav */   //@{      /**        * This class models a RINEX NAV record.       *       * \sa rinex_nav_test.cpp and rinex_nav_read_write.cpp for examples.       * \sa gpstk::RinexNavHeader and gpstk::RinexNavStream classes.       */   class RinexNavData : public RinexNavBase   {   public:         /**          * Constructor          * @warning CHECK THE PRNID TO SEE IF THIS DATA IS           *  VALID BEFORE USING!!          */      RinexNavData(void)            : time(gpstk::DayTime::BEGINNING_OF_TIME), PRNID(-1), fitint(4)         {}         /// Initializes the nav data with an EngEphemeris      RinexNavData(const EngEphemeris& ee);         /// destructor      virtual ~RinexNavData() {}         // The next four lines is our common interface         /// RinexNavData is "data" so this function always returns true.      virtual bool isData(void) const {return true;}              /**          * A debug output function.          * Prints the PRN id and the IODC for this record.          */       virtual void dump(std::ostream& s) const;         /**          * Converts this RinexNavData to an EngEphemeris object.          */      operator EngEphemeris() const throw();         /**          * Converts the (non-DayTime) data to a list for easy          * comparison operators.          */      std::list<double> toList() const;         /** @name Epochdata          */         //@{      DayTime time;        ///< Time according to the record.      short PRNID;         ///< SV PRN ID       long HOWtime;        ///< Time of subframe 1-3 (sec of week)      short weeknum;       ///< GPS full week number that corresponds                            ///< to the HOWtime of SF1                            ///< (NB in Rinex files, week number corresponds to TOE)      short codeflgs;      ///< L2 codes       double accuracy;     ///< SV accuracy (m)      short health;        ///< SV health       short L2Pdata;       ///< L2 P data flag       double IODC;         ///< Index of data-clock       double IODE;         ///< Index of data-eph          //@}         /** @name ClockInformation           */         //@{      double   Toc;           ///< Clock epoch (sec of week) (found in epoch line of Rinex navigation files)      double   af0;           ///< SV clock error (sec)       double   af1;           ///< SV clock drift (sec/sec)       double   af2;           ///< SV clock drift rate (sec/sec**2)       double   Tgd;           ///< Group delay differential (sec)          //@}         /** @name HarmonicPerturbations          */         //@{      double   Cuc;           ///< Cosine latitude (rad)       double   Cus;           ///< Sine latitude (rad)       double   Crc;           ///< Cosine radius (m)       double   Crs;           ///< Sine radius (m)       double   Cic;           ///< Cosine inclination (rad)       double   Cis;           ///< Sine inclination (rad)          //@}         /**  @name MajorEphemerisParameters          */         //@{      double   Toe;           ///< Ephemeris epoch (sec of week)      double   M0;            ///< Mean anomaly (rad)       double   dn;            ///< Correction to mean motion (rad/sec)       double   ecc;           ///< Eccentricity       double   Ahalf;         ///< SQRT of semi-major axis (m**1/2)       double   OMEGA0;        ///< Rt ascension of ascending node (rad)       double   i0;            ///< Inclination (rad)       double   w;             ///< Argument of perigee (rad)       double   OMEGAdot;      ///< Rate of Rt ascension (rad/sec)       double   idot;          ///< Rate of inclination angle (rad/sec)       double   fitint;        ///< Fit interval         //@}         private:         /// Parses string \a currentLine to obtain PRN id and epoch.      void getPRNEpoch(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /** @name OrbitParameters          * Obtain orbit parameters from strint \a currentLine.          */         //@{         /// Reads line 1 of the Nav Data record      void getBroadcastOrbit1(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 2 of the Nav Data record      void getBroadcastOrbit2(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 3 of the Nav Data record      void getBroadcastOrbit3(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 4 of the Nav Data record      void getBroadcastOrbit4(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 5 of the Nav Data record      void getBroadcastOrbit5(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 6 of the Nav Data record      void getBroadcastOrbit6(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         /// Reads line 7 of the Nav Data record      void getBroadcastOrbit7(const std::string& currentLine)         throw(gpstk::StringUtils::StringException, FFStreamError);         //@}         /// generates a line to be output to a file for the PRN/epoch line      std::string putPRNEpoch(void) const         throw(gpstk::StringUtils::StringException);         /** @name OrbitParameters          * Generate orbit parameter lines from data to be output to a file          */         //@{         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit1(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit2(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit3(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit4(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit5(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record      std::string putBroadcastOrbit6(void) const         throw(gpstk::StringUtils::StringException);         /// Writes line 7 of the Nav Data record         /// @warning Pass in version to decide wheter or not          /// to write fit interval      std::string putBroadcastOrbit7(const double ver) const         throw(gpstk::StringUtils::StringException);         //@}   protected:         /// Outputs the record to the FFStream \a s.      virtual void reallyPutRecord(FFStream& s) const          throw(std::exception, FFStreamError,               gpstk::StringUtils::StringException);              /**           * This function retrieves a RINEX NAV record from the given FFStream.          * If an error is encountered in reading from the stream, the stream          * is returned to its original position and its fail-bit is set.          * @throws StringException when a StringUtils function fails          * @throws FFStreamError when exceptions(failbit) is set and          *  a read or formatting error occurs.  This also resets the          *  stream to its pre-read position.          */      virtual void reallyGetRecord(FFStream& s)          throw(std::exception, FFStreamError,               gpstk::StringUtils::StringException);   };  // class RinexNavData   //@}} // namespace#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -