📄 rinexobsheader.hpp
字号:
#pragma ident "$Id: RinexObsHeader.hpp 698 2007-07-23 17:08:30Z btolman $"//============================================================================//// 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// // Copyright 2004, The University of Texas at Austin////============================================================================//============================================================================////This software developed by Applied Research Laboratories at the University of//Texas at Austin, under contract to an agency or agencies within the U.S. //Department of Defense. The U.S. Government retains all rights to use,//duplicate, distribute, disclose, or release this software. ////Pursuant to DoD Directive 523024 //// DISTRIBUTION STATEMENT A: This software has been approved for public // release, distribution is unlimited.////=============================================================================/** * @file RinexObsHeader.hpp * Encapsulate header of Rinex observation file, including I/O */#ifndef GPSTK_RINEXOBSHEADER_HPP#define GPSTK_RINEXOBSHEADER_HPP#include <vector>#include <list>#include <map>#include <iostream>#include <iomanip>#include "DayTime.hpp"#include "FFStream.hpp"#include "RinexObsBase.hpp"#include "Triple.hpp"#include "RinexSatID.hpp"namespace gpstk{ /** @addtogroup RinexObs */ //@{ /** * This class models the header for a RINEX Observation File. * @sa gpstk::RinexObsData and gpstk::RinexObsStream. * @sa rinex_obs_test.cpp and rinex_obs_read_write.cpp for examples. */ class RinexObsHeader : public RinexObsBase { public: /// A Simple Constructor. RinexObsHeader() : version(2.1), valid() {} /// Clear (empty out) header inline void clear() { version = 2.11; valid = 0; commentList.clear(); wavelengthFactor[0] = wavelengthFactor[1] = 1; extraWaveFactList.clear(); obsTypeList.clear(); numObsForSat.clear(); numObs = 0; lastPRN.id = -1; } /** * @name RinexObsHeaderFormatStrings * RINEX Observation Header Formatting Strings */ //@{ static const std::string versionString; ///< "RINEX VERSION / TYPE" static const std::string runByString; ///< "PGM / RUN BY / DATE" static const std::string commentString; ///< "COMMENT" static const std::string markerNameString; ///< "MARKER NAME" static const std::string markerNumberString; ///< "MARKER NUMBER" static const std::string observerString; ///< "OBSERVER / AGENCY" static const std::string receiverString; ///< "REC # / TYPE / VERS" static const std::string antennaTypeString; ///< "ANT # / TYPE" static const std::string antennaPositionString; ///< "APPROX POSITION XYZ" static const std::string antennaOffsetString; ///< "ANTENNA: DELTA H/E/N" static const std::string waveFactString; ///< "WAVELENGTH FACT L1/2" static const std::string numObsString; ///< "# / TYPES OF OBSERV" static const std::string intervalString; ///< "INTERVAL" static const std::string firstTimeString; ///< "TIME OF FIRST OBS" static const std::string lastTimeString; ///< "TIME OF LAST OBS" static const std::string receiverOffsetString; ///< "RCV CLOCK OFFS APPL" static const std::string leapSecondsString; ///< "LEAP SECONDS" static const std::string numSatsString; ///< "# OF SATELLITES" static const std::string prnObsString; ///< "PRN / # OF OBS" static const std::string endOfHeader; ///< "END OF HEADER" //@} /// Validity bits for the RINEX Observation Header enum validBits { versionValid = 0x01, ///< "RINEX VERSION / TYPE" runByValid = 0x02, ///< "PGM / RUN BY / DATE" commentValid = 0x04, ///< "COMMENT" markerNameValid = 0x08, ///< "MARKER NAME" markerNumberValid = 0x010, ///< "MARKER NUMBER" observerValid = 0x020, ///< "OBSERVER / AGENCY" receiverValid = 0x040, ///< "REC # / TYPE / VERS" antennaTypeValid = 0x080, ///< "ANT # / TYPE" antennaPositionValid = 0x0100, ///< "APPROX POSITION XYZ" antennaOffsetValid = 0x0200, ///< "ANTENNA: DELTA H/E/N" waveFactValid = 0x0400, ///< "WAVELENGTH FACT L1/2" obsTypeValid = 0x0800, ///< "# / TYPES OF OBSERV" intervalValid = 0x01000, ///< "INTERVAL" firstTimeValid = 0x02000, ///< "TIME OF FIRST OBS" lastTimeValid = 0x04000, ///< "TIME OF LAST OBS" receiverOffsetValid = 0x08000, ///< "RCV CLOCK OFFS APPL" leapSecondsValid = 0x0100000, ///< "LEAP SECONDS" numSatsValid = 0x0200000, ///< "# OF SATELLITES" prnObsValid = 0x0400000, ///< "PRN / # OF OBS" endValid = 0x080000000, ///< "END OF HEADER" /// This mask is for all required valid fields for RINEX 2.0 allValid20 = 0x080002FEB, /// This mask is for all required valid fields for RINEX 2.1 allValid21 = 0x080002FEB, /// This mask is for all required valid fields for RINEX 2.11 allValid211 = 0x080002FEB }; /// RINEX Observation Types struct RinexObsType { std::string type; ///< 2- char type e.g. L1, P2 std::string description; ///< 20- char description (optional) e.g. "L1 pseudorange" std::string units; ///< 10- char units (optional) e.g. "meters" unsigned int depend; RinexObsType() : type(std::string("UN")),description(std::string("Unknown or Invalid")), units(std::string("")),depend(0) {} RinexObsType(std::string t, std::string d, std::string u, unsigned int dep=0) : type(t),description(d),units(u),depend(dep) {} static const unsigned int C1depend; static const unsigned int L1depend; static const unsigned int L2depend; static const unsigned int P1depend; static const unsigned int P2depend; static const unsigned int EPdepend; static const unsigned int PSdepend; }; /** @name Standard RINEX observation types */ //@{ static const RinexObsType UN; static const RinexObsType L1; static const RinexObsType L2; static const RinexObsType C1; static const RinexObsType C2; static const RinexObsType P1; static const RinexObsType P2; static const RinexObsType D1; static const RinexObsType D2; static const RinexObsType S1; static const RinexObsType S2; static const RinexObsType T1; static const RinexObsType T2; static const RinexObsType C5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -