ComputeIonoModel.hpp

Go to the documentation of this file.
00001 #pragma ident "$Id: ComputeIonoModel.hpp 2526 2011-03-09 17:46:16Z yanweignss $"
00002 
00009 #ifndef GPSTK_COMPUTE_IONO_MODEL_HPP
00010 #define GPSTK_COMPUTE_IONO_MODEL_HPP
00011 
00012 //============================================================================
00013 //
00014 //  This file is part of GPSTk, the GPS Toolkit.
00015 //
00016 //  The GPSTk is free software; you can redistribute it and/or modify
00017 //  it under the terms of the GNU Lesser General Public License as published
00018 //  by the Free Software Foundation; either version 2.1 of the License, or
00019 //  any later version.
00020 //
00021 //  The GPSTk is distributed in the hope that it will be useful,
00022 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00023 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00024 //  GNU Lesser General Public License for more details.
00025 //
00026 //  You should have received a copy of the GNU Lesser General Public
00027 //  License along with GPSTk; if not, write to the Free Software Foundation,
00028 //  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00029 //
00030 //  Wei Yan - Chinese Academy of Sciences . 2009, 2010, 2011
00031 //
00032 //============================================================================
00033 
00034 
00035 
00036 #include "ProcessingClass.hpp"
00037 #include "IonexStore.hpp"
00038 #include "IonoModelStore.hpp"
00039 
00040 
00041 namespace gpstk
00042 {
00043 
00046 
00087    class ComputeIonoModel : public ProcessingClass
00088    {
00089    public:
00090       enum IonoModelType
00091       {
00092          Zero = 0,     
00093          Klobuchar,    
00094          Ionex,        
00095          DualFreq      
00096       };
00097 
00098    public:
00099 
00101       ComputeIonoModel()
00102          : ionoType(Zero), nominalPos(0.0,0.0,0.0)
00103       { setIndex(); };
00104 
00105 
00110       ComputeIonoModel(const Position& stapos) 
00111          : ionoType(Zero), nominalPos(stapos)
00112       { setIndex(); };
00113 
00114 
00121       virtual satTypeValueMap& Process( const DayTime& time,
00122                                         satTypeValueMap& gData )
00123          throw(ProcessingException);
00124 
00125 
00131       virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00132          throw(ProcessingException)
00133       { Process(gData.header.epoch, gData.body); return gData; };
00134 
00135 
00141       virtual gnssRinex& Process(gnssRinex& gData)
00142          throw(ProcessingException)
00143       { Process(gData.header.epoch, gData.body); return gData; };
00144 
00145 
00146       virtual ComputeIonoModel& setZeroModel()
00147       { ionoType = Zero; return (*this); }
00148 
00150       virtual ComputeIonoModel& setKlobucharModel(const double a[4], 
00151                                                   const double b[4]);
00152 
00154       virtual ComputeIonoModel& setKlobucharModel(const IonoModel& im);
00155 
00156 
00158       virtual ComputeIonoModel& setklobucharModel(const std::string& brdcFile);
00159 
00160 
00162       virtual ComputeIonoModel& setIonosphereMap(const std::string& ionexFile);
00163 
00165       virtual ComputeIonoModel& setDualFreqModel()
00166       { ionoType=DualFreq; return (*this); }
00167 
00169       virtual Position getNominalPosition(void) const
00170       { return nominalPos; };
00171 
00172 
00176       virtual ComputeIonoModel& setNominalPosition(const Position& stapos)
00177         { nominalPos = stapos; return (*this); };
00178 
00180       virtual int getIndex(void) const;
00181 
00182 
00184       virtual std::string getClassName(void) const;
00185 
00186 
00188       virtual ~ComputeIonoModel() {};
00189 
00190 
00191    private:
00192 
00193       IonoModelType  ionoType;
00194 
00196       IonoModelStore klbStore;
00197 
00199       IonexStore gridStore;
00200 
00202       Position nominalPos;
00203 
00204 
00206       static int classIndex;
00207 
00208 
00210       int index;
00211 
00212 
00214       void setIndex(void)
00215       { index = classIndex++; };
00216 
00217 
00218    }; // End of class 'ComputeIonoModel'
00219 
00221 
00222 } // End of namespace gpstk
00223 
00224 #endif   // GPSTK_COMPUTE_IONO_MODEL_HPP

Generated on Tue May 22 03:30:56 2012 for GPS ToolKit Software Library by  doxygen 1.3.9.1