SP3NavDataFactory.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #ifndef GNSSTK_SP3NAVDATAFACTORY_HPP
40 #define GNSSTK_SP3NAVDATAFACTORY_HPP
41 
43 #include "SP3Data.hpp"
44 #include "SP3Header.hpp"
45 #include "gnsstk_export.h"
46 
47 namespace gnsstk
48 {
50 
51 
59  {
60  public:
62  enum class ClkInterpType
63  {
64  Linear,
65  Lagrange
66  };
68  GNSSTK_EXPORT static const ObsID oidGPS, oidGalileo, oidQZSS, oidGLONASS,
71  GNSSTK_EXPORT static const NavType ntGPS, ntGalileo, ntQZSS, ntGLONASS,
73 
79 
82  {
83  }
84 
103  bool find(const NavMessageID& nmid, const CommonTime& when,
104  NavDataPtr& navOut, SVHealth xmitHealth, NavValidityType valid,
105  NavSearchOrder order) override;
106 
108  bool process(const std::string& filename,
109  NavDataFactoryCallback& cb) override;
110 
120  bool addDataSource(const std::string& source) override;
121 
123  std::string getFactoryFormats() const override;
124 
135  static bool convertToOrbit(const SP3Header& head, const SP3Data& navIn,
136  bool isC, NavDataPtr& navOut);
137 
148  static bool convertToClock(const SP3Header& head, const SP3Data& navIn,
149  bool isC, NavDataPtr& clkOut);
150 
162  static bool transNavMsgID(const NavMessageID& nmidIn,
163  NavMessageID& nmidOut);
164 
167  void clearClock()
168  { data.erase(NavMessageType::Clock); }
169 
181  void useRinexClockData(bool useRC = true);
182 
185  { return storeTimeSystem; }
186 
189  { return checkDataGapPos; }
190 
193  { checkDataGapPos = checkDataGapClk = false; }
194 
197  { checkDataGapPos = false; }
198 
200  double getPosGapInterval() const
201  { return gapIntervalPos; }
202 
206 
209  { return checkDataGapClk; }
210 
213  { checkDataGapClk = false; }
214 
216  double getClkGapInterval() const
217  { return gapIntervalClk; }
218 
222 
225  { return checkIntervalPos; }
226 
229  { return checkIntervalClk; }
230 
233  { checkIntervalPos = checkIntervalClk = false; }
234 
237  { checkIntervalPos = false; }
238 
241  { checkIntervalClk = false; }
242 
244  double getPosMaxInterval() const
245  { return maxIntervalPos; }
246 
248  double getClockMaxInterval() const
249  { return maxIntervalClk; }
250 
255 
260 
264  void rejectBadPositions(bool flag)
265  { rejectBadPosFlag = flag; }
266 
270  void rejectBadClocks(bool flag)
271  { rejectBadClockFlag = flag; }
272 
276  void rejectPredPositions(bool flag)
277  { rejectPredPosFlag = flag; }
278 
281  void rejectPredClocks(bool flag)
282  { rejectPredClockFlag = flag; }
283 
286  double getPositionTimeStep(const SatID& sat) const;
287 
290  double getClockTimeStep(const SatID& sat) const;
291 
293  unsigned int getPositionInterpOrder() const
294  { return 2*halfOrderPos; }
295 
298  void setPositionInterpOrder(unsigned int order)
299  { halfOrderPos = (order+1)/2; }
300 
303  unsigned int getClockInterpOrder() const
304  { return 2*halfOrderClk; }
305 
309  void setClockInterpOrder(unsigned int order);
310 
313  void setClockLagrangeInterp();
314 
317  void setClockLinearInterp();
318 
321  void dumpConfig(std::ostream& s) const;
322 
323  private:
332  bool addRinexClock(const std::string& source, NavDataFactoryCallback& cb);
333 
347  bool store(bool process, NavDataFactoryCallback& cb, NavDataPtr& obj);
348 
362  bool findGeneric(NavMessageType nmt, const NavSatelliteID& nsid,
363  const CommonTime& when, NavDataPtr& navData);
364 
365  bool findIterator(NavSatMap::iterator& sati,
366  const CommonTime& when, NavDataPtr& navData,
367  unsigned halfOrder, bool findEph,
368  bool checkDataGap, bool checkInterval,
369  double gapInterval, double maxInterval);
370 
383  void interpolateEph(const NavMap::iterator& ti1,
384  const NavMap::iterator& ti3,
385  const CommonTime& when, NavDataPtr& navData);
386 
399  void interpolateClk(const NavMap::iterator& ti1,
400  const NavMap::iterator& ti3,
401  const CommonTime& when, NavDataPtr& navData);
402 
413  bool loadIntoMap(const std::string& filename,
414  NavMessageMap& navMap,
415  NavNearMessageMap& navNearMap,
416  OffsetCvtMap& ofsMap) override
417  { return false; }
418 
425  static bool setSignal(const SatID& sat, NavMessageID& signal);
426 
430  double nomTimeStep(const NavMessageID& nmid) const;
431 
435 
441 
445 
451 
455 
462 
468 
475 
481 
486  unsigned halfOrderPos;
487 
492  unsigned halfOrderClk;
493 
498 
502 
508 
512 
518 
521  };
522 
524 
525 }
526 
527 #endif // GNSSTK_SP3NAVDATAFACTORY_HPP
gnsstk::SP3NavDataFactory::addDataSource
bool addDataSource(const std::string &source) override
Definition: SP3NavDataFactory.cpp:556
gnsstk::NavDataPtr
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
Definition: NavData.hpp:62
gnsstk::NavMessageType::Clock
@ Clock
SV Clock offset data. Currently only used by SP3.
gnsstk::SP3NavDataFactory::store
bool store(bool process, NavDataFactoryCallback &cb, NavDataPtr &obj)
Definition: SP3NavDataFactory.cpp:943
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::SP3NavDataFactory::interpolateClk
void interpolateClk(const NavMap::iterator &ti1, const NavMap::iterator &ti3, const CommonTime &when, NavDataPtr &navData)
Definition: SP3NavDataFactory.cpp:1184
gnsstk::SP3NavDataFactory::halfOrderClk
unsigned halfOrderClk
Definition: SP3NavDataFactory.hpp:492
SP3Header.hpp
gnsstk::SP3NavDataFactory::setClockLinearInterp
void setClockLinearInterp()
Definition: SP3NavDataFactory.cpp:1415
gnsstk::SP3NavDataFactory::getClockTimeStep
double getClockTimeStep(const SatID &sat) const
Definition: SP3NavDataFactory.cpp:1431
SP3Data.hpp
gnsstk::SP3NavDataFactory::addRinexClock
bool addRinexClock(const std::string &source, NavDataFactoryCallback &cb)
Definition: SP3NavDataFactory.cpp:709
gnsstk::NavDataFactoryWithStore::OffsetCvtMap
std::map< TimeCvtKey, OffsetEpochMap > OffsetCvtMap
Map from the time system conversion pair to the conversion objects.
Definition: NavDataFactoryWithStore.hpp:74
gnsstk::NavMessageMap
std::map< NavMessageType, NavSatMap > NavMessageMap
Map nav message type to the rest of the storage.
Definition: NavData.hpp:71
gnsstk::SP3NavDataFactory::disableDataGapCheck
void disableDataGapCheck()
Disable checking of data gaps in both position and clock.
Definition: SP3NavDataFactory.hpp:192
gnsstk::SP3NavDataFactory::ntGLONASS
static const GNSSTK_EXPORT NavType ntGLONASS
Definition: SP3NavDataFactory.hpp:71
gnsstk::SP3NavDataFactory::checkIntervalClk
bool checkIntervalClk
Definition: SP3NavDataFactory.hpp:474
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::SP3NavDataFactory::checkDataGapPos
bool checkDataGapPos
Definition: SP3NavDataFactory.hpp:440
gnsstk::SP3NavDataFactory::SP3NavDataFactory
SP3NavDataFactory()
Definition: SP3NavDataFactory.cpp:83
gnsstk::SP3NavDataFactory::findGeneric
bool findGeneric(NavMessageType nmt, const NavSatelliteID &nsid, const CommonTime &when, NavDataPtr &navData)
Definition: SP3NavDataFactory.cpp:272
gnsstk::SP3NavDataFactory::getPositionInterpOrder
unsigned int getPositionInterpOrder() const
Get current interpolation order for the position table.
Definition: SP3NavDataFactory.hpp:293
gnsstk::SP3NavDataFactory::rejectBadPositions
void rejectBadPositions(bool flag)
Definition: SP3NavDataFactory.hpp:264
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::SP3NavDataFactory::setPositionInterpOrder
void setPositionInterpOrder(unsigned int order)
Definition: SP3NavDataFactory.hpp:298
gnsstk::SP3NavDataFactory::rejectPredPosFlag
bool rejectPredPosFlag
Definition: SP3NavDataFactory.hpp:511
gnsstk::SP3NavDataFactory::oidGPS
static const GNSSTK_EXPORT ObsID oidGPS
Generic ObsIDs for each GNSS.
Definition: SP3NavDataFactory.hpp:68
gnsstk::SP3NavDataFactory::disablePosDataGapCheck
void disablePosDataGapCheck()
Disable checking of position data gaps.
Definition: SP3NavDataFactory.hpp:196
gnsstk::SP3NavDataFactory::convertToOrbit
static bool convertToOrbit(const SP3Header &head, const SP3Data &navIn, bool isC, NavDataPtr &navOut)
Definition: SP3NavDataFactory.cpp:836
gnsstk::SP3NavDataFactory::getPosMaxInterval
double getPosMaxInterval() const
Get current maximum interval in the position store.
Definition: SP3NavDataFactory.hpp:244
gnsstk::SP3NavDataFactory::setPosGapInterval
void setPosGapInterval(double interval)
Set position gap interval and turn on gap checking.
Definition: SP3NavDataFactory.hpp:204
gnsstk::SP3NavDataFactory::ntQZSS
static const GNSSTK_EXPORT NavType ntQZSS
Definition: SP3NavDataFactory.hpp:71
gnsstk::SVHealth
SVHealth
Identify different types of SV health states.
Definition: SVHealth.hpp:52
gnsstk::NavValidityType
NavValidityType
Definition: NavValidityType.hpp:53
gnsstk::SP3NavDataFactory::disablePosIntervalCheck
void disablePosIntervalCheck()
Disable checking of maximum interval in position store.
Definition: SP3NavDataFactory.hpp:236
gnsstk::NavSearchOrder
NavSearchOrder
Specify the behavior of nav data searches in NavLibrary/NavDataFactory.
Definition: NavSearchOrder.hpp:51
gnsstk::SP3NavDataFactory::getFactoryFormats
std::string getFactoryFormats() const override
Return a comma-separated list of formats supported by this factory.
Definition: SP3NavDataFactory.cpp:823
gnsstk::SP3NavDataFactory::disableClockIntervalCheck
void disableClockIntervalCheck()
Disable checking of maximum interval in clock store.
Definition: SP3NavDataFactory.hpp:240
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::SP3NavDataFactory::maxIntervalPos
double maxIntervalPos
Definition: SP3NavDataFactory.hpp:467
gnsstk::SP3NavDataFactory::maxIntervalClk
double maxIntervalClk
Definition: SP3NavDataFactory.hpp:480
gnsstk::SP3NavDataFactory::setClkGapInterval
void setClkGapInterval(double interval)
Set clock gap interval and turn on gap checking.
Definition: SP3NavDataFactory.hpp:220
gnsstk::SP3NavDataFactory::interpType
ClkInterpType interpType
Clock data interpolation method.
Definition: SP3NavDataFactory.hpp:520
gnsstk::NavDataFactoryWithStoreFile
Define an interface for loading nav data from a file.
Definition: NavDataFactoryWithStoreFile.hpp:51
gnsstk::SP3NavDataFactory::oidGLONASS
static const GNSSTK_EXPORT ObsID oidGLONASS
Definition: SP3NavDataFactory.hpp:68
gnsstk::NavDataFactoryCallback
Definition: NavDataFactoryCallback.hpp:54
gnsstk::SP3NavDataFactory::find
bool find(const NavMessageID &nmid, const CommonTime &when, NavDataPtr &navOut, SVHealth xmitHealth, NavValidityType valid, NavSearchOrder order) override
Definition: SP3NavDataFactory.cpp:238
gnsstk::SP3NavDataFactory::setSignal
static bool setSignal(const SatID &sat, NavMessageID &signal)
Definition: SP3NavDataFactory.cpp:1333
gnsstk::SP3NavDataFactory::~SP3NavDataFactory
virtual ~SP3NavDataFactory()
Clean up.
Definition: SP3NavDataFactory.hpp:81
gnsstk::SP3NavDataFactory::rejectPredClockFlag
bool rejectPredClockFlag
Definition: SP3NavDataFactory.hpp:517
gnsstk::SP3NavDataFactory::ntBeiDou
static const GNSSTK_EXPORT NavType ntBeiDou
Definition: SP3NavDataFactory.hpp:72
gnsstk::SP3NavDataFactory::checkIntervalPos
bool checkIntervalPos
Definition: SP3NavDataFactory.hpp:461
gnsstk::SP3NavDataFactory::checkDataGapClk
bool checkDataGapClk
Definition: SP3NavDataFactory.hpp:450
gnsstk::SP3NavDataFactory::setPosMaxInterval
void setPosMaxInterval(double interval)
Definition: SP3NavDataFactory.hpp:253
gnsstk::SP3NavDataFactory::rejectBadClockFlag
bool rejectBadClockFlag
Definition: SP3NavDataFactory.hpp:507
gnsstk::SP3NavDataFactory::getPositionTimeStep
double getPositionTimeStep(const SatID &sat) const
Definition: SP3NavDataFactory.cpp:1423
gnsstk::SP3NavDataFactory::rejectPredPositions
void rejectPredPositions(bool flag)
Definition: SP3NavDataFactory.hpp:276
gnsstk::ObsID
Definition: ObsID.hpp:82
gnsstk::SP3NavDataFactory::useRinexClockData
void useRinexClockData(bool useRC=true)
Definition: SP3NavDataFactory.cpp:1387
gnsstk::SP3NavDataFactory::convertToClock
static bool convertToClock(const SP3Header &head, const SP3Data &navIn, bool isC, NavDataPtr &clkOut)
Definition: SP3NavDataFactory.cpp:903
gnsstk::SP3NavDataFactory::ClkInterpType
ClkInterpType
Types of interpolation that can be used on the clock data.
Definition: SP3NavDataFactory.hpp:62
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::SP3NavDataFactory::setClockInterpOrder
void setClockInterpOrder(unsigned int order)
Definition: SP3NavDataFactory.cpp:1397
gnsstk::SP3NavDataFactory::transNavMsgID
static bool transNavMsgID(const NavMessageID &nmidIn, NavMessageID &nmidOut)
Definition: SP3NavDataFactory.cpp:1379
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
gnsstk::SP3NavDataFactory::process
bool process(const std::string &filename, NavDataFactoryCallback &cb) override
Definition: SP3NavDataFactory.cpp:566
example6.valid
valid
Definition: example6.py:20
NavDataFactoryWithStoreFile.hpp
gnsstk::SP3NavDataFactory::useSP3clock
bool useSP3clock
Definition: SP3NavDataFactory.hpp:497
gnsstk::SP3Header
Definition: SP3Header.hpp:68
gnsstk::SP3NavDataFactory::gapIntervalClk
double gapIntervalClk
Definition: SP3NavDataFactory.hpp:454
gnsstk::SP3NavDataFactory::getTimeSystem
TimeSystem getTimeSystem() const
Return the time system of the loaded data.
Definition: SP3NavDataFactory.hpp:184
gnsstk::SP3NavDataFactory::rejectBadClocks
void rejectBadClocks(bool flag)
Definition: SP3NavDataFactory.hpp:270
gnsstk::SP3NavDataFactory::rejectBadPosFlag
bool rejectBadPosFlag
Definition: SP3NavDataFactory.hpp:501
example6.interval
interval
Definition: example6.py:75
gnsstk::SP3NavDataFactory::disableIntervalCheck
void disableIntervalCheck()
Disable checking of maximum interval in both position and clock.
Definition: SP3NavDataFactory.hpp:232
gnsstk::SP3NavDataFactory::oidBeiDou
static const GNSSTK_EXPORT ObsID oidBeiDou
Definition: SP3NavDataFactory.hpp:69
gnsstk::SP3NavDataFactory::getClockMaxInterval
double getClockMaxInterval() const
Get current maximum interval in the clock store.
Definition: SP3NavDataFactory.hpp:248
gnsstk::SP3NavDataFactory::gapIntervalPos
double gapIntervalPos
Definition: SP3NavDataFactory.hpp:444
gnsstk::SP3NavDataFactory::isClkDataGapCheck
bool isClkDataGapCheck()
Is clock gap checking on?
Definition: SP3NavDataFactory.hpp:208
gnsstk::NavDataFactoryWithStore::data
NavMessageMap data
Internal storage of navigation data for User searches.
Definition: NavDataFactoryWithStore.hpp:456
gnsstk::SP3NavDataFactory::ntGalileo
static const GNSSTK_EXPORT NavType ntGalileo
Definition: SP3NavDataFactory.hpp:71
gnsstk::SP3NavDataFactory
Definition: SP3NavDataFactory.hpp:58
gnsstk::SP3NavDataFactory::ntGPS
static const GNSSTK_EXPORT NavType ntGPS
Generic NavTypes for each GNSS.
Definition: SP3NavDataFactory.hpp:71
gnsstk::NavMessageType
NavMessageType
Identify different types of navigation message data.
Definition: NavMessageType.hpp:59
example4.navData
navData
Definition: example4.py:15
gnsstk::SP3NavDataFactory::findIterator
bool findIterator(NavSatMap::iterator &sati, const CommonTime &when, NavDataPtr &navData, unsigned halfOrder, bool findEph, bool checkDataGap, bool checkInterval, double gapInterval, double maxInterval)
Definition: SP3NavDataFactory.cpp:343
gnsstk::SP3NavDataFactory::nomTimeStep
double nomTimeStep(const NavMessageID &nmid) const
Definition: SP3NavDataFactory.cpp:1439
gnsstk::SP3NavDataFactory::getClockInterpOrder
unsigned int getClockInterpOrder() const
Definition: SP3NavDataFactory.hpp:303
gnsstk::SP3NavDataFactory::clearClock
void clearClock()
Definition: SP3NavDataFactory.hpp:167
gnsstk::SP3NavDataFactory::ClkInterpType::Lagrange
@ Lagrange
gnsstk::SP3NavDataFactory::isPosIntervalCheck
bool isPosIntervalCheck()
Is interval checking for position on?
Definition: SP3NavDataFactory.hpp:224
gnsstk::SP3NavDataFactory::disableClkDataGapCheck
void disableClkDataGapCheck()
Disable checking of clock data gaps.
Definition: SP3NavDataFactory.hpp:212
gnsstk::SP3NavDataFactory::isPosDataGapCheck
bool isPosDataGapCheck()
Is position gap checking on?
Definition: SP3NavDataFactory.hpp:188
gnsstk::SP3NavDataFactory::isClkIntervalCheck
bool isClkIntervalCheck()
Is interval checking for clock on?
Definition: SP3NavDataFactory.hpp:228
gnsstk::SP3Data
Definition: SP3Data.hpp:96
gnsstk::SP3NavDataFactory::storeTimeSystem
TimeSystem storeTimeSystem
Definition: SP3NavDataFactory.hpp:434
gnsstk::SP3NavDataFactory::dumpConfig
void dumpConfig(std::ostream &s) const
Definition: SP3NavDataFactory.cpp:1487
gnsstk::NavType
NavType
Supported navigation types.
Definition: NavType.hpp:58
gnsstk::NavNearMessageMap
std::map< NavMessageType, NavNearSatMap > NavNearMessageMap
Map nav message type to the rest of the storage.
Definition: NavData.hpp:81
gnsstk::SP3NavDataFactory::loadIntoMap
bool loadIntoMap(const std::string &filename, NavMessageMap &navMap, NavNearMessageMap &navNearMap, OffsetCvtMap &ofsMap) override
Definition: SP3NavDataFactory.hpp:413
gnsstk::SP3NavDataFactory::halfOrderPos
unsigned halfOrderPos
Definition: SP3NavDataFactory.hpp:486
gnsstk::SP3NavDataFactory::interpolateEph
void interpolateEph(const NavMap::iterator &ti1, const NavMap::iterator &ti3, const CommonTime &when, NavDataPtr &navData)
Definition: SP3NavDataFactory.cpp:1010
gnsstk::SP3NavDataFactory::setClockLagrangeInterp
void setClockLagrangeInterp()
Definition: SP3NavDataFactory.cpp:1407
gnsstk::SP3NavDataFactory::getClkGapInterval
double getClkGapInterval() const
Get current clock gap interval.
Definition: SP3NavDataFactory.hpp:216
gnsstk::SP3NavDataFactory::oidQZSS
static const GNSSTK_EXPORT ObsID oidQZSS
Definition: SP3NavDataFactory.hpp:68
gnsstk::SP3NavDataFactory::setClockMaxInterval
void setClockMaxInterval(double interval)
Definition: SP3NavDataFactory.hpp:258
gnsstk::SP3NavDataFactory::ClkInterpType::Linear
@ Linear
gnsstk::SP3NavDataFactory::getPosGapInterval
double getPosGapInterval() const
Get current position gap interval.
Definition: SP3NavDataFactory.hpp:200
gnsstk::SP3NavDataFactory::rejectPredClocks
void rejectPredClocks(bool flag)
Definition: SP3NavDataFactory.hpp:281
gnsstk::SP3NavDataFactory::oidGalileo
static const GNSSTK_EXPORT ObsID oidGalileo
Definition: SP3NavDataFactory.hpp:68


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:41