⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 computeiuraweights.hpp

📁 一个gps小工具包
💻 HPP
字号:
#pragma ident "$Id: $"/** * @file ComputeIURAWeights.hpp * This class computes satellites weights based on URA Index and is * meant to be used with GNSS data structures. */#ifndef COMPUTEIURAWEIGHTS_HPP#define COMPUTEIURAWEIGHTS_HPP//============================================================================////  This file is part of GPSTk, the GPS Toolkit.////  The GPSTk is free software; you can redistribute it and/or modify//  it under the terms of the GNU Lesser General Public License as published//  by the Free Software Foundation; either version 2.1 of the License, or//  any later version.////  The GPSTk is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU Lesser General Public License for more details.////  You should have received a copy of the GNU Lesser General Public//  License along with GPSTk; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//  //  Dagoberto Salazar - gAGE ( http://www.gage.es ). 2006, 2007////============================================================================#include "WeightBase.hpp"#include "EngEphemeris.hpp"#include "TabularEphemerisStore.hpp"#include "GPSEphemerisStore.hpp"#include "ProcessingClass.hpp"namespace gpstk{      /** @addtogroup DataStructures */      //@{      /** This class computes satellites weights based on URA Index.       *       * This class is meant to be used with the GNSS data structures objects       * found in "DataStructures" class.       *       * A typical way to use this class follows:       *       * @code       *   RinexObsStream rin("ebre0300.02o");       *   RinexNavStream rnavin("brdc0300.02n");       *   RinexNavData rNavData;       *   GPSEphemerisStore bceStore;       *   while (rnavin >> rNavData) bceStore.addEphemeris(rNavData);       *   bceStore.SearchPast();  // This is the default       *       *   gnssRinex gRin;       *   ComputeIURAWeights iuraW(bceStore);       *       *   while(rin >> gRin) {       *      gRin >> iuraW;       *   }       * @endcode       *       * The "ComputeIURAWeights" object will visit every satellite in the       * GNSS data structure that is "gRin" and will try to compute its weight       * based on the corresponding IURA. For precise ephemeris, a fixed value       * of IURA = 0.1 m will be set, returning a weight of 100.       *       * When used with the ">>" operator, this class returns the same incoming       * data structure with the weights inserted along their corresponding       * satellites. Be warned that if it is not possible to compute the       * weight for a given satellite, it will be summarily deleted from       * the data structure.       *       */   class ComputeIURAWeights : public WeightBase, public ProcessingClass   {   public:         /// Default constructor      ComputeIURAWeights() : pBCEphemeris(NULL), pTabEphemeris(NULL)      { setIndex(); };         /** Common constructor          *          * @param bcephem   GPSEphemerisStore object holding the ephemeris.          */      ComputeIURAWeights(GPSEphemerisStore& bcephem)         : pBCEphemeris(&bcephem), pTabEphemeris(NULL)      { setIndex(); };         /** Common constructor          *          * @param tabephem  TabularEphemerisStore object holding the          *                  ephemeris.          */      ComputeIURAWeights(TabularEphemerisStore& tabephem)         : pBCEphemeris(NULL), pTabEphemeris(&tabephem)      { setIndex(); };         /** Common constructor          *          * @param ephem  XvtStore<SatID> object holding the ephemeris.          */      ComputeIURAWeights(XvtStore<SatID>& ephem)      { setDefaultEphemeris(ephem); setIndex(); };         /** Returns a satTypeValueMap object, adding the new data generated          *  when calling this object.          *          * @param gData     Data object holding the data.          */      virtual satTypeValueMap& Process( const DayTime& time,                                        satTypeValueMap& gData );         /** Returns a gnnsSatTypeValue object, adding the new data          *  generated when calling this object.          *          * @param gData    Data object holding the data.          */      virtual gnssSatTypeValue& Process(gnssSatTypeValue& gData)      { Process(gData.header.epoch, gData.body); return gData; };         /** Returns a gnnsRinex object, adding the new data generated          *  when calling this object.          *          * @param gData    Data object holding the data.          */      virtual gnssRinex& Process(gnssRinex& gData)      { Process(gData.header.epoch, gData.body); return gData; };         /** Method to set the default ephemeris to be used with GNSS          *  data structures.          *          * @param ephem     EphemerisStore object to be used          */      virtual void setDefaultEphemeris(XvtStore<SatID>& ephem);         /** Method to set the default ephemeris to be used with GNSS          *  data structures.          *          * @param ephem     GPSEphemerisStore object to be used          */      virtual void setDefaultEphemeris(GPSEphemerisStore& ephem)      { pBCEphemeris = &ephem; pTabEphemeris = NULL; };         /** Method to set the default ephemeris to be used with GNSS          *  data structures.          *          * @param ephem     TabularEphemerisStore object to be used          */      virtual void setDefaultEphemeris(TabularEphemerisStore& ephem)      { pBCEphemeris = NULL; pTabEphemeris = &ephem; };         /// Returns an index identifying this object.      virtual int getIndex(void) const;         /// Returns a string identifying this object.      virtual std::string getClassName(void) const;         /** Sets the index to a given arbitrary value. Use with caution.          *          * @param newindex      New integer index to be assigned to          *                      current object.          */      void setIndex(const int newindex)      { index = newindex; };         /// Destructor      virtual ~ComputeIURAWeights() {};   protected:         /// Pointer to default broadcast ephemeris to be used.      GPSEphemerisStore* pBCEphemeris;         /// Pointer to default precise ephemeris to be used.      TabularEphemerisStore* pTabEphemeris;         /** Method to really get the weight of a given satellite.          *          * @param sat           Satellite          * @param time          Epoch          * @param preciseEph    Precise ephemerisStore object to be used          */      virtual double getWeight( const SatID& sat,                                const DayTime& time,                                const TabularEphemerisStore* preciseEph )         throw(InvalidWeights);         /** Method to really get the weight of a given satellite.          *          * @param sat       Satellite          * @param time      Epoch          * @param bcEph     Broadcast EphemerisStore object to be used          */      virtual double getWeight( const SatID& sat,                                const DayTime& time,                                const GPSEphemerisStore* bcEph )         throw(InvalidWeights);   private:         /// Initial index assigned to this class.      static int classIndex;         /// Index belonging to this object.      int index;         /// Sets the index and increment classIndex.      void setIndex(void)      { index = classIndex++; };   }; // end class ComputeIURAWeights      //@}   }#endif // COMPUTEIURAWEIGHTS_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -