00001 #pragma ident "$Id: CorrectObservables.hpp 1770 2009-03-04 13:10:43Z architest $"
00002
00009 #ifndef GPSTK_CORRECTOBSERVABLES_HPP
00010 #define GPSTK_CORRECTOBSERVABLES_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 <string>
00037 #include "ProcessingClass.hpp"
00038 #include "XvtStore.hpp"
00039 #include "Triple.hpp"
00040 #include "Position.hpp"
00041 #include "Antenna.hpp"
00042 #include "geometry.hpp"
00043
00044
00045
00046 namespace gpstk
00047 {
00048
00051
00052
00110 class CorrectObservables : public ProcessingClass
00111 {
00112 public:
00113
00115 CorrectObservables()
00116 : pEphemeris(NULL), nominalPos(0.0, 0.0, 0.0), useAzimuth(false),
00117 L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0),
00118 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00119 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00120 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00121 { setIndex(); };
00122
00123
00129 CorrectObservables(XvtStore<SatID>& ephem)
00130 : pEphemeris(&ephem), nominalPos(0.0, 0.0, 0.0), useAzimuth(false),
00131 L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0),
00132 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00133 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00134 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00135 { setIndex(); };
00136
00137
00144 CorrectObservables( XvtStore<SatID>& ephem,
00145 const Position& stapos )
00146 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00147 L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0),
00148 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00149 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00150 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00151 { setIndex(); };
00152
00153
00162 CorrectObservables( XvtStore<SatID>& ephem,
00163 const Position& stapos,
00164 const Antenna& antennaObj )
00165 : pEphemeris(&ephem), nominalPos(stapos), antenna(antennaObj),
00166 useAzimuth(true),
00167 L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0),
00168 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00169 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00170 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00171 { setIndex(); };
00172
00173
00182 CorrectObservables( XvtStore<SatID>& ephem,
00183 const Position& stapos,
00184 const Triple& L1pc )
00185 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00186 L1PhaseCenter(L1pc), L2PhaseCenter(0.0, 0.0, 0.0),
00187 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00188 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00189 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00190 { setIndex(); };
00191
00192
00203 CorrectObservables( XvtStore<SatID>& ephem,
00204 const Position& stapos,
00205 const Triple& L1pc,
00206 const Triple& L2pc )
00207 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00208 L1PhaseCenter(L1pc), L2PhaseCenter(L2pc),
00209 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00210 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00211 monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0)
00212 { setIndex(); };
00213
00214
00227 CorrectObservables( XvtStore<SatID>& ephem,
00228 const Position& stapos,
00229 const Triple& L1pc,
00230 const Triple& L2pc,
00231 const Triple& extra )
00232 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00233 L1PhaseCenter(L1pc), L2PhaseCenter(L2pc),
00234 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00235 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00236 monumentVector(0.0, 0.0, 0.0), extraBiases(extra)
00237 { setIndex(); };
00238
00239
00253 CorrectObservables( XvtStore<SatID>& ephem,
00254 const Position& stapos,
00255 const Triple& L1pc,
00256 const Triple& L2pc,
00257 const Triple& monument,
00258 const Triple& extra )
00259 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00260 L1PhaseCenter(L1pc), L2PhaseCenter(L2pc),
00261 L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0),
00262 L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0),
00263 monumentVector(monument), extraBiases(extra)
00264 { setIndex(); };
00265
00266
00288 CorrectObservables( XvtStore<SatID>& ephem,
00289 const Position& stapos,
00290 const Triple& L1pc,
00291 const Triple& L2pc,
00292 const Triple& L5pc,
00293 const Triple& L6pc,
00294 const Triple& L7pc,
00295 const Triple& L8pc,
00296 const Triple& monument,
00297 const Triple& extra )
00298 : pEphemeris(&ephem), nominalPos(stapos), useAzimuth(false),
00299 L1PhaseCenter(L1pc), L2PhaseCenter(L2pc),
00300 L5PhaseCenter(L5pc), L6PhaseCenter(L6pc),
00301 L7PhaseCenter(L7pc), L8PhaseCenter(L8pc),
00302 monumentVector(monument), extraBiases(extra)
00303 { setIndex(); };
00304
00305
00312 virtual satTypeValueMap& Process( const DayTime& time,
00313 satTypeValueMap& gData )
00314 throw(ProcessingException);
00315
00316
00322 virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)
00323 throw(ProcessingException)
00324 { Process(gData.header.epoch, gData.body); return gData; };
00325
00326
00332 virtual gnssRinex& Process(gnssRinex& gData)
00333 throw(ProcessingException)
00334 { Process(gData.header.epoch, gData.body); return gData; };
00335
00336
00338 virtual Position getNominalPosition(void) const
00339 { return nominalPos; };
00340
00341
00346 virtual CorrectObservables& setNominalPosition(const Position& stapos)
00347 { nominalPos = stapos; return (*this); };
00348
00349
00353 virtual XvtStore<SatID> *getEphemeris(void) const
00354 { return pEphemeris; };
00355
00356
00361 virtual CorrectObservables& setEphemeris(XvtStore<SatID>& ephem)
00362 { pEphemeris = &ephem; return (*this); };
00363
00364
00368 virtual Triple getL1pc(void) const
00369 { return L1PhaseCenter; };
00370
00371
00377 virtual CorrectObservables& setL1pc(const Triple& L1pc)
00378 { L1PhaseCenter = L1pc; return (*this); };
00379
00380
00384 virtual Triple getL2pc(void) const
00385 { return L2PhaseCenter; };
00386
00387
00393 virtual CorrectObservables& setL2pc(const Triple& L2pc)
00394 { L2PhaseCenter = L2pc; return (*this); };
00395
00396
00400 virtual Triple getL5pc(void) const
00401 { return L5PhaseCenter; };
00402
00403
00409 virtual CorrectObservables& setL5pc(const Triple& L5pc)
00410 { L5PhaseCenter = L5pc; return (*this); };
00411
00412
00416 virtual Triple getL6pc(void) const
00417 { return L6PhaseCenter; };
00418
00419
00425 virtual CorrectObservables& setL6pc(const Triple& L6pc)
00426 { L6PhaseCenter = L6pc; return (*this); };
00427
00428
00432 virtual Triple getL7pc(void) const
00433 { return L7PhaseCenter; };
00434
00435
00441 virtual CorrectObservables& setL7pc(const Triple& L7pc)
00442 { L7PhaseCenter = L7pc; return (*this); };
00443
00444
00448 virtual Triple getL8pc(void) const
00449 { return L8PhaseCenter; };
00450
00451
00457 virtual CorrectObservables& setL8pc(const Triple& L8pc)
00458 { L8PhaseCenter = L8pc; return (*this); };
00459
00460
00463 virtual Triple getMonument(void) const
00464 { return monumentVector; };
00465
00466
00471 virtual CorrectObservables& setMonument(const Triple& monument)
00472 { monumentVector = monument; return (*this); };
00473
00474
00478 virtual Triple getExtraBiases(void) const
00479 { return extraBiases; };
00480
00481
00488 virtual CorrectObservables& setExtraBiases(const Triple& extra)
00489 { extraBiases = extra; return (*this); };
00490
00491
00493 virtual Antenna getAntenna(void) const
00494 { return antenna; };
00495
00496
00501 virtual CorrectObservables& setAntenna(const Antenna& antennaObj)
00502 { antenna = antennaObj; useAzimuth = true; return (*this); };
00503
00504
00507 virtual bool getUseAzimuth(void) const
00508 { return useAzimuth; };
00509
00510
00515 virtual CorrectObservables& setUseAzimuth(bool useAzimuthPattern)
00516 { useAzimuth = useAzimuthPattern; return (*this); };
00517
00518
00520 virtual int getIndex(void) const;
00521
00522
00524 virtual std::string getClassName(void) const;
00525
00526
00528 virtual ~CorrectObservables() {};
00529
00530
00531 private:
00532
00533
00535 XvtStore<SatID> *pEphemeris;
00536
00537
00539 Position nominalPos;
00540
00541
00543 Antenna antenna;
00544
00545
00547 bool useAzimuth;
00548
00549
00551 Triple L1PhaseCenter;
00552
00553
00555 Triple L2PhaseCenter;
00556
00557
00559 Triple L5PhaseCenter;
00560
00561
00563 Triple L6PhaseCenter;
00564
00565
00567 Triple L7PhaseCenter;
00568
00569
00571 Triple L8PhaseCenter;
00572
00573
00575 Triple monumentVector;
00576
00577
00579 Triple extraBiases;
00580
00581
00583 static int classIndex;
00584
00586 int index;
00587
00589 void setIndex(void)
00590 { index = classIndex++; };
00591
00592
00593 };
00594
00595
00597
00598 }
00599
00600 #endif // GPSTK_CORRECTOBSERVABLES_HPP