modeledpr.hpp
来自「一个gps小工具包」· HPP 代码 · 共 426 行 · 第 1/2 页
HPP
426 行
#pragma ident "$Id: $"/** * @file ModeledPR.hpp * Class to compute modeled pseudoranges of a mobile receiver */#ifndef MODELEDPR_HPP#define MODELEDPR_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 "ModeledReferencePR.hpp"#include "Matrix.hpp"#include "Bancroft.hpp"#include "PRSolution.hpp"#include "DataStructures.hpp"namespace gpstk{ /** @addtogroup GPSsolutions */ //@{ /** This class compute modeled pseudoranges from satellites to a * mobile receiver. * * The main difference between this class and ModeledReferencePR is * that for a mobile receiver we should "prepare" the computation * giving an estimate of the mobile station position. This position * may be the last known position or it may be estimated using a method * such as Bancroft's. * * Prepare() method is used for this. * * This class may be used either in a Vector- and Matrix-oriented way, * or with GNSS data structure objects from "DataStructures" class. In * any case, it is intented to be used with stations where the position * changes with time. * * A typical way to use this class with GNSS data structures follows: * * @code * RinexObsStream rin("ebre0300.02o"); // Data stream * RinexNavStream rnavin("brdc0300.02n"); // Ephemeris data stream * RinexNavData rNavData; * GPSEphemerisStore bceStore; * while (rnavin >> rNavData) bceStore.addEphemeris(rNavData); * bceStore.SearchPast(); // This is the default * * RinexNavHeader rNavHeader; * IonoModelStore ionoStore; * IonoModel ioModel; * rnavin >> rNavHeader; // Read navigation RINEX header * ioModel.setModel(rNavHeader.ionAlpha, rNavHeader.ionBeta); * ionoStore.addIonoModel(DayTime::BEGINNING_OF_TIME, ioModel); * * // EBRE station nominal position * Position nominalPos(4833520.3800, 41536.8300, 4147461.2800); * * // Declare a tropospheric model object, setting the defaults * MOPSTropModel mopsTM( nominalPos.getAltitude(), * nominalPos.getGeodeticLatitude(), 30); * * // Declare the modeler object, setting all the parameters in * // one pass * // As stated, it will compute the model using the C1 observable * ModeledPR model(ionoStore, mopsTM, bceStore, TypeID::C1); * * // Set the initial apriori position using the Bancroft method * model.Prepare(); * * gnssRinex gRin; * * while(rin >> gRin) { * gRin >> model; * } * @endcode * * The "ModeledPR" object will visit every satellite in the * GNSS data structure that is "gRin" and will try to compute its * model: Prefit residual, geometric distance, relativity delay, * ionospheric/tropospheric corrections, geometry matrix, etc. * * When used with the ">>" operator, this class returns the same * incoming data structure with the extra data inserted along their * corresponding satellites. Be warned that if a given satellite does * not have the observations required, it will be summarily deleted * from the data structure. * * @sa ModeledPseudorangeBase.hpp and ModeledReferencePR.hpp for * base classes. * */ class ModeledPR : public ModeledReferencePR { public: /// Implicit constructor ModeledPR() : modelPrepared(false) {}; /** Explicit constructor, taking as input initial receiver * coordinates, default ionospheric and tropospheric models, * ephemeris to be used, default observable and whether TGD will * be computed or not. * * This constructor is meant to be used when working with GNSS * data structures in order to set the basic parameters from the * beginning. * * @param RxCoordinates Initial receiver coordinates. * @param dIonoModel Ionospheric model to be used by default. * @param dTropoModel Tropospheric model to be used by default. * @param dEphemeris XvtStore<SatID> object to be used by default. * @param dObservable Observable type to be used by default. * @param usetgd Whether TGD will be used by default or not. * * @sa DataStructures.hpp. */ ModeledPR( const Position& RxCoordinates, IonoModelStore& dIonoModel, TropModel& dTropoModel, XvtStore<SatID>& dEphemeris, const TypeID& dObservable, bool usetgd = true ) throw(Exception); /** Explicit constructor, taking as input initial receiver * coordinates, default ionospheric model, ephemeris to be used, * default observable and whether TGD will be computed or not. * * The default tropospheric model will be set to NULL. * * This constructor is meant to be used when working with GNSS * data structures in order to set the basic parameters from the * beginning. * * @param RxCoordinates Initial receiver coordinates. * @param dIonoModel Ionospheric model to be used by default. * @param dEphemeris XvtStore<SatID> object to be used by default. * @param dObservable Observable type to be used by default. * @param usetgd Whether TGD will be used by default or not. * * @sa DataStructures.hpp. */ ModeledPR( const Position& RxCoordinates, IonoModelStore& dIonoModel, XvtStore<SatID>& dEphemeris, const TypeID& dObservable, bool usetgd = true ) throw(Exception); /** Explicit constructor, taking as input initial receiver * coordinates, default tropospheric model, ephemeris to be used, * default observable and whether TGD will be computed or not. * * The default ionospheric model will be set to NULL. * * This constructor is meant to be used when working with GNSS * data structures in order to set the basic parameters from the * beginning. * * @param RxCoordinates Initial receiver coordinates. * @param dTropoModel Tropospheric model to be used by default. * @param dEphemeris XvtStore<SatID> object to be used by default. * @param dObservable Observable type to be used by default. * @param usetgd Whether TGD will be used by default or not. * * @sa DataStructures.hpp. */ ModeledPR( const Position& RxCoordinates, TropModel& dTropoModel, XvtStore<SatID>& dEphemeris, const TypeID& dObservable, bool usetgd = true ) throw(Exception); /** Explicit constructor, taking as input initial receiver * coordinates, ephemeris to be used, default observable and * whether TGD will be computed or not. * * Both the tropospheric and ionospheric models will be set to NULL. * * This constructor is meant to be used when working with GNSS * data structures in order to set the basic parameters from the * beginning. *
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?