41 const double MAXOBSVAL = 9999999999.999;
42 const double MINOBSVAL = -999999999.999;
44 const unsigned int NAP = 0x00;
45 const unsigned int OBL = 0x01;
46 const unsigned int OPT = 0x02;
47 const unsigned int MSK = 0x03;
48 const unsigned int OBSNAP = NAP;
49 const unsigned int OBSOBL = OBL;
50 const unsigned int OBSOPT = OPT;
51 const unsigned int OBSMSK = MSK;
52 const unsigned int NAVNAP = NAP<<2;
53 const unsigned int NAVOBL = OBL<<2;
54 const unsigned int NAVOPT = OPT<<2;
55 const unsigned int NAVMSK = MSK<<2;
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 ");
187 RinexData(RINEXversion ver,
string prg,
string rby);
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);
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);
222 RINEXlabel lblTOid(
string label);
223 string idTOlbl(RINEXlabel
id);
224 RINEXlabel get1stLabelId();
225 RINEXlabel getNextLabelId();
226 void clearHeaderData();
227 string obsV2toV3(
const string&);
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);
234 bool setFilter(vector<string> selSat, vector<string> selObs);
235 bool filterObsData();
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();
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);
250 RINEXlabel readRinexHeader(FILE* input);
251 int readObsEpoch(FILE* input);
252 int readNavEpoch(FILE* input);
263 LABELdata (RINEXlabel lId,
char * lVal, RINEXversion v,
unsigned int t) {
271 LABELdata (
string c) {
273 labelVal =
"COMMENT";
275 type = OBSOPT + NAVOPT;
280 vector <LABELdata> labelDef;
281 unsigned int labelIdIdx;
284 RINEXversion inFileVer;
285 RINEXversion version;
347 vector <string> satNums;
354 WVLNfactor (
int wvl1,
int wvl2) {
355 wvlenFactorL1 = wvl1;
356 wvlenFactorL2 = wvl2;
359 WVLNfactor (
int wvl1,
int wvl2,
const vector<string> &sats) {
360 wvlenFactorL1 = wvl1;
361 wvlenFactorL2 = wvl2;
366 vector <WVLNfactor> wvlenFactor;
368 vector <string> v2ObsLst;
373 vector <string> obsType;
374 vector <bool> selObsType;
377 GNSSsystem (
char sys,
const vector<string> &obsT) {
380 obsType.insert(obsType.end(), obsT.begin(), obsT.end());
381 selObsType.insert(selObsType.begin(), obsType.size(),
true);
384 vector <GNSSsystem> systems;
407 DCBSPCVSapp (
int oi,
string cp,
const string &cs) {
413 vector <DCBSPCVSapp> dcbsApp;
415 vector <DCBSPCVSapp> pcvsApp;
420 vector <string> obsType;
422 OSCALEfact (
int oi,
int f,
const vector<string> &ot) {
428 vector <OSCALEfact> obsScaleFact;
434 vector <string> obsSats;
436 PHSHcorr (
int oi,
string cd,
double co,
const vector<string> &os) {
443 vector <PHSHcorr> phshCorrection;
450 GLSLTfrq (
int oi,
int sl,
int fr) {
456 vector <GLSLTfrq> gloSltFrq;
472 PRNobsnum (
char s,
int p,
const vector<int> &o) {
478 vector <PRNobsnum> prnObsNum;
482 vector <double> corrValues;
486 IONOcorr (
string ct,
const vector<double> &corr) {
491 vector <IONOcorr> ionoCorrection;
503 TIMcorr (
string ct,
double ca0,
double ca1,
int rs,
int rw,
const string &sb,
int ui) {
513 vector <TIMcorr> timCorrection;
520 double epochClkOffset;
533 SatObsData (
double obsTag,
int sysIdx,
int sat,
int obsIdx,
double obsVal,
int lol,
int str) {
537 obsTypeIndex = obsIdx;
543 bool operator < (
const SatObsData ¶m) {
544 if (obsTimeTag > param.obsTimeTag)
return false;
545 if (obsTimeTag < param.obsTimeTag)
return true;
547 if (sysIndex > param.sysIndex)
return false;
548 if (this->sysIndex < param.sysIndex)
return true;
550 if (satellite > param.satellite)
return false;
551 if (satellite < param.satellite)
return true;
553 if (obsTypeIndex > param.obsTypeIndex)
return false;
557 vector <SatObsData> epochObs;
563 double broadcastOrbit[8][4];
565 SatNavData(
double tT,
char sys,
int sat,
double bo[8][4]) {
569 for (
int i=0; i<8; i++)
570 for (
int j=0; j<4; j++)
571 broadcastOrbit[i][j] = bo[i][j];
574 bool operator < (
const SatNavData ¶m) {
575 if(navTimeTag > param.navTimeTag)
return false;
576 if(navTimeTag < param.navTimeTag)
return true;
578 if (systemId > param.systemId)
return false;
579 if (systemId < param.systemId)
return true;
581 if (satellite > param.satellite)
return false;
585 vector <SatNavData> epochNav;
587 vector<LABELdata>::iterator lastRecordSet;
593 EQUIVobs (
const string &v2,
const string &v3) {
598 vector <EQUIVobs> obsNamEq;
605 vector<string> selectedSats;
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);
629 string getSysDes(
char s);
"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
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