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

📄 satdatareader.hpp

📁 一个gps小工具包
💻 HPP
字号:
#pragma ident "$Id: $"/** * @file SatDataReader.hpp * File stream for satellite file data in PRN_GPS-like format. */#ifndef SATDATAREADER_HPP#define SATDATAREADER_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//  //  Dagoberto Salazar - gAGE ( http://www.gage.es ). 2007////============================================================================#include <string>#include <map>#include "FFTextStream.hpp"#include "StringUtils.hpp"#include "DayTime.hpp"#include "SatID.hpp"using namespace std;namespace gpstk{      /** @addtogroup formattedfile */      //@{      /** This is a class to read and parse satellite data from        *  PRN_GPS-like files.       *        *       * Jet Propulsion Laboratory (JPL) provides a file called "PRN_GPS"       * with satellite information such as launch and deactivation dates,       * block type GPS number, etc. This information is important for some       * precise GPS data processing algorithms, and is used in Gipsy/OASIS       * software.       *       * You may find this file using FTP:       *       * ftp://sideshow.jpl.nasa.gov:/pub/gipsy_products/gipsy_params       *       * where the PRN_GPS file resides, usually compressed in .gz format.       *       * A typical way to use this class follows:       *       * @code       *   SatDataReader satread;       *       *   SatID prn28(28, SatID::systemGPS);       *   DayTime time(1995, 331, 43200);       *       *   satread.open("PRN_GPS");       *       *   string prn28Block = satread.getBlock(prn28, time);       *   // From 1992 to 1997, PRN 28 belonged to a block IIA satellite       * @endcode       *       * @warning Be aware that PRN numbers are recycled, so several        * different satellites may have the same PRN number at different       * epochs. Therefore, you must provide the epoch of interest when        * calling get methods.       */   class SatDataReader : public FFTextStream   {   public:         /// Default constructor      SatDataReader() {}         /** Common constructor. It will always open file for read and will          * load satellite data in one pass.          *          * @param fn   Satellite data file to read          *          */      SatDataReader(const char* fn) : FFTextStream(fn, std::ios::in)      { loadData(); }         /** Common constructor. It will always open file for read and will          * load satellite data in one pass.          *          * @param fn   Satellite data file to read          *          */      SatDataReader(const string& fn) : FFTextStream(fn.c_str(), std::ios::in)      { loadData(); }         /// Method to open AND load satellite data file.      virtual void open(const char* fn);         /// Method to open AND load satellite data file.      virtual void open(const string& fn);         /** Method to get the block type of a given SV at a given epoch.          *          * @param sat   Satellite ID.          * @param epoch Epoch of interest.          *          * @return String containing satellite's block. If satellite is           * not found or epoch is out of proper launch/deactivation bounds,           * this method will return an empty string.          */      virtual string getBlock(const SatID& sat,                              const DayTime& epoch) const ;         /** Method to get the GPS number of a given SV at a given epoch.          *          * @param sat   Satellite ID.          * @param epoch Epoch of interest.          *          * @return Integer containing satellite's block. If satellite is           * not found or epoch is out of proper launch/deactivation bounds,           * this method will return -1.          */      virtual int getGPSNumber(const SatID& sat,                               const DayTime& epoch) const ;         /** Method to get the launch date of a given SV.          *          * @param sat   Satellite ID.          * @param epoch Epoch of interest.          *          * @return DayTime object containing satellite's launch date. If           * satellite is not found or epoch is out of proper           * launch/deactivation bounds, this method will return           * DayTime::END_OF_TIME.          */      virtual DayTime getLaunchDate(const SatID& sat,                                    const DayTime& epoch) const ;         /** Method to get the deactivation date of a given SV.          *          * @param sat   Satellite ID.          * @param epoch Epoch of interest.          *          * @return DayTime object containing satellite's deactivation date.           * If satellite is not found, epoch is out of proper           * launch/deactivation bounds or satellite is still active, this           * method will return DayTime::BEGINNING_OF_TIME.          */      virtual DayTime getDeactivationDate(const SatID& sat,                                          const DayTime& epoch) const ;         /// Destructor      virtual ~SatDataReader() {}   private:         /// A structure used to store satellite data.      struct svData      {            // Default constructor initializing the data in the structure         svData() : launchDate(DayTime::BEGINNING_OF_TIME),                      deactivationDate(DayTime::END_OF_TIME),                    gpsNumber(0),                    block("") {};         DayTime launchDate;         ///< SV launch date.         DayTime deactivationDate;   ///< SV deactivation date.         int gpsNumber;              ///< GPS number.         string block;               ///< Block the SV belongs to      };         /// Handy iterator type      typedef std::multimap<SatID, svData>::const_iterator satDataIt;         /// Map holding the information regarding every satellite      std::multimap<SatID, svData> SatelliteData;         /** Method to store satellite data in this class' data map          * @param sat   Satellite ID.          * @param data  svData structure holding the SV data          */      void setData(const SatID& sat,                   const svData& data)      { SatelliteData.insert(pair<const SatID, svData>(sat, data)); }         /// Method to load satellite data in this class' data map      virtual void loadData(void)         throw(FFStreamError, gpstk::StringUtils::StringException);   };      //@}} // namespace#endif  // SATDATAREADER_HPP

⌨️ 快捷键说明

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