📄 correctobservables.hpp
字号:
#pragma ident "$Id: $"/** * @file CorrectObservables.hpp * This class corrects observables from effects such as antenna excentricity, * difference in phase centers, offsets due to tide effects, etc. */#ifndef CORRECTOBSERVABLES_HPP#define CORRECTOBSERVABLES_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 ). 2007////============================================================================#include <string>#include "ProcessingClass.hpp"#include "XvtStore.hpp"#include "Triple.hpp"#include "Position.hpp"#include "geometry.hpp"namespace gpstk{ /** @addtogroup DataStructures */ //@{ /** This class corrects observables from effects such as antenna * excentricity, difference in phase centers, offsets due to * tidal effects, etc. * * 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 * // Create the input obs file stream * RinexObsStream rin("ebre0300.02o"); * * // Loads precise ephemeris object with file data * SP3EphemerisStore SP3EphList; * SP3EphList.loadFile("igs11513.sp3"); * * // Sets nominal position of receiver * Position nominalPos(4833520.3800, 41536.8300, 4147461.2800); * * // Vector from antenna ARP to L1 phase center [UEN] (Leica AT504) * Triple offsetL1(0.1093, -0.0003, 0.0003); // Units in meters * * // Vector from antenna ARP to L2 phase center [UEN] (Leica AT504) * Triple offsetL2(0.1282, 0.0011, 0.0011); // Units in meters * * // Vector from monument to antenna ARP [UEN] for this station * Triple offsetARP(2.510, 0.300, 1.045); // Units in meters * * // Vector due to tidal effects (previously computed) * Triple tides(0.121, 0.033, -0.016); // Units in meters * * * gnssRinex gRin; * CorrectObservables corr(SP3EphList, * nominalPos, * offsetL1, * offsetL2, * offsetARP, * tides); * * while(rin >> gRin) { * gRin >> corr; * } * @endcode * * The "CorrectObservables" object will visit every satellite in the * GNSS data structure that is "gRin" and will correct the * corresponding observables from the given effects. * * When used with the ">>" operator, this class returns the same * incoming data structure with the observables corrected. Be warned * that if a given satellite does not have the observations required, * it will be summarily deleted from the data structure. * */ class CorrectObservables : public ProcessingClass { public: /// Default constructor CorrectObservables() : pEphemeris(NULL), nominalPos(0.0, 0.0, 0.0), L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * */ CorrectObservables(XvtStore<SatID>& ephem) : pEphemeris(&ephem), nominalPos(0.0, 0.0, 0.0), L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos) : pEphemeris(&ephem), nominalPos(stapos), L1PhaseCenter(0.0, 0.0, 0.0), L2PhaseCenter(0.0, 0.0, 0.0), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * @param L1pc Position of antenna L1 phase center with respect * to ARP ([UEN]). * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos, const Triple& L1pc) : pEphemeris(&ephem), nominalPos(stapos), L1PhaseCenter(L1pc), L2PhaseCenter(0.0, 0.0, 0.0), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * @param L1pc Position of antenna L1 phase center with respect * to ARP ([UEN]). * @param L2pc Position of antenna L2 phase center with respect * to ARP ([UEN]). * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos, const Triple& L1pc, const Triple& L2pc) : pEphemeris(&ephem), nominalPos(stapos), L1PhaseCenter(L1pc), L2PhaseCenter(L2pc), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(0.0, 0.0, 0.0) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * @param L1pc Position of antenna L1 phase center with respect * to ARP ([UEN]). * @param L2pc Position of antenna L2 phase center with respect * to ARP ([UEN]). * @param extra Extra biases affecting monument, such as tidal * effects ([UEN]). * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos, const Triple& L1pc, const Triple& L2pc, const Triple& extra) : pEphemeris(&ephem), nominalPos(stapos), L1PhaseCenter(L1pc), L2PhaseCenter(L2pc), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(0.0, 0.0, 0.0), extraBiases(extra) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * @param L1pc Position of antenna L1 phase center with respect * to ARP ([UEN]). * @param L2pc Position of antenna L2 phase center with respect * to ARP ([UEN]). * @param monument Vector from monument to ARP ([UEN]). * @param extra Extra biases affecting monument, such as tidal * effects ([UEN]). * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos, const Triple& L1pc, const Triple& L2pc, const Triple& monument, const Triple& extra) : pEphemeris(&ephem), nominalPos(stapos), L1PhaseCenter(L1pc), L2PhaseCenter(L2pc), L5PhaseCenter(0.0, 0.0, 0.0), L6PhaseCenter(0.0, 0.0, 0.0), L7PhaseCenter(0.0, 0.0, 0.0), L8PhaseCenter(0.0, 0.0, 0.0), monumentVector(monument), extraBiases(extra) { setIndex(); }; /** Common constructor * * @param ephem Satellite ephemeris. * @param stapos Nominal position of receiver station. * @param L1pc Position of antenna L1 phase center with respect * to ARP ([UEN]). * @param L2pc Position of antenna L2 phase center with respect * to ARP ([UEN]). * @param L5pc Position of antenna L5 phase center with respect * to ARP ([UEN]). * @param L6pc Position of antenna L6 phase center with respect * to ARP ([UEN]). * @param L7pc Position of antenna L7 phase center with respect * to ARP ([UEN]). * @param L8pc Position of antenna L8 phase center with respect * to ARP ([UEN]). * @param monument Vector from monument to ARP ([UEN]). * @param extra Extra biases affecting monument, such as tidal * effects ([UEN]). * */ CorrectObservables(XvtStore<SatID>& ephem, const Position& stapos, const Triple& L1pc, const Triple& L2pc,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -