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

📄 tropmodel.hpp

📁 GPS定位中对流层模型改正
💻 HPP
📖 第 1 页 / 共 5 页
字号:
         /// Compute and return the zenith delay for wet component of the troposphere      virtual double wet_zenith_delay(void) const         throw(InvalidTropModel);         /// Compute and return the mapping function for dry component         /// of the troposphere         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double dry_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Compute and return the mapping function for wet component         /// of the troposphere         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double wet_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Re-define the tropospheric model with explicit weather data.         /// Typically called just before correction().         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent      virtual void setWeather(const double& T,                              const double& P,                              const double& H)         throw(InvalidParameter);         /// Re-define the tropospheric model with explicit weather data.         /// Typically called just before correction().         /// @param wx the weather to use for this correction             virtual void setWeather(const WxObservation& wx)         throw(InvalidParameter);   private:      double Cdrydelay;      double Cwetdelay;      double Cdrymap;      double Cwetmap;   };    // end class SimpleTropModel   //---------------------------------------------------------------------------------   /** Tropospheric model based on Goad and Goodman(1974),    *  "A Modified Hopfield Tropospheric Refraction Correction Model," Paper    * presented at the Fall Annual Meeting of the American Geophysical Union,    * San Francisco, December 1974, as presented in Leick, "GPS Satellite Surveying,"    * Wiley, NY, 1990, Chapter 9 (note particularly Table 9.1).    */   class GGTropModel : public TropModel   {   public:         /// Empty constructor      GGTropModel(void);         /// Creates a trop model, with weather observation input         /// @param wx the weather to use for this correction.      GGTropModel(const WxObservation& wx)         throw(InvalidParameter);         /// Create a tropospheric model from explicit weather data         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent      GGTropModel(const double& T,                  const double& P,                  const double& H)         throw(InvalidParameter);         /// Compute and return the zenith delay for dry component         /// of the troposphere      virtual double dry_zenith_delay(void) const         throw(InvalidTropModel);         /// Compute and return the zenith delay for wet component         /// of the troposphere      virtual double wet_zenith_delay(void) const         throw(InvalidTropModel);         /// Compute and return the mapping function for dry component         /// of the troposphere         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double dry_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Compute and return the mapping function for wet component         /// of the troposphere         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double wet_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Re-define the tropospheric model with explicit weather data.         /// Typically called initially, and whenever the weather changes.         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent      virtual void setWeather(const double& T,                              const double& P,                              const double& H)         throw(InvalidParameter);         /// Re-define the tropospheric model with explicit weather data.         /// Typically called just before correction().         /// @param wx the weather to use for this correction             virtual void setWeather(const WxObservation& wx)         throw(InvalidParameter);   private:      double Cdrydelay;      double Cwetdelay;      double Cdrymap;      double Cwetmap;   };    // end class GGTropModel   //---------------------------------------------------------------------------------   /** Tropospheric model with heights based on Goad and Goodman(1974),    *  "A Modified Hopfield Tropospheric Refraction Correction Model," Paper    *  presented at the Fall Annual Meeting of the American Geophysical Union,    *  San Francisco, December 1974.    *    *  (Not the same as GGTropModel because this has height dependence, and the    *  computation of this model does not break cleanly into wet and dry components.)    *    *  NB this model requires heights, both of the weather parameters,    *    and of the receiver.    *  Thus, usually, caller will set heights at the same time the weather is set:    *    * @code    *    GGHeightTropModel ggh;    *    ggh.setWeather(T,P,H);    *    ggh.setHeights(hT,hP,hH);    * @endcode    *    *  and when the correction (and/or delay and map) is computed,    *  receiver height is set before the call to correction(elevation):    *    * @code    *    ggh.setReceiverHeight(height);    *    trop = ggh.correction(elevation);    * @endcode    *    *  NB setReceiverHeight(ht) sets the 'weather heights' as well, if they are not    *    already defined.    */   class GGHeightTropModel : public TropModel   {   public:         /// Empty constructor      GGHeightTropModel(void);         /// Creates a trop model, with weather observation input         /// @param wx the weather to use for this correction.      GGHeightTropModel(const WxObservation& wx)         throw(InvalidParameter);         /// Create a tropospheric model from explicit weather data         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent      GGHeightTropModel(const double& T,                        const double& P,                        const double& H)         throw(InvalidParameter);         /// Create a valid model from explicit input.         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent         /// @param hT height at which temperature applies in meters.         /// @param hP height at which atmospheric pressure applies in meters.         /// @param hH height at which relative humidity applies in meters.      GGHeightTropModel(const double& T,                        const double& P,                        const double& H,                        const double hT,                        const double hP,                        const double hH)         throw(InvalidParameter);         /// Compute and return the full tropospheric delay         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double correction(double elevation) const         throw(InvalidTropModel);         /**          * Compute and return the full tropospheric delay, given the positions of          * receiver and satellite and the time tag. This version is most useful          * within positioning algorithms, where the receiver position and timetag          * may vary; it computes the elevation (and other receiver location          * information) and passes them to appropriate set...() routines and the          * correction(elevation) routine.          * @param RX  Receiver position          * @param SV  Satellite position          * @param tt  Time tag of the signal           */      virtual double correction(const Position& RX,                                const Position& SV,                                const DayTime& tt)         throw(InvalidTropModel);         /** \deprecated          * Compute and return the full tropospheric delay, given the positions of          * receiver and satellite and the time tag. This version is most useful          * within positioning algorithms, where the receiver position and timetag          * may vary; it computes the elevation (and other receiver location          * information) and passes them to appropriate set...() routines and the          * correction(elevation) routine.          * @param RX  Receiver position in ECEF cartesian coordinates (meters)          * @param SV  Satellite position in ECEF cartesian coordinates (meters)          * @param tt  Time tag of the signal           */      virtual double correction(const Xvt& RX,                                const Xvt& SV,                                const DayTime& tt)         throw(InvalidTropModel);         /// Compute and return the zenith delay for dry component         /// of the troposphere      virtual double dry_zenith_delay(void) const         throw(InvalidTropModel);         /// Compute and return the zenith delay for wet component of the troposphere      virtual double wet_zenith_delay(void) const         throw(InvalidTropModel);         /// Compute and return the mapping function for dry component of         /// the troposphere.         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double dry_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Compute and return the mapping function for wet component of         /// the troposphere.         /// @param elevation Elevation of satellite as seen at receiver, in degrees      virtual double wet_mapping_function(double elevation) const         throw(InvalidTropModel);         /// Re-define the weather data.         /// Typically called initially, and whenever the weather changes.         /// @param T temperature in degrees Celsius         /// @param P atmospheric pressure in millibars         /// @param H relative humidity in percent      virtual void setWeather(const double& T,                              const double& P,                              const double& H)         throw(InvalidParameter);         /// Re-define the tropospheric model with explicit weather data.         /// Typically called just before correction().         /// @param wx the weather to use for this correction             virtual void setWeather(const WxObservation& wx)         throw(InvalidParameter);         /// Re-define the heights at which the weather parameters apply.         /// Typically called whenever setWeather is called.         /// @param hT height at which temperature applies in meters.         /// @param hP height at which atmospheric pressure applies in meters.         /// @param hH height at which relative humidity applies in meters.      void setHeights(const double& hT,                      const double& hP,                      const double& hH);         /// Define the receiver height; this required before calling         /// correction() or any of the zenith_delay or mapping_function routines.      void setReceiverHeight(const double& ht);   private:      double height;                // height (m) of the receiver      double htemp;                 // height (m) at which temp applies      double hpress;                // height (m) at which press applies      double hhumid;                // height (m) at which humid applies      bool validWeather;      bool validHeights;      bool validRxHeight;   };    // end class GGHeightTropModel   //---------------------------------------------------------------------------------   /** Tropospheric model developed by University of New Brunswick and described in    * "A Tropospheric Delay Model for the User of the Wide Area Augmentation    * System," J. Paul Collins and Richard B. Langley, Technical Report No. 187,    * Dept. of Geodesy and Geomatics Engineering, University of New Brunswick,    * 1997. See particularly Appendix C.    *    * This model includes a wet and dry component, and was designed for the user    * without access to measurements of temperature, pressure and relative humidity    * at ground level. Input of the receiver latitude, day of year and height    * above the ellipsoid are required, because the mapping functions depend on    * these quantities. In addition, if the weather (T,P,H) are not explicitly    * provided, this model interpolates a table of values, using latitude and day    * of year, to get the ground level weather parameters.    *    * Usually, the caller will set the latitude and day of year at the same    * time the weather is set (if weather is available):    *    * @code    *   NBTropModel nb;    *   nb.setReceiverLatitude(lat);    *   nb.setDayOfYear(doy);    *   nb.setWeather(T,P,H);       // OPTIONAL    * @endcode    *    * Then, when the correction (and/or delay and map) is computed, receiver height    * should be set before the call to correction(elevation):

⌨️ 快捷键说明

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