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

📄 ionomodel.hpp

📁 一个gps小工具包
💻 HPP
字号:
#pragma ident "$Id: IonoModel.hpp 164 2006-09-29 16:57:16Z architest $"#ifndef GPSTK_IONOMODEL_HPP#define GPSTK_IONOMODEL_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.////=============================================================================/** * @file IonoModel.cpp * Implementation of the ICD-GPS-200 Ionosphere model. */#include "DayTime.hpp"#include "EngAlmanac.hpp"#include "Geodetic.hpp"namespace gpstk{      /** @addtogroup GPSsolutions */      //@{      /**       * Model of the ionosphere.       * It is used to compute the delay of the satellite signal       * as seen at the receiver caused by the ionosphere for a       * "one frequency" user.       *       * See ICD-GPS-200, section 20.3.3.5.2.5 and  Figure 20-4.       *       * Verbatim from the above section:       * "It is estimated that the use of this model will provide at least       * a 50% reduction in the single-frequency user's RMS error due to       * ionospheric propagation effects. During extended operations, or for       * the Block IIR SVs in the Autonav mode if the CS is unable to upload       * the SVs, the use of this model will yield unpredictable results."       */   class IonoModel   {   public:                 /// Thrown when attempting to use a model for which all necessary         /// parameters have not been specified.         /// @ingroup exceptiongroup      NEW_EXCEPTION_CLASS(InvalidIonoModel, gpstk::Exception);       enum Frequency      {         L1,  ///< L1 frequency (1575.42 MHz)         L2   ///< L2 frequency (1227.60 MHz)      };               /// default constructor, creates an invalid model      IonoModel() throw() : valid(false) {}               /// destructor      virtual ~IonoModel() throw() {}               /**          * constructor.          * Creates a valid model with satellite transmitted alpha          * and beta parameters provided from almanac.          * \param a an array containing the four alpha terms          * \param b an array containing the four beta terms          */      IonoModel(const double a[4], const double b[4]) throw();               /**          * EngAlmanac constructor.          * Creates a valid model from and EngAlmanac object          * \param engalm an EngAlmanac object          */      IonoModel(const EngAlmanac& engalm) throw();               /** Method to feed the model with satellite transmitted alpha          * and beta parameters provided from almanac.          * \param a an array containing the four alpha terms          * \param b an array containing the four beta terms          */      void setModel(const double a[4], const double b[4]) throw();               /**          * returns the validity of the model.          * \return model validity          */      bool isValid() const throw() { return valid; }               /**          * get the ionospheric correction value.          * \param time the time of the observation          * \param rxgeo the WGS84 geodetic position of the receiver          * \param svel the elevation angle between the rx and SV (degrees)          * \param svaz the azimuth angle between the rx and SV (degrees)          * \param freq the GPS frequency the observation was made from          * \return the ionospheric correction (meters)          */      double getCorrection(const DayTime& time,                           const Geodetic& rxgeo,                           double svel,                           double svaz,                           Frequency freq = L1) const         throw(InvalidIonoModel);         /// equality operator      bool operator==(const IonoModel& right) const throw();         /// inequality operator      bool operator!=(const IonoModel& right) const throw();      private:      double alpha[4];      double beta[4];      bool valid;   };      //@}}#endif

⌨️ 快捷键说明

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