00001 #pragma ident "$Id: IonexModel.hpp 1804 2009-03-17 15:13:29Z coandrei $"
00002
00003
00011 #ifndef GPSTK_IONEXMODEL_HPP
00012 #define GPSTK_IONEXMODEL_HPP
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "IonexStore.hpp"
00038 #include "Position.hpp"
00039 #include "ProcessingClass.hpp"
00040 #include "TypeID.hpp"
00041
00042
00043
00044 namespace gpstk
00045 {
00046
00049
00106 class IonexModel : public ProcessingClass
00107 {
00108 public:
00109
00110
00112 IonexModel() : pDefaultMaps(NULL), useDCB(true)
00113 { setIndex(); };
00114
00115
00118 IonexModel(const Position& RxCoordinates)
00119 throw(Exception);
00120
00121
00133 IonexModel( const Position& RxCoordinates,
00134 IonexStore& istore,
00135 const TypeID& dObservable = TypeID::P1,
00136 const bool& applyDCB = true,
00137 const std::string& ionoMap = "SLM" )
00138 throw(Exception);
00139
00140
00147 virtual satTypeValueMap& Process( const DayTime& time,
00148 satTypeValueMap& gData )
00149 throw(Exception);
00150
00151
00157 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00158 throw(Exception)
00159 { Process(gData.header.epoch, gData.body); return gData; };
00160
00161
00167 virtual gnssRinex& Process(gnssRinex& gData)
00168 throw(Exception)
00169 { Process(gData.header.epoch, gData.body); return gData; };
00170
00171
00173 virtual TypeID getDefaultObservable() const
00174 { return defaultObservable; };
00175
00176
00181 virtual IonexModel& setDefaultObservable(const TypeID& type)
00182 { defaultObservable = type; return (*this); };
00183
00184
00187 virtual IonexStore* getDefaultMaps(void) const
00188 { return pDefaultMaps; };
00189
00190
00196 virtual IonexModel& setDefaultMaps(IonexStore& istore)
00197 { pDefaultMaps = &istore; return (*this); };
00198
00199
00201 virtual bool getUseDCB(void) const
00202 { return useDCB; };
00203
00204
00210 virtual IonexModel& setUseDCB(bool applyDCB)
00211 { useDCB = applyDCB; return (*this); };
00212
00213
00220 virtual int setInitialRxPosition(const Position& RxCoordinates)
00221 throw(GeometryException);
00222
00223
00225 virtual int setInitialRxPosition(void)
00226 throw(GeometryException);
00227
00228
00230 virtual std::string getIonoMapType() const
00231 { return ionoMapType; };
00232
00233
00241 virtual IonexModel& setIonoMapType(const std::string& ionoMap);
00242
00243
00252 virtual double getDCBCorrections( const DayTime& time,
00253 const IonexStore& Maps,
00254 SatID sat )
00255 throw();
00256
00257
00259 virtual int getIndex(void) const;
00260
00261
00263 virtual std::string getClassName(void) const;
00264
00265
00267 virtual ~IonexModel() {};
00268
00269
00270 protected:
00271
00272
00274 TypeID defaultObservable;
00275
00276
00279 IonexStore* pDefaultMaps;
00280
00281
00283 Position rxPos;
00284
00285
00289 bool useDCB;
00290
00291
00294 std::string ionoMapType;
00295
00296
00299 double ionoHeight;
00300
00301
00302 private:
00303
00304
00306 static int classIndex;
00307
00308
00310 int index;
00311
00312
00314 void setIndex(void)
00315 { index = classIndex++; };
00316
00317
00318 };
00319
00320
00322
00323
00324 }
00325 #endif // GPSTK_IONEXMODEL_HPP
00326
00327
00328
00329