Changeset 7920 in ntrip


Ignore:
Timestamp:
May 24, 2016, 11:06:34 AM (3 years ago)
Author:
stuerze
Message:

rinex qc: satellite visibility is considered now if the expected obs are computed

Location:
branches/BNC_2.12/src/rinex
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/BNC_2.12/src/rinex/reqcanalyze.cpp

    r7913 r7920  
    217217      for (unsigned iObs = 0; iObs < _currEpo->rnxSat.size(); iObs++) {
    218218        const t_rnxObsFile::t_rnxSat& rnxSat = _currEpo->rnxSat[iObs];
     219        if (_navFileNames.size() &&
     220            _numExpObs.find(rnxSat.prn) == _numExpObs.end()) {
     221          _numExpObs[rnxSat.prn] = 0;
     222        }
    219223        if (_signalTypes.find(rnxSat.prn.system()) == _signalTypes.end()) {
    220224          continue;
     
    230234
    231235    analyzeMultipath();
     236
     237    if (_navFileNames.size()) {
     238      setExpectedObs(_qcFile._startTime, _qcFile._endTime, _qcFile._interval, xyzSta);
     239    }
    232240
    233241    preparePlotData(obsFile);
     
    807815                                                        .arg(obsFile->antNEU()(1), 8, 'f', 4) << endl
    808816        << "Start Time         : " << _qcFile._startTime.datestr().c_str()         << ' '
    809                                   << _qcFile._startTime.timestr(1,'.').c_str()    << endl
     817                                   << _qcFile._startTime.timestr(1,'.').c_str()    << endl
    810818        << "End Time           : " << _qcFile._endTime.datestr().c_str()           << ' '
    811                                   << _qcFile._endTime.timestr(1,'.').c_str()      << endl
     819                                   << _qcFile._endTime.timestr(1,'.').c_str()      << endl
    812820        << "Interval           : " << _qcFile._interval                            << endl;
    813 
    814   int numPossibleObs = int((_qcFile._endTime - _qcFile._startTime + _qcFile._interval)/_qcFile._interval);
    815821
    816822  // Number of systems
     
    847853  }
    848854
     855  // System specific summary
     856  // -----------------------
    849857  itSys.toFront();
    850858  while (itSys.hasNext()) {
     
    852860    const QChar&                      sys      = itSys.key();
    853861    const QVector<const t_qcSatSum*>& qcSatVec = itSys.value();
     862    int numExpectedObs = 0;
     863    for(QMap<t_prn, int>::iterator it = _numExpObs.begin();
     864        it != _numExpObs.end(); it++) {
     865      if (sys == it.key().system()) {
     866        numExpectedObs += it.value();
     867      }
     868    }
    854869    QString prefixSys = QString("  ") + sys + QString(": ");
    855870    QMap<QString, QVector<const t_qcFrqSum*> > frqMap;
     
    881896      const QVector<const t_qcFrqSum*> qcFrqVec = itFrq.value();
    882897      QString prefixFrq = QString("  ") + frqType + QString(": ");
    883 
    884898      int    numObs          = 0;
    885899      int    numSlipsFlagged = 0;
     
    907921        sumMP /= numMP;
    908922      }
    909       double ratio = double(numObs) / ((double(numPossibleObs) * double(qcSatVec.size())));
     923
     924      double ratio = (double(numObs) / double(numExpectedObs)) * 100.0;
     925
    910926      *_log << endl
    911             << prefixSys2 << prefixFrq << "Observations      : "
    912             << QString("%1 (%2) %3 \%\n").arg(numObs,           6).arg(numPossibleObs*qcSatVec.size(),           8).arg(ratio*100.0, 8, 'f', 2)
    913             << prefixSys2 << prefixFrq << "Slips (file+found): " << QString("%1 +").arg(numSlipsFlagged,  8)
     927            << prefixSys2 << prefixFrq << "Observations      : ";
     928      if(_navFileNames.isEmpty() || _navFileIncomplete.contains(sys.toLatin1())) {
     929        *_log << QString("%1\n").arg(numObs,           6);
     930      }
     931      else {
     932        *_log << QString("%1 (%2) %3 \%\n").arg(numObs,           6).arg(numExpectedObs,           8).arg(ratio, 8, 'f', 2);
     933      }
     934      *_log << prefixSys2 << prefixFrq << "Slips (file+found): " << QString("%1 +").arg(numSlipsFlagged,  8)
    914935                                                                 << QString("%1\n").arg(numSlipsFound,    8)
    915936            << prefixSys2 << prefixFrq << "Gaps              : " << QString("%1\n").arg(numGaps,          8)
     
    10601081  }
    10611082}
     1083
     1084void t_reqcAnalyze::setExpectedObs(const bncTime& startTime, const bncTime& endTime,
     1085                                   double interval, const ColumnVector& xyzSta) {
     1086
     1087  for(QMap<t_prn, int>::iterator it = _numExpObs.begin();
     1088      it != _numExpObs.end(); it++) {
     1089    t_eph* eph = 0;
     1090    for (int ie = 0; ie < _ephs.size(); ie++) {
     1091      if (_ephs[ie]->prn().system() == it.key().system() &&
     1092          _ephs[ie]->prn().number() == it.key().number()) {
     1093        eph = _ephs[ie];
     1094        break;
     1095      }
     1096    }
     1097    if (eph) {
     1098      int numExpObs = 0;
     1099      bncTime epoTime;
     1100      for (epoTime = startTime - interval; epoTime < endTime;
     1101           epoTime = epoTime + interval) {
     1102        ColumnVector xc(4);
     1103        ColumnVector vv(3);
     1104        if ( xyzSta.size() == 3 && (xyzSta[0] != 0.0 || xyzSta[1] != 0.0 || xyzSta[2] != 0.0) &&
     1105             eph->getCrd(epoTime, xc, vv, false) == success) {
     1106          double rho, eleSat, azSat;
     1107          topos(xyzSta(1), xyzSta(2), xyzSta(3), xc(1), xc(2), xc(3), rho, eleSat, azSat);
     1108          if ((eleSat * 180.0/M_PI) > 0.0) {
     1109            numExpObs++;
     1110          }
     1111        }
     1112      }
     1113      it.value() = numExpObs;
     1114    }
     1115    else {
     1116      if (!_navFileIncomplete.contains(it.key().system())) {
     1117        _navFileIncomplete.append(it.key().system());
     1118      }
     1119    }
     1120  }
     1121}
  • branches/BNC_2.12/src/rinex/reqcanalyze.h

    r7628 r7920  
    176176                  const t_satObs& satObs, QMap<QString, bncTime>& lastObsTime, t_qcSat& qcSat);
    177177
     178  void   setExpectedObs(const bncTime& startTime, const bncTime& endTime,
     179                        double interval, const ColumnVector& xyzSta);
     180
    178181  void   analyzeMultipath();
    179182
     
    192195  QString                       _reqcPlotSignals;
    193196  QMap<char, QVector<QString> > _signalTypes;
     197  QMap<t_prn, int>              _numExpObs;
     198  QVector<char>                 _navFileIncomplete;
    194199  QStringList                   _defaultSignalTypes;
    195200  QVector<t_eph*>               _ephs;
Note: See TracChangeset for help on using the changeset viewer.