00001 #pragma ident "$Id: ModelObsFixedStation.hpp 1312 2008-07-24 18:15:26Z architest $"
00002
00009 #ifndef MODELOBSFIXEDSTATION_HPP
00010 #define MODELOBSFIXEDSTATION_HPP
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "ProcessingClass.hpp"
00037 #include "EphemerisRange.hpp"
00038 #include "EngEphemeris.hpp"
00039 #include "XvtStore.hpp"
00040 #include "GPSEphemerisStore.hpp"
00041 #include "TropModel.hpp"
00042 #include "IonoModelStore.hpp"
00043
00044
00045 namespace gpstk
00046 {
00047
00050
00098 class ModelObsFixedStation : public ProcessingClass
00099 {
00100 public:
00101
00104 ModelObsFixedStation()
00105 : minElev(10.0), useTGD(true), pDefaultIonoModel(NULL),
00106 pDefaultTropoModel(NULL), defaultObservable(TypeID::C1),
00107 pDefaultEphemeris(NULL)
00108 { InitializeValues(); setIndex(); };
00109
00110
00128 ModelObsFixedStation( const double& aRx,
00129 const double& bRx,
00130 const double& cRx,
00131 Position::CoordinateSystem s = Position::Cartesian,
00132 GeoidModel *geoid = NULL );
00133
00134
00137 ModelObsFixedStation(const Position& RxCoordinates);
00138
00139
00153 ModelObsFixedStation( const Position& RxCoordinates,
00154 IonoModelStore& dIonoModel,
00155 TropModel& dTropoModel,
00156 XvtStore<SatID>& dEphemeris,
00157 const TypeID& dObservable,
00158 bool usetgd = true );
00159
00160
00174 ModelObsFixedStation( const Position& RxCoordinates,
00175 IonoModelStore& dIonoModel,
00176 XvtStore<SatID>& dEphemeris,
00177 const TypeID& dObservable,
00178 bool usetgd = true );
00179
00180
00194 ModelObsFixedStation( const Position& RxCoordinates,
00195 TropModel& dTropoModel,
00196 XvtStore<SatID>& dEphemeris,
00197 const TypeID& dObservable,
00198 bool usetgd = true );
00199
00200
00213 ModelObsFixedStation( const Position& RxCoordinates,
00214 XvtStore<SatID>& dEphemeris,
00215 const TypeID& dObservable,
00216 bool usetgd = true);
00217
00218
00225 virtual satTypeValueMap& Process( const DayTime& time,
00226 satTypeValueMap& gData )
00227 throw(ProcessingException);
00228
00229
00235 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00236 throw(ProcessingException)
00237 { Process(gData.header.epoch, gData.body); return gData; };
00238
00239
00245 virtual gnssRinex& Process(gnssRinex& gData)
00246 throw(ProcessingException)
00247 { Process(gData.header.epoch, gData.body); return gData; };
00248
00249
00252 virtual double getMinElev() const
00253 { return minElev; };
00254
00255
00258 virtual ModelObsFixedStation& setMinElev(double newElevation)
00259 { minElev = newElevation; return (*this); };
00260
00261
00264 virtual ModelObsFixedStation& setTGD(bool use)
00265 { useTGD = use; return (*this); };
00266
00267
00269 virtual IonoModelStore* getDefaultIonoModel() const
00270 { return pDefaultIonoModel; };
00271
00272
00274 virtual ModelObsFixedStation& setNULLIonoModel()
00275 { pDefaultIonoModel = NULL; return (*this); };
00276
00277
00281 virtual ModelObsFixedStation& setDefaultIonoModel(
00282 IonoModelStore& dIonoModel)
00283 { pDefaultIonoModel = &dIonoModel; return (*this); };
00284
00285
00287 virtual TropModel* getDefaultTropoModel() const
00288 { return pDefaultTropoModel; };
00289
00290
00292 virtual ModelObsFixedStation& setNULLTropoModel()
00293 { pDefaultTropoModel = NULL; return (*this); };
00294
00295
00299 virtual ModelObsFixedStation& setDefaultTropoModel(
00300 TropModel& dTropoModel)
00301 { pDefaultTropoModel = &dTropoModel; return (*this); };
00302
00303
00306 virtual TypeID getDefaultObservable() const
00307 { return defaultObservable; };
00308
00309
00314 virtual ModelObsFixedStation& setDefaultObservable(const TypeID& type)
00315 { defaultObservable = type; return (*this); };
00316
00317
00320 virtual XvtStore<SatID>* getDefaultEphemeris() const
00321 { return pDefaultEphemeris; };
00322
00323
00329 virtual ModelObsFixedStation& setDefaultEphemeris(XvtStore<SatID>& ephem)
00330 { pDefaultEphemeris = &ephem; return (*this); };
00331
00332
00334 Position rxPos;
00335
00336
00338 virtual int getIndex(void) const;
00339
00340
00342 virtual std::string getClassName(void) const;
00343
00344
00346 virtual ~ModelObsFixedStation() {};
00347
00348
00349 protected:
00350
00351
00370 int Compute( const DayTime& Tr,
00371 Vector<SatID>& Satellite,
00372 Vector<double>& Pseudorange,
00373 const XvtStore<SatID>& Eph,
00374 TropModel *pTropModel = NULL,
00375 IonoModelStore *pIonoModel = NULL )
00376 throw(Exception);
00377
00378
00381 double minElev;
00382
00385 bool useTGD;
00386
00388 IonoModelStore *pDefaultIonoModel;
00389
00391 TropModel *pDefaultTropoModel;
00392
00394 TypeID defaultObservable;
00395
00398 XvtStore<SatID>* pDefaultEphemeris;
00399
00401 virtual void InitializeValues()
00402 { setInitialRxPosition(); };
00403
00404
00410 virtual int setInitialRxPosition( const double& aRx,
00411 const double& bRx,
00412 const double& cRx,
00413 Position::CoordinateSystem s = Position::Cartesian,
00414 GeoidModel *geoid = NULL );
00415
00416
00418 virtual int setInitialRxPosition(const Position& RxCoordinates);
00419
00420
00422 virtual int setInitialRxPosition();
00423
00424
00426 virtual double getTropoCorrections( TropModel *pTropModel,
00427 double elevation );
00428
00429
00431 virtual double getIonoCorrections( IonoModelStore *pIonoModel,
00432 DayTime Tr,
00433 Geodetic rxGeo,
00434 double elevation,
00435 double azimuth );
00436
00437
00439 virtual double getTGDCorrections( DayTime Tr,
00440 const XvtStore<SatID>& Eph,
00441 SatID sat );
00442
00443
00444 private:
00445
00446
00448 static int classIndex;
00449
00451 int index;
00452
00454 void setIndex(void)
00455 { index = classIndex++; };
00456
00457
00458 };
00459
00461
00462 }
00463 #endif // MODELOBSFIXEDSTATION_HPP