Changeset 10587 in ntrip for trunk/BNC/src/rinex


Ignore:
Timestamp:
Dec 10, 2024, 3:57:21 PM (7 weeks ago)
Author:
stuerze
Message:

RINEX version 4.02 updates

Location:
trunk/BNC/src/rinex
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/rinex/reqcanalyze.cpp

    r10577 r10587  
    10191019            *_log  << "                     "
    10201020                << navFi.fileName() << ' ' << QString(": WRONG %2:%3\n")
    1021                            .arg(eph->ephTypeStr(eph->ephType(), eph->prn(), 99.0))
     1021                           .arg(eph->typeStr(eph->type(), eph->prn(), 99.0))
    10221022                           .arg(eph->rinexDateStr(eph->TOC(), eph->prn(), 99.0)).toLatin1();
    10231023          }
  • trunk/BNC/src/rinex/reqcedit.cpp

    r10577 r10587  
    586586  bool haveGPS     = false;
    587587  bool haveGlonass = false;
    588   QMap<t_eph::e_type, bool> haveGnss;
     588  QMap<t_eph::e_system, bool> haveGnss;
    589589  for (int ii = 0; ii < _ephs.size(); ii++) {
    590590    const t_eph* eph = _ephs[ii];
    591     switch (eph->type()) {
     591    switch (eph->system()) {
    592592      case t_eph::GPS:
    593593        haveGPS = true;
     
    680680    bncTime begTime = _begTime;
    681681    bncTime endTime = _endTime;
    682     if (eph->type() == t_eph::BDS) {
     682    if (eph->system() == t_eph::BDS) {
    683683      begTime += 14;
    684684      endTime += 14;
     
    695695
    696696    if (outNavFile.version() < 3.0) {
    697           if (outNavFile.glonass() && eph->type() != t_eph::GLONASS) {
     697          if (outNavFile.glonass() && eph->system() != t_eph::GLONASS) {
    698698            continue;
    699699          }
    700           if (!outNavFile.glonass() && eph->type() != t_eph::GPS) {
     700          if (!outNavFile.glonass() && eph->system() != t_eph::GPS) {
    701701            continue;
    702702      }
    703703    }
    704 
    705     if (outNavFile.version() < 4.0) {
    706       if (eph->ephType() == t_eph::CNAV ||
    707           eph->ephType() == t_eph::CNV1 ||
    708           eph->ephType() == t_eph::CNV2 ||
    709           eph->ephType() == t_eph::CNV3) {
    710         continue;
    711       }
    712     }
    713 
    714     if (outNavFile.version() >= 4.0 &&
    715         eph->ephType() == t_eph::undefined) { // input files < version 4.0
    716       continue;
    717     }
    718 
    719704    outNavFile.writeEph(eph);
    720705  }
     
    739724
    740725    if (isNew) {
    741       if      (eph->type() == t_eph::GPS) {
     726      if      (eph->system() == t_eph::GPS) {
    742727        ephs.append(new t_ephGPS(*dynamic_cast<t_ephGPS*>(eph)));
    743728      }
    744       else if (eph->type() == t_eph::GLONASS) {
     729      else if (eph->system() == t_eph::GLONASS) {
    745730        ephs.append(new t_ephGlo(*dynamic_cast<t_ephGlo*>(eph)));
    746731      }
    747       else if (eph->type() == t_eph::Galileo) {
     732      else if (eph->system() == t_eph::Galileo) {
    748733        ephs.append(new t_ephGal(*dynamic_cast<t_ephGal*>(eph)));
    749734      }
    750       else if (eph->type() == t_eph::QZSS) {
     735      else if (eph->system() == t_eph::QZSS) {
    751736        ephs.append(new t_ephGPS(*dynamic_cast<t_ephGPS*>(eph)));
    752737      }
    753       else if (eph->type() == t_eph::SBAS) {
     738      else if (eph->system() == t_eph::SBAS) {
    754739        ephs.append(new t_ephSBAS(*dynamic_cast<t_ephSBAS*>(eph)));
    755740      }
    756       else if (eph->type() == t_eph::BDS) {
     741      else if (eph->system() == t_eph::BDS) {
    757742        ephs.append(new t_ephBDS(*dynamic_cast<t_ephBDS*>(eph)));
    758743      }
    759       else if (eph->type() == t_eph::IRNSS) {
     744      else if (eph->system() == t_eph::IRNSS) {
    760745        ephs.append(new t_ephGPS(*dynamic_cast<t_ephGPS*>(eph)));
    761746      }
  • trunk/BNC/src/rinex/rnxnavfile.cpp

    r10577 r10587  
    149149////////////////////////////////////////////////////////////////////////////
    150150void t_rnxNavFile::read(QTextStream* stream) {
    151   QString ephType;
    152151
    153152  while (stream->status() == QTextStream::Ok && !stream->atEnd()) {
     
    157156      continue;
    158157    }
    159 
     158    QString navType;
    160159    QStringList hlp = line.split(QRegExp("\\s+"), Qt::SkipEmptyParts);
    161     QString key, prn, navSubType;
     160    QString prn;
    162161    char sys;
    163 
    164162    QString firstStr = hlp.at(0);
    165     if      (version() >= 3.0 &&  firstStr != ">") {
     163
     164    // RINEX version 3
     165    if      (version() >= 3.0 &&
     166             version() <  4.0 &&  firstStr != ">") {
    166167      prn = firstStr;
    167168      sys = prn[0].toLatin1();
    168     }
     169      navType = "";
     170    }
     171    // RINEX version 4
    169172    else if (version() >= 4.0 && firstStr == ">") {
    170       key = hlp.at(1);
     173      QString key = hlp.at(1);
    171174      prn = hlp.at(2);
    172175      sys = prn[0].toLatin1();
    173       ephType = hlp.at(3);
     176      navType = hlp.at(3);
    174177
    175178      // ALL Non-EPH messages are currently ignored
     
    194197                 sys == 'J' || sys == 'I') {
    195198          lines2skip = 3;
    196           if ((sys == 'I' && ephType == "L1NV") || // I: KLOB, NEQN
    197               (sys == 'J' && ephType == "CNVX")) { // J: WIDE, JAPN
    198             navSubType = hlp.at(4);
     199          if ((sys == 'I' && navType == "L1NV") || // I: KLOB, NEQN
     200              (sys == 'J' && navType == "CNVX")) { // J: WIDE, JAPN
     201            QString navSubType = hlp.at(4);
    199202            if      (navSubType == "KLOB") {
    200203              lines2skip += 1;
     
    213216      continue;
    214217    }
     218    // RINEX version 2
    215219    else {
    216220      if (glonass()) {
     
    226230    lines << line;
    227231    if      (sys == 'G') {
    228       for (int ii = 1; ii < 8; ii++) {
     232      int nLines = 8;
     233      if (navType == "CNAV") {
     234        nLines += 1;
     235      }
     236      if (navType == "CNV2") {
     237        nLines += 2;
     238      }
     239      for (int ii = 1; ii < nLines; ii++) {
    229240        lines << stream->readLine();
    230241      }
     
    232243    }
    233244    else if (sys == 'R') {
    234       int num = 4;
     245      int nLines = 4;
    235246      if (version() >= 3.05) {
    236         num += 1;
    237       }
    238       for (int ii = 1; ii < num; ii++) {
     247        nLines += 1;
     248      }
     249      for (int ii = 1; ii < nLines; ii++) {
    239250        lines << stream->readLine();
    240251      }
     
    248259    }
    249260    else if (sys == 'J') {
    250       for (int ii = 1; ii < 8; ii++) {
     261      int nLines = 8;
     262      if (navType == "CNAV") {
     263        nLines += 1;
     264      }
     265      if (navType == "CNV2") {
     266        nLines += 2;
     267      }
     268      for (int ii = 1; ii < nLines; ii++) {
    251269        lines << stream->readLine();
    252270      }
     
    260278    }
    261279    else if (sys == 'C') {
    262       for (int ii = 1; ii < 8; ii++) {
     280      int nLines = 8;
     281      if (navType == "CNV1" ||
     282          navType == "CNV2") {
     283        nLines += 2;
     284      }
     285      if (navType == "CNV3") {
     286        nLines += 1;
     287      }
     288      for (int ii = 1; ii < nLines; ii++) {
    263289        lines << stream->readLine();
    264290      }
     
    266292    }
    267293    else if (sys == 'I') {
    268       for (int ii = 1; ii < 8; ii++) {
     294      int nLines = 8;
     295      if (navType == "L1NV") {
     296        nLines += 1;
     297      }
     298      for (int ii = 1; ii < nLines; ii++) {
    269299        lines << stream->readLine();
    270300      }
     
    272302    }
    273303
    274     if (version() >= 4.0 && key == "EPH") {
    275       if (eph->setEphType(ephType) != success) {
    276         delete eph;
    277         continue;
    278       }
    279     }
    280 
    281304    if (eph) {
     305      eph->setType(navType);
    282306      _ephs.push_back(eph);
    283307    }
     308
    284309  }
    285310}
     
    363388  else {
    364389    QString fmt;
    365     t_eph::e_type sys = satSystem();
     390    t_eph::e_system sys = satSystem();
    366391    switch(sys) {
    367392      case t_eph::GPS:
  • trunk/BNC/src/rinex/rnxnavfile.h

    r10127 r10587  
    3838#define defaultRnxNavVersion2 2.11
    3939#define defaultRnxNavVersion3 3.05
    40 #define defaultRnxNavVersion4 4.01
     40#define defaultRnxNavVersion4 4.02
    4141
    4242class t_rnxNavFile {
     
    5252    double _version;
    5353    bool   _glonass;
    54     t_eph::e_type _satSys;
    55     QStringList _comments;
    56     QStringList _runByDate;
     54    t_eph::e_system _satSys;
     55    QStringList     _comments;
     56    QStringList     _runByDate;
    5757  };
    5858
     
    6767  QStringList comments() const {return _header._comments;}
    6868  QStringList runByDate() const {return _header._runByDate;}
    69   t_eph::e_type satSystem() const {return _header._satSys;}
     69  t_eph::e_system satSystem() const {return _header._satSys;}
    7070  void   setGlonass(bool glo) {_header._glonass = glo;}
    71   void   setGnssTypeV3(t_eph::e_type sys) {_header._satSys = sys;}
     71  void   setGnssTypeV3(t_eph::e_system system) {_header._satSys = system;}
    7272  void   writeHeader(const QMap<QString, QString>* txtMap = 0, int numMergedFiles = 0, int leapSecs = 0);
    7373  void   writeEph(const t_eph* eph);
  • trunk/BNC/src/rinex/rnxobsfile.h

    r10532 r10587  
    4040#define defaultRnxObsVersion2 2.11
    4141#define defaultRnxObsVersion3 3.05
    42 #define defaultRnxObsVersion4 4.01
     42#define defaultRnxObsVersion4 4.02
    4343
    4444class t_rnxObsHeader {
Note: See TracChangeset for help on using the changeset viewer.