📄 rinex.h
字号:
// - MARKER NUMBER string observerName; // Name of observer. // - OBSERVER / AGENCY string observerAgency; // Name of observing agency. // - OBSERVER / AGENCY string receiverNumber; // Receiver identification number. // - REC # / TYPE / VERS string receiverType; // Receiver type code // - REC # / TYPE / VERS string receiverFirmwareVersion; // Receiver firmware version. // - REC # / TYPE / VERS string antennaNumber; // Antenna number. // - ANT # / TYPE string antennaType; // Antenna type. // - ANT # / TYPE double approxX; // Approximate position, X coord. // - APPROX POSITION XYZ double approxY; // Approximate position, Y coord. // - APPROX POSITION XYZ double approxZ; // Approximate position, Z coord. // - APPROX POSITION XYZ double antennaDeltaH; // Height of antenna above marker // - ANTENNA: DELTA H/E/N double antennaDeltaE; // East Eccen. of ant w.r.t. mark, // - ANTENNA: DELTA H/E/N double antennaDeltaN; // North Eccen. of ant w.r.t. mark, // - ANTENNA: DELTA H/E/N unsigned short defWaveLenFactorL1; // Default Wavelength factor of L1 // - WAVELENGTH FACT L1/2 unsigned short defWaveLenFactorL2; // Default Wavelength factor of L2 // - WAVELENGTH FACT L1/2 unsigned short numWaveLenPRN; // # PRNs in all Wavelength records // - WAVELENGTH FACT L1/2 unsigned short numWaveLenRecords; // # Wavelength factor records // - WAVELENGTH FACT L1/2 // Wavelength factor records. OneWaveLenRec allWaveLenRecords[ MAXPRNID ]; unsigned short numObsTypes; // # observation types // - # / TYPES OF OBSERV enum OBSTYPE obsTypeList[ MAXOBSTYPES ]; // List of obs types // - # / TYPES OF OBSERV float obsInterval; // Obs time interval sec. // - INTERVAL YMDHMS firstObs; // Date & time of first obs // - TIME OF FIRST OBS string firstObsTimeSystem; // system for mixed GPS+GLO YMDHMS lastObs; // Date & time of last obs // - TIME OF LAST OBS string lastObsTimeSystem; // system for mixed GPS+GLO unsigned short numberLeapSec; unsigned short rcvrClockApplied; unsigned short numberOfSat; // # satellites in data. // - # OF SATELLITES ObsCountForPRN satObsTypeList[MAXPRNID]; unsigned short nextSat; // index for satObsTypeList unsigned int numberObsEpochs; static unsigned int numberObsFiles; // # Obs Files instantiated void initializeData(); bool validHeaderRecord(string inputRec); bool validEventFlagRecord(string inputRec); bool validObservationsRecord(string inputRec); };//======================== RinexNavFile Class ============================= class RinexNavFile : public RinexFile { public: //Constructors RinexNavFile(); RinexNavFile(string pathFilename, ios::openmode mode); // Destructor ~RinexNavFile(); // Initializers bool setA0(double input); bool setA1(double input); bool setA2(double input); bool setA3(double input); bool setB0(double input); bool setB1(double input); bool setB2(double input); bool setB3(double input); bool setUtcA0(double input); bool setUtcA1(double input); bool setUtcRefTime(long input); bool setUtcRefWeek(long input); bool setLeapSec(unsigned short input); void incrementNumberPRNBlocks(unsigned int n); unsigned short readHeader(); unsigned short readPRNBlock(PRNBlock &prnBlock); // Selectors double getA0(); double getA1(); double getA2(); double getA3(); double getB0(); double getB1(); double getB2(); double getB3(); double getUtcA0(); double getUtcA1(); long getUtcRefTime(); long getUtcRefWeek(); unsigned short getLeapSec(); unsigned int getNumberPRNBlocks(); static unsigned int getNavFilesCount(); void writeHeaderImage( ofstream &outputStream ); void writePRNBlock( ofstream &outputStream, PRNBlock &outputPRNBlock ); private: RecStruct headerRecs[MAXNAVHEADERRECTYPES]; double a0; // Ionosphere parameters: double a1; // A0 to A3 of almanac double a2; // (page 18 of subframe 4) double a3; double b0; // Ionosphere parameters: double b1; // B0 to B3 of almanac double b2; double b3; double utcA0; // parameters to compute UTC time: double utcA1; // A0,A1 terms of polynomial long utcRefTime; // T : ref.time for UTC data long utcRefWeek; // W : UTC ref. week number unsigned short leapSec; // Delta time due to leap seconds unsigned int numberPRNBlocks; static unsigned int numberNavFiles; // # Nav Files instantiated void initializeData(); bool validHeaderRecord(string inputRec); };//======================== GlonassNavFile Class ============================= class GlonassNavFile : public RinexFile { public: //Constructors GlonassNavFile(); GlonassNavFile(string pathFilename, ios::openmode mode); // Destructor ~GlonassNavFile(); // Initializers bool setRefTimeYear(unsigned short input); bool setRefTimeMonth(unsigned short input); bool setRefTimeDay(unsigned short input); bool setTimeScaleCorr(double input); bool setLeapSec(unsigned short input); void incrementNumberEphemEpochs(unsigned int n); unsigned short readHeader(); unsigned short readEphemEpoch(GlonassEphemEpoch &navEpoch); // Selectors unsigned short getRefTimeYear(); unsigned short getRefTimeMonth(); unsigned short getRefTimeDay(); double getTimeScaleCorr(); unsigned short getLeapSec(); unsigned int getNumberEpochs(); static unsigned int getFilesCount(); void writeHeaderImage( ofstream &outputStream ); void writeEphemEpoch( ofstream &outputStream, GlonassEphemEpoch &navEpoch ); private: RecStruct headerRecs[MAXNAVHEADERRECTYPES]; unsigned short refTimeYear; // Time of reference for system unsigned short refTimeMonth; // time correction unsigned short refTimeDay; // (year, month, day). double timeScaleCorr; // Correct GLONASS system time to // UTC(SU) (-TauC). unsigned short leapSec; // Leap seconds since 6-Jan-1980 unsigned int numberEpochs; // # epochs in the Nav File static unsigned int numberFiles; // # GLONASS Nav Files instantiated void initializeData(); bool validHeaderRecord(string inputRec); };//===================== GeostationaryNavFile Class =========================== class GeostationaryNavFile : public RinexFile { public: //Constructors GeostationaryNavFile(); GeostationaryNavFile(string pathFilename, ios::openmode mode); // Destructor ~GeostationaryNavFile(); // Initializers bool setRefTimeYear(unsigned short input); bool setRefTimeMonth(unsigned short input); bool setRefTimeDay(unsigned short input); bool setCorrToUTC(double input); bool setLeapSec(unsigned short input); void incrementNumberEphemEpochs(unsigned int n); unsigned short readHeader(); unsigned short readEphemEpoch(GeostationaryEphemEpoch &navEpoch); // Selectors unsigned short getRefTimeYear(); unsigned short getRefTimeMonth(); unsigned short getRefTimeDay(); double getCorrToUTC(); unsigned short getLeapSec(); unsigned int getNumberEpochs(); static unsigned int getFilesCount(); void writeHeaderImage( ofstream &outputStream ); void writeEphemEpoch( ofstream &outputStream, GeostationaryEphemEpoch &navEpoch ); private: RecStruct headerRecs[MAXNAVHEADERRECTYPES]; unsigned short refTimeYear; // Time of reference for system unsigned short refTimeMonth; // time correction unsigned short refTimeDay; // (year, month, day). double corrToUTC; // Correct GEO system time to UTC unsigned short leapSec; // Leap seconds since 6-Jan-1980 unsigned int numberEpochs; // # epochs in the Nav File static unsigned int numberFiles; // # GLONASS Nav Files instantiated void initializeData(); bool validHeaderRecord(string inputRec); };//======================== RinexMetFile Class ============================= class RinexMetFile : public RinexFile { public: //Constructors RinexMetFile(); RinexMetFile(string pathFilename, ios::openmode mode); // Destructor ~RinexMetFile(); // Initializers bool setMarkerName(string input); bool setMarkerNumber(string input); bool setNumMetTypes(unsigned short input); bool setObsTypeListElement(enum METTYPE input, int i); bool setSensorModAccurElement(SensorInfo input, int i); bool setSensorXYZhElement(SensorPosition input, int i); void incrementNumberMetEpochs(unsigned int n); unsigned short readHeader(); void initEpochInfo( MetEpoch &epoch); unsigned short readEpoch( MetEpoch &epoch); // Selectors string getMarkerName(); string getMarkerNumber(); unsigned short getNumMetTypes(); enum METTYPE getObsTypeListElement(int i); SensorInfo getSensorModAccurElement(int i); SensorPosition getSensorXYZhElement(int i); unsigned int getNumberMetEpochs(); static unsigned int getMetFilesCount(); void writeHeaderImage( ofstream &outputStream ); void writeEpoch( ofstream &outputStream, MetEpoch &outputEpoch ); private: RecStruct headerRecs[MAXMETHEADERRECTYPES]; string markerName; // Name of antenna marker. // - MARKER NAME string markerNumber; // Number of antenna marker. // - MARKER NUMBER unsigned short numMetTypes; // # observation types // - # / TYPES OF OBSERV enum METTYPE obsTypeList[ MAXMETTYPES ]; // List of obs types // - # / TYPES OF OBSERV SensorInfo sensorModAccur[ MAXMETTYPES ]; SensorPosition sensorXYZh[ MAXMETTYPES ]; unsigned int numberMetEpochs; static unsigned int numberMetFiles; // # Met Files instantiated void initializeData(); bool validHeaderRecord(string inputRec); };//======================== ClockDataFile Class ============================= class ClockDataFile : public RinexFile { public: //Constructors ClockDataFile(); ClockDataFile(string pathFilename, ios::openmode mode); // Destructor ~ClockDataFile(); // Initializers bool setLeapSec(unsigned short input); bool setNumberClkTypes(unsigned short input); bool setClkTypeListElement(enum CLKTYPE input, int i); bool setStationName(string input); bool setStationNumber(string input); bool setStationClkRef(string input); bool setACDesignator(string input); bool setAnalysisCenterName(string input); bool setNumberAnalysisClockRef(unsigned short input); bool setAnalysisStartEpoch(DateTime input); bool setAnalysisStopEpoch(DateTime input); bool setNumberSolnSta(unsigned short input); bool setTerrRefFrameOrSinex(string input); bool setNumberSolnSatellites(unsigned short input); bool setClkRefListElement(AnalysisClkRefData input, int i); bool setSolnStaListElement(SolnStaNameData input, int i); bool setPrnListElement(string input, int i); void incrementNumberClkEpochs(unsigned int n); unsigned short readHeader(); void initEpochInfo( ClkEpoch &epoch); unsigned short readEpoch( ClkEpoch &epoch); // Selectors unsigned short getLeapSec(); unsigned short getNumberClkTypes(); enum CLKTYPE getClkTypeListElement(int i); string getStationName(); string getStationNumber(); string getStationClkRef(); string getACDesignator(); string getAnalysisCenterName(); unsigned short getNumberAnalysisClockRef(); DateTime getAnalysisStartEpoch(); DateTime getAnalysisStopEpoch(); unsigned short getNumberSolnSta(); string getTerrRefFrameOrSinex(); unsigned short getNumberSolnSatellites(); AnalysisClkRefData getClkRefListElement(int i); SolnStaNameData getSolnStaListElement(int i); string getPrnListElement(int i); unsigned short getNumberClkEpochs(); static unsigned short getClkFilesCount(); void writeHeaderImage( ofstream &outputStream ); void writeEpoch( ofstream &outputStream, ClkEpoch &outputEpoch ); private: RecStruct headerRecs[MAXCLKHEADERRECTYPES]; unsigned short leapSec; unsigned short numberClkTypes; // # clock data types enum CLKTYPE clkTypeList[ MAXCLKTYPES ]; // List of clock data types string stationName; string stationNumber; string stationClkRef; string ACDesignator; string analysisCenterName; unsigned short numberAnalysisClkRef; DateTime analysisStartEpoch; DateTime analysisStopEpoch; AnalysisClkRefData *clkRefList; // allocated in readHeader() SolnStaNameData *solnStaList; // allocated in readHeader() unsigned short numberSolnSta; string terrRefFrameOrSinex; unsigned short numberSolnSatellites; string *prnList; // allocated in readHeader() unsigned short numberClkEpochs; static unsigned short numberClkFiles; void initializeData(); bool validHeaderRecord(string inputRec); };//=================== RequiredRecordMissingException ======================== class RequiredRecordMissingException { public: RequiredRecordMissingException( const string& errMsg ); string ErrorMessage; string getMessage(); };//======================== RinexFileException Class ======================= class RinexFileException { public: RinexFileException( const string& errMsg ); string ErrorMessage; string getMessage(); };//======================== RinexReadingException Class ======================= class RinexReadingException { public: RinexReadingException( const string& errMsg ); string ErrorMessage; string getMessage(); };} // namespace NGSrinex#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -