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


Ignore:
Timestamp:
Jun 20, 2022, 4:54:59 PM (23 months ago)
Author:
stuerze
Message:

some more changes to consider RINEX Version 4 nav file (EPH key only)

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

Legend:

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

    r9639 r9765  
    6363  _outNavFileName = settings.value("reqcOutNavFile").toString();
    6464  int version     = settings.value("reqcRnxVersion").toInt();
    65   if (version < 3) {
     65  if (version == 2) {
    6666    _rnxVersion = defaultRnxObsVersion2;
    6767  }
    68   else {
     68  if (version == 3) {
    6969    _rnxVersion = defaultRnxObsVersion3;
     70  }
     71  if (version == 4) {
     72    _rnxVersion = defaultRnxObsVersion4;
    7073  }
    7174  _samplingRate   = settings.value("reqcSampling").toString().split("sec").first().toDouble();
     
    601604  outNavFile.setGlonass(haveGlonass);
    602605
    603   if ( (haveGPS && haveGlonass) || _rnxVersion >= 3.0) {
     606  if (_rnxVersion < 3.0) {
     607    if (haveGPS && haveGlonass) {
     608      outNavFile.setVersion(defaultRnxNavVersion3);
     609    }
     610    if (haveGPS && !haveGlonass) {
     611      outNavFile.setVersion(defaultRnxNavVersion2);
     612    }
     613  }
     614
     615  if (_rnxVersion >= 3.0 &&  _rnxVersion < 4.0) {
    604616    outNavFile.setVersion(defaultRnxNavVersion3);
    605617  }
    606   else {
    607     outNavFile.setVersion(defaultRnxNavVersion2);
     618
     619  if (_rnxVersion >= 4.0) {
     620    outNavFile.setVersion(defaultRnxNavVersion4);
    608621  }
    609622
     
    626639  }
    627640
    628   outNavFile.writeHeader(&txtMap);
     641  int mergedNavFiles = _navFileNames.size();
     642  unsigned year, month, day;
     643  int gps_utc = 0;
     644  if (_ephs.size()) {
     645    _ephs.at(0)->TOC().civil_date(year, month, day);
     646    gps_utc = gnumleap(year, month, day);
     647  }
     648  outNavFile.writeHeader(&txtMap, mergedNavFiles, gps_utc);
    629649
    630650  // Loop over all ephemerides
     
    645665    }
    646666    if (eph->checkState() == t_eph::bad) {
     667      continue;
     668    }
     669    if (outNavFile.version() >= 4.0 &&
     670        eph->navType() == t_eph::undefined) { // input files < version 4.0
    647671      continue;
    648672    }
  • trunk/BNC/src/rinex/rnxnavfile.cpp

    r9366 r9765  
    146146////////////////////////////////////////////////////////////////////////////
    147147void t_rnxNavFile::read(QTextStream* stream) {
     148  QString navTypeStr;
    148149
    149150  while (stream->status() == QTextStream::Ok && !stream->atEnd()) {
     151
    150152    QString line = stream->readLine();
    151153    if (line.isEmpty()) {
    152154      continue;
    153155    }
     156
    154157    QStringList hlp = line.split(QRegExp("\\s+"), QString::SkipEmptyParts);
     158    QString firstStr = hlp.at(0);
    155159    QString prn;
    156     if (version() >= 3.0) {
    157       prn = hlp.at(0);
     160
     161    if      (version() >= 3.0 &&  firstStr != ">") {
     162      prn = firstStr;
     163    }
     164    else if (version() >= 4.0 && firstStr == ">") {
     165      int lines2skip = 0;
     166      QString key = hlp.at(1);
     167      // EPH is used
     168      if (key == "EPH") {
     169          navTypeStr = hlp.at(3);
     170      }
     171      // all others are currently ignored
     172      else if (key == "STO") {
     173        lines2skip = 2;
     174      }
     175      else if (key == "EOP" || key == "ION") {
     176        lines2skip = 3;
     177      }
     178      if (lines2skip) {
     179        for (int ii = 1; ii < lines2skip; ii++) {
     180          stream->readLine();
     181        }
     182      }
     183      continue;
    158184    }
    159185    else {
     
    213239      }
    214240      eph = new t_ephGPS(version(), lines);
     241    }
     242    else {
     243      continue;
     244    }
     245    if (version() >= 4.0) {
     246      if (eph->setNavType(navTypeStr) != success) {
     247        delete eph;
     248        continue;
     249      }
    215250    }
    216251    _ephs.push_back(eph);
     
    264299//
    265300////////////////////////////////////////////////////////////////////////////
    266 void t_rnxNavFile::writeHeader(const QMap<QString, QString>* txtMap) {
     301void t_rnxNavFile::writeHeader(const QMap<QString, QString>* txtMap, int numMergedFiles, int leapSecs) {
    267302
    268303  QString     runBy = BNC_CORE->userName();
     
    334369           << "PGM / RUN BY / DATE\n";
    335370
     371  if (version() >= 4.0) {
     372    *_stream << QString("%1").arg(leapSecs, 6, 10, QLatin1Char(' ')).left(60).leftJustified(60)
     373        << "LEAP SECONDS\n";
     374
     375    *_stream << QString("%1").arg(numMergedFiles, 19, 10, QLatin1Char(' ')).leftJustified(60)
     376        << "MERGED FILE\n";
     377  }
     378
    336379  QStringListIterator itCmnt(comments);
    337380  while (itCmnt.hasNext()) {
     
    339382  }
    340383
     384
    341385  *_stream << QString()
    342386    .leftJustified(60)
  • trunk/BNC/src/rinex/rnxnavfile.h

    r9760 r9765  
    2525#ifndef RNXNAVFILE_H
    2626#define RNXNAVFILE_H
    27 
     27#include <iostream>
    2828#include <queue>
    2929#include <QtCore>
     
    3535class bncPPPclient;
    3636class t_eph;
    37 
     37using namespace std;
    3838#define defaultRnxNavVersion2 2.11
    3939#define defaultRnxNavVersion3 3.05
     
    6868  void   setGlonass(bool glo) {_header._glonass = glo;}
    6969  void   setGnssTypeV3(t_eph::e_type sys) {_header._satSys = sys;}
    70   void   writeHeader(const QMap<QString, QString>* txtMap = 0);
     70  void   writeHeader(const QMap<QString, QString>* txtMap = 0, int numMergedFiles = 0, int leapSecs = 0);
    7171  void   writeEph(const t_eph* eph);
    7272
Note: See TracChangeset for help on using the changeset viewer.