ModelObsFixedStation.hpp

Go to the documentation of this file.
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 //  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 //  Dagoberto Salazar - gAGE ( http://www.gage.es ). 2007, 2008
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    }; // End of class 'ModelObsFixedStation'
00459 
00461 
00462 }  // End of namespace gpstk
00463 #endif   // MODELOBSFIXEDSTATION_HPP

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