RXtoRINEX  V2.1
RXtoRINEX provides tools to collect data from GPS / GNSS receivers in mobile devices, convert them to RINEX or RTK formats, and process RINEX files.
RinexData.h
Go to the documentation of this file.
1 
29 #ifndef RINEXDATA_H
30 #define RINEXDATA_H
31 
32 #include <vector>
33 #include <string>
34 #include <algorithm>
35 
36 #include "Logger.h" //from CommonClasses
37 
38 using namespace std;
39 
40 //@cond DUMMY
41 const double MAXOBSVAL = 9999999999.999; //the maximum value for any observable to fit the F14.4 RINEX format
42 const double MINOBSVAL = -999999999.999; //the minimum value for any observable to fit the F14.4 RINEX format
43 //Mask values to define RINEX header record/label type
44 const unsigned int NAP = 0x00; //Not applicable for the given file type
45 const unsigned int OBL = 0x01; //Obligatory
46 const unsigned int OPT = 0x02; //Optional
47 const unsigned int MSK = 0x03; //The mask to apply for filtering these bits
48 const unsigned int OBSNAP = NAP; //Not applicable for the OBS file type
49 const unsigned int OBSOBL = OBL; //Obligatory
50 const unsigned int OBSOPT = OPT; //Optional
51 const unsigned int OBSMSK = MSK; //The mask to apply yo filter these bits
52 const unsigned int NAVNAP = NAP<<2; //Not applicable for the navigation file type
53 const unsigned int NAVOBL = OBL<<2; //Obligatory
54 const unsigned int NAVOPT = OPT<<2; //Optional
55 const unsigned int NAVMSK = MSK<<2; //The mask to apply yo filter these bits
56 //Common messages
57 const string msgLabelMis("Mismatch argument types in RINEX label identifier ");
58 const string msgInSet(" (setHdLnData)");
59 const string msgInGet(" (getHdLnData)");
60 const string msgSysUnk(" Unknown satellite system code");
61 const string msgSpace(" ");
62 const string msgNotHd(" not in SYS/TOBS records");
63 const string msgVerTBD("Version to print is not defined");
64 const string msgNotNav("Cannot generate V2.10 navigation file for system ");
65 //@endcond
66 
125 class RinexData {
126 public:
129  V210 = 0,
132  VTBD
133  };
135  enum RINEXlabel {
136  VERSION = 0,
155  SYS,
157  INT,
169 
175 
176  EOH,
177  INFILEVER,
181  LASTONE
182  };
183  //constructors & destructor
184  RinexData(RINEXversion ver, Logger* plogger);
185  RinexData(RINEXversion ver);
186  RinexData(RINEXversion ver, string prg, string rby, Logger* plogger);
187  RinexData(RINEXversion ver, string prg, string rby);
188  ~RinexData(void);
189  //methods to set RINEX line header record data values storing them in the RinexData object
190  bool setHdLnData(RINEXlabel rl);
191  bool setHdLnData(RINEXlabel rl, RINEXlabel a, const string &b);
192  bool setHdLnData(RINEXlabel rl, char a, int b, const vector<int> &c);
193  bool setHdLnData(RINEXlabel rl, char a, int b, const vector<string> &c);
194  bool setHdLnData(RINEXlabel rl, char a, const string &b, double c, double d, double e);
195  bool setHdLnData(RINEXlabel rl, char a, const string &b, const string &c);
196  bool setHdLnData(RINEXlabel rl, char a, const vector<string> &b);
197  bool setHdLnData(RINEXlabel rl, double a, double b=0.0, double c=0.0);
198  bool setHdLnData(RINEXlabel rl, int a, int b=0);
199  bool setHdLnData(RINEXlabel rl, int a, int b, const vector<string> &c);
200  bool setHdLnData(RINEXlabel rl, const string &a, const string &b=string(), const string &c=string());
201  bool setHdLnData(RINEXlabel rl, const string &a, const vector<double> &b);
202  bool setHdLnData(RINEXlabel rl, const string &a, double b, double c, int d, int e, const string &f, int g);
203  //methods to obtain line header records data stored in the RinexData object
204  bool getHdLnData(RINEXlabel rl, int &a, double &b, string &c);
205  bool getHdLnData(RINEXlabel rl, RINEXlabel &a, string &b, unsigned int index = 0);
206  bool getHdLnData(RINEXlabel rl, char &a, int &b, vector <int> &c, unsigned int index = 0);
207  bool getHdLnData(RINEXlabel rl, char &a, int &b, vector <string> &c, unsigned int index = 0);
208  bool getHdLnData(RINEXlabel rl, char &a, string &b, double &c, double &d, double &e);
209  bool getHdLnData(RINEXlabel rl, char &a, string &b, string &c, unsigned int index = 0);
210  bool getHdLnData(RINEXlabel rl, char &a, vector <string> &b, unsigned int index = 0);
211  bool getHdLnData(RINEXlabel rl, double &a);
212  bool getHdLnData(RINEXlabel rl, double &a, char &b, char &c);
213  bool getHdLnData(RINEXlabel rl, double &a, double &b, double &c);
214  bool getHdLnData(RINEXlabel rl, int &a);
215  bool getHdLnData(RINEXlabel rl, int &a, int &b, unsigned int index = 0);
216  bool getHdLnData(RINEXlabel rl, string &a);
217  bool getHdLnData(RINEXlabel rl, string &a, string &b);
218  bool getHdLnData(RINEXlabel rl, string &a, string &b, string &c);
219  bool getHdLnData(RINEXlabel rl, string &a, vector <double> &b, unsigned int index = 0);
220  bool getHdLnData(RINEXlabel rl, string &a, double &b, double &c, int &d, int &e, string &f, int &g, unsigned int index = 0);
221  //methods to process header records data
222  RINEXlabel lblTOid(string label);
223  string idTOlbl(RINEXlabel id);
224  RINEXlabel get1stLabelId();
225  RINEXlabel getNextLabelId();
226  void clearHeaderData();
227  string obsV2toV3(const string&);
228  //methods to process and collect epoch data
229  double setEpochTime(int weeks, double secs, double bias=0.0, int eFlag=0);
230  bool saveObsData(char sys, int sat, string obsType, double value, int lol, int strg, double tTag);
231  double getEpochTime(int &weeks, double &secs, double &bias, int &eFlag);
232  bool getObsData(char &sys, int &sat, string &obsType, double &value, int &lol, int &strg, double &tTag, unsigned int index = 0);
233 // bool setFilter(vector<string>& selSat, vector<string>& selObs);
234  bool setFilter(vector<string> selSat, vector<string> selObs);
235  bool filterObsData();
236  void clearObsData();
237  bool saveNavData(char sys, int sat, double bo[8][4], double tTag);
238  bool getNavData(char& sys, int &sat, double (&bo)[8][4], double &tTag, unsigned int index = 0);
239  bool filterNavData();
240  void clearNavData();
241  //methods to print RINEX files
242  string getObsFileName(string prefix, string country = "---");
243  string getNavFileName(string prefix, char suffix = 'N', string country = "---");
244  void printObsHeader(FILE* out);
245  void printObsEpoch(FILE* out);
246  void printObsEOF(FILE* out);
247  void printNavHeader(FILE* out);
248  void printNavEpoch(FILE* out);
249  //methods to collect data from existing RINEX files
250  RINEXlabel readRinexHeader(FILE* input);
251  int readObsEpoch(FILE* input);
252  int readNavEpoch(FILE* input);
253 
254 private:
255  struct LABELdata { //A template for data related to each defined RINEX label and related record
256  RINEXlabel labelID; //The header label identification
257  char * labelVal; //The RINEX label value in columns 61-80
258  RINEXversion ver; //The RINEX version where this label is defined
259  unsigned int type; //The type of the record with this label
260  bool hasData; //If there are data stored for this record or not
261  string comment;
262  //Constructor for most labelID (except COMM)
263  LABELdata (RINEXlabel lId, char * lVal, RINEXversion v, unsigned int t) {
264  labelID = lId;
265  labelVal = lVal;
266  ver = v;
267  type = t;
268  hasData = false;
269  }
270  //Constructor for labelID COMM
271  LABELdata (string c) {
272  labelID = COMM;
273  labelVal = "COMMENT";
274  ver = VALL;
275  type = OBSOPT + NAVOPT;
276  hasData = true;
277  comment = c;
278  }
279  };
280  vector <LABELdata> labelDef; //A place to store data for all RINEX header labels
281  unsigned int labelIdIdx; //an index to iterater over labelDef with get1stLabelId and getNextLabelId
282  //RINEX header data grouped by line type/label
283  //"RINEX VERSION / TYPE"
284  RINEXversion inFileVer; //The RINEX version of the input file (when applicable)
285  RINEXversion version; //The RINEX version of the output file
286  char fileType; //V2210:O, N(GPS nav), G(GLONASS nav), H(Geo GPS nav), ...; V302:O, N, M
287  string fileTypeSfx; //a suffix to better describe the file type
288  char systemId; //System: V210=G(GPS), R(GLO), S(SBAS), T, M(Meteo); V302=G, R, E (Galileo), S, M
289  string systemIdSfx; //a suffix to better describe the system
290  //"PGM / RUN BY / DATE"
291  string pgm; //Program used to create current file
292  string runby; //Who executed the program
293  string date; //Date and time of file creation
294  //"MARKER NAME"
295  string markerName; //Name of antenna marker
296  //"* MARKER NUMBER"
297  string markerNumber; //Number of antenna marker (HUMAN)
298  //"MARKER TYPE"
299  string markerType; //Marker type as per V302
300  //"OBSERVER / AGENCY"
301  string observer; //Name of observer
302  string agency; //Name of agency
303  //"REC # / TYPE / VERS
304  string rxNumber; //Receiver number
305  string rxType; //Receiver type
306  string rxVersion; //Receiver version (e.g. Internal Software Version)
307  //"ANT # / TYPE"
308  string antNumber; //Antenna number
309  string antType; //Antenna type
310  //"APPROX POSITION XYZ"
311  double aproxX; //Geocentric approximate marker position
312  double aproxY;
313  double aproxZ;
314  //"ANTENNA: DELTA H/E/N"
315  double antHigh; //Antenna height: Height of the antenna reference point (ARP) above the marker
316  double eccEast; //Horizontal eccentricity of ARP relative to the marker (east/north)
317  double eccNorth;
318  //"* ANTENNA: DELTA X/Y/Z" V302
319  double antX;
320  double antY;
321  double antZ;
322  //"* ANTENNA: PHASECENTER" V302
323  char antPhSys;
324  string antPhCode;
325  double antPhNoX;
326  double antPhEoY;
327  double antPhUoZ;
328  //"* ANTENNA: B.SIGHT XYZ" V302
329  double antBoreX;
330  double antBoreY;
331  double antBoreZ;
332  //"* ANTENNA: ZERODIR AZI" V302
333  double antZdAzi;
334  //"* ANTENNA: ZERODIR XYZ" V302
335  double antZdX;
336  double antZdY;
337  double antZdZ;
338  //"* CENTER OF MASS XYZ" V302
339  double centerX;
340  double centerY;
341  double centerZ;
342  //"WAVELENGTH FACT L1/2" V210
343  struct WVLNfactor {
344  int wvlenFactorL1;
345  int wvlenFactorL2;
346  int nSats; //number of satellites these factors apply
347  vector <string> satNums;
348  //constructors
349  WVLNfactor () {
350  wvlenFactorL1 = 1;
351  wvlenFactorL2 = 1;
352  nSats = 0;
353  }
354  WVLNfactor (int wvl1, int wvl2) { //for the default wavelength record
355  wvlenFactorL1 = wvl1;
356  wvlenFactorL2 = wvl2;
357  nSats = 0;
358  }
359  WVLNfactor (int wvl1, int wvl2, const vector<string> &sats) {
360  wvlenFactorL1 = wvl1;
361  wvlenFactorL2 = wvl2;
362  nSats = sats.size();
363  satNums = sats;
364  }
365  };
366  vector <WVLNfactor> wvlenFactor;
367  //"# / TYPES OF OBSERV" V210
368  vector <string> v2ObsLst;
369  //"SYS / # / OBS TYPES" V302
370  struct GNSSsystem { //Defines data for each GNSS system that can provide data to the RINEX file. Used for all versions
371  char system; //system identification: G (GPS), R (GLONASS), S (SBAS), E (Galileo). See RINEX V302 document: 3.5 Satellite numbers
372  bool selSystem; //a flag stating if the system is selected (will pass filtering or not)
373  vector <string> obsType; //identifier of each obsType type: C1C, L1C, D1C, S1C... (see RINEX V302 document: 5.1 Observation codes)
374  vector <bool> selObsType; //a flag stating if the corresponding obsType is selected (will pass filtering or not)
375  vector <int> selSat;
376  //constructor
377  GNSSsystem (char sys, const vector<string> &obsT) {
378  system = sys;
379  selSystem = true;
380  obsType.insert(obsType.end(), obsT.begin(), obsT.end());
381  selObsType.insert(selObsType.begin(), obsType.size(), true);
382  };
383  };
384  vector <GNSSsystem> systems;
385  //"* SIGNAL STRENGTH UNIT" V302
386  string signalUnit;
387  //"* INTERVAL" VALL
388  double obsInterval;
389  //"TIME OF FIRST OBS" VALL
390  int firstObsWeek;
391  double firstObsTOW;
392  string obsTimeSys;
393  //"* TIME OF LAST OBS" VALL
394  int lastObsWeek;
395  double lastObsTOW;
396  //"* RCV CLOCK OFFS APPL" VALL
397  int rcvClkOffs;
398  //"* SYS / DCBS APPLIED" V302
399  struct DCBSPCVSapp { //defines data for corrections of differential code biases (DCBS)
400  //or corrections of phase center variations (PCVS)
401  int sysIndex; //the system index in vector systems
402  string corrProg; //Program name used to apply corrections
403  string corrSource; //Source of corrections
404  //constructors
405  DCBSPCVSapp () {
406  };
407  DCBSPCVSapp (int oi, string cp, const string &cs) {
408  sysIndex = oi;
409  corrProg = cp;
410  corrSource = cs;
411  };
412  };
413  vector <DCBSPCVSapp> dcbsApp;
414  //"*SYS / PCVS APPLIED V302
415  vector <DCBSPCVSapp> pcvsApp;
416  //"* SYS / SCALE FACTOR" V302
417  struct OSCALEfact { //defines scale factor applied to observables
418  int sysIndex; //the system index in vector systems
419  int factor; //a factor to divide stored observables with before use (1,10,100,1000)
420  vector <string> obsType; //the list of observable types involved. If vector is empty, all observable types are involved
421 
422  OSCALEfact (int oi, int f, const vector<string> &ot) {
423  sysIndex = oi;
424  factor = f;
425  obsType = ot;
426  };
427  };
428  vector <OSCALEfact> obsScaleFact;
429  //"* SYS / PHASE SHIFTS V302
430  struct PHSHcorr { //defines Phase shift correction used to generate phases consistent w/r to cycle shifts
431  int sysIndex; //the system index in vector systems
432  string obsCode; //Carrier phase observable code (Type-Band-Attribute)
433  double correction; //Correction applied (cycles)
434  vector <string> obsSats; //the list of satellites involved. If vector is empty, all system satellites are involved
435  //constructor
436  PHSHcorr (int oi, string cd, double co, const vector<string> &os) {
437  sysIndex = oi;
438  obsCode = cd;
439  correction = co;
440  obsSats = os;
441  };
442  };
443  vector <PHSHcorr> phshCorrection;
444  //* GLONASS SLOT / FRQ #
445  struct GLSLTfrq { //defines Glonass slot and frequency numbers
446  int sysIndex; //the system index in vector systems
447  int slot; //slot
448  int frqNum; //Frequency numbers (-7...+6)
449  //constructor
450  GLSLTfrq (int oi, int sl, int fr) {
451  sysIndex = oi;
452  slot = sl;
453  frqNum = fr;
454  };
455  };
456  vector <GLSLTfrq> gloSltFrq;
457  //"* LEAP SECONDS" VALL
458  int leapSec;
459  int deltaLSF; //V302 only
460  int weekLSF; //V302 only
461  int dayLSF; //V302 only
462  //"* # OF SATELLITES" VALL
463  int numOfSat;
464  //"* PRN / # OF OBS" VALL
465  struct PRNobsnum { //defines prn and number of observables for each observable type
466  char sysPrn; //the system the satellite prn belongs
467  int satPrn; //the prn number of the satellite
468  vector <int> obsNum; //the number of observables for each observable type
469  //constructors
470  PRNobsnum () {
471  };
472  PRNobsnum (char s, int p, const vector<int> &o) {
473  sysPrn = s;
474  satPrn = p;
475  obsNum = o;
476  };
477  };
478  vector <PRNobsnum> prnObsNum;
479  //"* IONOSPHERIC CORR (in GNSS NAV version V302)
480  struct IONOcorr { //defines ionospheric correction parameters
481  string corrType; //Correction type GAL(Galileo:ai0-ai2),GPSA(GPS:alpha0-alpha3),GPSB(GPS:beta0-beta3)
482  vector <double> corrValues;
483  //constructors
484  IONOcorr () {
485  };
486  IONOcorr (string ct, const vector<double> &corr) {
487  corrType = ct;
488  corrValues = corr;
489  };
490  };
491  vector <IONOcorr> ionoCorrection;
492  //"* TIME SYSTEM CORR (in GNSS NAV version V302)
493  struct TIMcorr { //defines correctionsto transform the system time to UTC or other time systems
494  string corrType; //Correction type: GAUT, GPUT, SBUT, GLUT, GPGA, GLGP
495  double a0, a1; //Coefficients of 1-deg polynomial
496  int refTime; //reference time for polynomial (seconds into GPS/GAL week)
497  int refWeek; //Reference week number
498  string sbas; //EGNOS, WAAS, or MSAS, or Snn (with nn = PRN-100 of satellite
499  int utcId; //UTC identifier
500  //constructors
501  TIMcorr () {
502  };
503  TIMcorr (string ct, double ca0, double ca1, int rs, int rw, const string &sb, int ui) {
504  corrType = ct;
505  a0 = ca0;
506  a1 = ca1;
507  refTime = rs;
508  refWeek = rw;
509  sbas = sb;
510  utcId = ui;
511  };
512  };
513  vector <TIMcorr> timCorrection;
514  int deltaUTCt;
515  int deltaUTCw;
516  //Epoch time parameters
517  int epochWeek; //Extended (0 to NO LIMIT) GPS/GAL week number of current epoch
518  double epochTOW; //Seconds into the current week, accounting for clock bias, when the current measurement was made
519  double epochTimeTag; //A tag to identify the measurements of a given epoch. Could be the estimated time of current epoch before fix
520  double epochClkOffset; //Recieve clock offset applied to epoch time and measurements
521  //Epoch observable data
522  int epochFlag; //The type of data following this epoch record (observation, event, ...). See RINEX definition
523  int nSatsEpoch; //Number of satellites or special records in current epoch
524  struct SatObsData { //defines data storage for a satellite observable (pseudorrange, phase, ...) in an epoch.
525  double obsTimeTag; //A tag to identify the epoch of this measurement. Could be the estimated time of current epoch before fix (f.e in Sirf from MID28)
526  int sysIndex; //the system this observable belongs: its index in systems vector (see above)
527  int satellite; //the satellite this observable belongs: PRN of satellite
528  int obsTypeIndex; //the observable type: its index in obsType vector (inside the GNSSsystem object referred by sysIndex)
529  double obsValue; //the value of this observable
530  int lossOfLock; //if loss of lock happened when observable was taken
531  int strength; //the signal strength when observable was taken
532  //constructor
533  SatObsData (double obsTag, int sysIdx, int sat, int obsIdx, double obsVal, int lol, int str) {
534  obsTimeTag = obsTag;
535  sysIndex = sysIdx;
536  satellite = sat;
537  obsTypeIndex = obsIdx;
538  obsValue = obsVal;
539  lossOfLock = lol;
540  strength = str;
541  };
542  //define operator for comparisons and sorting
543  bool operator < (const SatObsData &param) {
544  if (obsTimeTag > param.obsTimeTag) return false;
545  if (obsTimeTag < param.obsTimeTag) return true;
546  //same time tag
547  if (sysIndex > param.sysIndex) return false;
548  if (this->sysIndex < param.sysIndex) return true;
549  //same time tag and system
550  if (satellite > param.satellite) return false;
551  if (satellite < param.satellite) return true;
552  //same time tag, system and satellite
553  if (obsTypeIndex > param.obsTypeIndex) return false;
554  return true;
555  };
556  };
557  vector <SatObsData> epochObs; //A place to store observable data (pseudorange, phase, ...) for one epoch
558  //Epoch navigation data
559  struct SatNavData { //defines storage for navigation data for a given GNSS satellite
560  double navTimeTag; //a tag to identify the epoch of this data
561  char systemId; //the system identification (G, E, R, ...)
562  int satellite; //the PRN of the satellite navigation data belong
563  double broadcastOrbit[8][4]; //the eigth lines of RINEX navigation data, with four parameters each
564  //constructor
565  SatNavData(double tT, char sys, int sat, double bo[8][4]) {
566  navTimeTag = tT;
567  systemId = sys;
568  satellite = sat;
569  for (int i=0; i<8; i++)
570  for (int j=0; j<4; j++)
571  broadcastOrbit[i][j] = bo[i][j];
572  };
573  //define operator for comparisons and sorting
574  bool operator < (const SatNavData &param) {
575  if(navTimeTag > param.navTimeTag) return false;
576  if(navTimeTag < param.navTimeTag) return true;
577  //same time tag
578  if (systemId > param.systemId) return false;
579  if (systemId < param.systemId) return true;
580  //same time tag and system
581  if (satellite > param.satellite) return false;
582  return true;
583  };
584  };
585  vector <SatNavData> epochNav; //A place to store navigation data for one epoch
586  //A state variable used to store reference to the label of the last record which data has been modified
587  vector<LABELdata>::iterator lastRecordSet;
588  //A equivalence table between observable type names in RINEX V2 and V3
589  struct EQUIVobs {
590  string v2name;
591  string v3name;
592  //constructor
593  EQUIVobs (const string &v2, const string &v3) {
594  v2name = v2;
595  v3name = v3;
596  }
597  };
598  vector <EQUIVobs> obsNamEq;
599  //Logger
600  Logger* plog; //the place to send logging messages
601  bool dynamicLog; //true when created dynamically here, false when provided externally
602  //Filtering data
603  bool applyObsFilter; //when true, parameters has been stated to filter observation data
604  bool applyNavFilter; //when true, parameters has been stated to filter navigation data
605  vector<string> selectedSats; //list of selected systems-satellites that would pass navigation data filter
606 
607  //private methods
608  void setDefValues(RINEXversion v, Logger* p);
609  string fmtRINEXv2name(string designator, int week, double tow, char ftype);
610  string fmtRINEXv3name(string designator, int week, double tow, char ftype, string country);
611  void setLabelFlag(RINEXlabel label, bool flagVal=true);
612  bool getLabelFlag(RINEXlabel);
613  RINEXlabel checkLabel(char *);
614  string valueLabel(RINEXlabel label, string toAppend = string());
615  string errorLabel(RINEXlabel);
616  size_t getSysIndex(char sysId);
617  int readV2ObsEpoch(FILE* input);
618  int readV3ObsEpoch(FILE* input);
619  int readObsEpochEvent(FILE* input, bool wrongDate);
620  void printHdLineData (FILE* out, vector<LABELdata>::iterator lbIter);
621  bool printSatObsValues(FILE* out, int maxPerLine);
622  RINEXlabel readHdLineData(FILE* input);
623  bool readRinexRecord(char* rinexRec, int recSize, FILE* input);
624  string obsV3toV2(int, int);
625  int v2ObsInx(const string&);
626  bool isSatSelected(int sysIx, int sat);
627  int sysInx(char sysCode);
628  int nSysSel();
629  string getSysDes(char s);
630 };
631 #endif
"SYS / PHASE SHIFTS" (in version V302)
Definition: RinexData.h:164
"TIME SYSTEM CORR" (in GNSS NAV version V302)
Definition: RinexData.h:174
"MARKER NAME" (All versions)
Definition: RinexData.h:139
"OBSERVER / AGENCY" (All versions)
Definition: RinexData.h:142
"INTERVAL" (All versions)
Definition: RinexData.h:157
"MARKER TYPE" (All versions)
Definition: RinexData.h:141
RINEXversion
RINEX versions known in the current implementation of this class.
Definition: RinexData.h:128
"COMMENT" (All versions)
Definition: RinexData.h:138
Definition: Logger.h:38
Label do not match with RINEX version (to manage error messages)
Definition: RinexData.h:180
"ANTENNA: ZERODIR AZI" (in version V302)
Definition: RinexData.h:150
"APPROX POSITION XYZ" (All versions)
Definition: RinexData.h:145
Definition: RinexData.h:125
"SIGNAL STRENGTH UNIT" (in version V302)
Definition: RinexData.h:156
"MARKER NUMBER" (All versions)
Definition: RinexData.h:140
"DELTA-UTC: A0,A1,T,W" (in GPS NAV version V210)
Definition: RinexData.h:172
for features applicable to all versions
Definition: RinexData.h:131
"SYS / SCALE FACTOR" (in version V302)
Definition: RinexData.h:163
"REC # / TYPE / VERS" (All versions)
Definition: RinexData.h:143
"PGM / RUN BY / DATE" (All versions)
Definition: RinexData.h:137
"ANT # / TYPE" (All versions)
Definition: RinexData.h:144
"RCV CLOCK OFFS APPL" (All versions)
Definition: RinexData.h:160
No lable detected (to manage error messages)
Definition: RinexData.h:179
"# OF SATELLITES" (All versions)
Definition: RinexData.h:167
"ION ALPHA" (in GPS NAV version V210)
Definition: RinexData.h:170
"ANTENNA: DELTA H/E/N" (All versions)
Definition: RinexData.h:146
"TIME OF LAST OBS" (All versions)
Definition: RinexData.h:159
"SYS / PCVS APPLIED" (in version V302)
Definition: RinexData.h:162
"WAVELENGTH FACT L1/2" (in version V210)
Definition: RinexData.h:153
"ANTENNA: B.SIGHT XYZ" (in version V302)
Definition: RinexData.h:149
"LEAP SECONDS" (All versions)
Definition: RinexData.h:166
"PRN / # OF OBS" (All versions)
Definition: RinexData.h:168
"# / TYPES OF OBSERV" (in version V210)
Definition: RinexData.h:154
RINEXlabel
RINEX label identifiers defined for each RINEX file header record.
Definition: RinexData.h:135
"ANTENNA: ZERODIR XYZ" (in version V302)
Definition: RinexData.h:151
"ANTENNA: DELTA X/Y/Z" (in version V302)
Definition: RinexData.h:147
"TIME OF FIRST OBS" (All versions)
Definition: RinexData.h:158
RINEX version V3.02.
Definition: RinexData.h:130
"IONOSPHERIC CORR" (in GNSS NAV version V302)
Definition: RinexData.h:173
"GLONASS SLOT / FRQ #" (in version V302)
Definition: RinexData.h:165
"ION BETA" (in GPS NAV version V210)
Definition: RinexData.h:171
"CENTER OF MASS XYZ" (in version V302)
Definition: RinexData.h:152
"SYS / DCBS APPLIED" (in version V302)
Definition: RinexData.h:161
"ANTENNA: PHASECENTER" (in version V302)
Definition: RinexData.h:148
"SYS / # / OBS TYPES" (in version V302)
Definition: RinexData.h:155