Changeset 4584 in ntrip for trunk/BNC/src/rinex/reqcanalyze.cpp


Ignore:
Timestamp:
Aug 29, 2012, 6:02:19 PM (12 years ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

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

    r4579 r4584  
    8484                                    const QByteArray&, double)));
    8585
    86   connect(this, SIGNAL(dspAvailPlot(const QString&,
    87                                     const QByteArray&,
    88                                     QMap<QString, QVector<int> >*)),
    89           this, SLOT(slotDspAvailPlot(const QString&,
    90                                       const QByteArray&,
    91                                       QMap<QString, QVector<int> >*)));
    92 
     86  connect(this, SIGNAL(dspAvailPlot(const QString&, const QByteArray&)),
     87          this, SLOT(slotDspAvailPlot(const QString&, const QByteArray&)));
    9388}
    9489
     
    214209  }
    215210
    216   _satStat.clear();
     211  _allObsMap.clear();
     212  _availDataMap.clear();
    217213
    218214  // A priori Coordinates
     
    239235                                     .arg(obs.satNum, 2, 10, QChar('0'));
    240236 
    241         t_satStat& satStat = _satStat[prn];
    242  
    243         satStat.addObs(obs);
     237        _allObsMap[prn].addObs(obs);
    244238      }
    245239 
     
    262256  QVector<t_polarPoint*>*       dataSNR1 = new QVector<t_polarPoint*>;
    263257  QVector<t_polarPoint*>*       dataSNR2 = new QVector<t_polarPoint*>;
    264   QMap<QString, QVector<int> >* availL1  = new QMap<QString, QVector<int> >;
    265 
    266 
    267   QMapIterator<QString, t_satStat> it(_satStat);
     258
     259  QMutableMapIterator<QString, t_allObs> it(_allObsMap);
    268260  while (it.hasNext()) {
    269261    it.next();
    270     QString          prn     = it.key();
    271     const t_satStat& satStat = it.value();
    272     QVector<int>&    dataL1  = (*availL1)[prn];
    273     preparePlotData(prn, satStat, xyz, obsFile->interval(),
    274                     dataMP1, dataMP2, dataSNR1, dataSNR2, dataL1);
     262    QString    prn     = it.key();
     263    preparePlotData(prn, xyz, obsFile->interval(),
     264                    dataMP1, dataMP2, dataSNR1, dataSNR2);
    275265  }
    276266
     
    281271                  "", 9.0);
    282272
    283   emit dspAvailPlot(obsFile->fileName(), "Availability L1", availL1);
     273  emit dspAvailPlot(obsFile->fileName(), "Availability L1");
    284274
    285275  if (_log) {
     
    290280// 
    291281////////////////////////////////////////////////////////////////////////////
    292 void t_reqcAnalyze::t_satStat::addObs(const t_obs& obs) {
    293 
    294   t_anaObs* newObs = new t_anaObs(obs.GPSWeek, obs.GPSWeeks);
     282void t_reqcAnalyze::t_allObs::addObs(const t_obs& obs) {
     283
     284  t_oneObs* newObs = new t_oneObs(obs.GPSWeek, obs.GPSWeeks);
    295285  bool      okFlag = false;
    296286
     
    364354  // ------------------------
    365355  if (okFlag) {
    366     anaObs << newObs;
     356    _oneObsVec << newObs;
    367357  }
    368358  else {
     
    373363// 
    374364////////////////////////////////////////////////////////////////////////////
    375 void t_reqcAnalyze::preparePlotData(const QString& prn,
    376                                     const t_satStat& satStat,
    377                                     const ColumnVector& xyz,
     365void t_reqcAnalyze::preparePlotData(const QString& prn, const ColumnVector& xyz,
    378366                                    double obsInterval,
    379367                                    QVector<t_polarPoint*>* dataMP1,
    380368                                    QVector<t_polarPoint*>* dataMP2,
    381369                                    QVector<t_polarPoint*>* dataSNR1,
    382                                     QVector<t_polarPoint*>* dataSNR2,
    383                                     QVector<int>&           dataL1) {
     370                                    QVector<t_polarPoint*>* dataSNR2) {
    384371
    385372  const int chunkStep = int( 30.0 / obsInterval); // chunk step (30 sec) 
    386373  const int numEpo    = int(600.0 / obsInterval); // # epochs in one chunk (10 min)
    387374
    388   for (int chunkStart = 0; chunkStart + numEpo < satStat.anaObs.size();
     375  t_allObs& allObs = _allObsMap[prn];
     376
     377  for (int chunkStart = 0; chunkStart + numEpo < allObs._oneObsVec.size();
    389378       chunkStart += chunkStep) {
    390379
     
    401390    for (int ii = 0; ii < numEpo; ii++) {
    402391      int iEpo = chunkStart + ii;
    403       const t_anaObs* anaObs = satStat.anaObs[iEpo];
     392      const t_oneObs* oneObs = allObs._oneObsVec[iEpo];
    404393
    405394      if (ii == 0) {
    406         firstEpoch.set(anaObs->_GPSWeek, anaObs->_GPSWeeks);
    407       }
    408 
    409       mean1 += anaObs->_MP1;
    410       mean2 += anaObs->_MP2;
    411 
    412       if ( anaObs->_SNR1 > 0 && (SNR1 == 0 || SNR1 > anaObs->_SNR1) ) {
    413         SNR1 = anaObs->_SNR1;
    414       }
    415       if ( anaObs->_SNR2 > 0 && (SNR2 == 0 || SNR2 > anaObs->_SNR2) ) {
    416         SNR2 = anaObs->_SNR2;
     395        bncTime epoTime(oneObs->_GPSWeek, oneObs->_GPSWeeks);
     396        _availDataMap[prn]._epoL1 << epoTime.mjddec();
     397      }
     398
     399      mean1 += oneObs->_MP1;
     400      mean2 += oneObs->_MP2;
     401
     402      if ( oneObs->_SNR1 > 0 && (SNR1 == 0 || SNR1 > oneObs->_SNR1) ) {
     403        SNR1 = oneObs->_SNR1;
     404      }
     405      if ( oneObs->_SNR2 > 0 && (SNR2 == 0 || SNR2 > oneObs->_SNR2) ) {
     406        SNR2 = oneObs->_SNR2;
    417407      }
    418408 
     
    420410      // ----------
    421411      if (ii > 0) {
    422         double diff1 = anaObs->_MP1 - satStat.anaObs[iEpo-1]->_MP1;
    423         double diff2 = anaObs->_MP2 - satStat.anaObs[iEpo-1]->_MP2;
     412        double diff1 = oneObs->_MP1 - allObs._oneObsVec[iEpo-1]->_MP1;
     413        double diff2 = oneObs->_MP2 - allObs._oneObsVec[iEpo-1]->_MP2;
    424414        if (fabs(diff1) > SLIPTRESH || fabs(diff2) > SLIPTRESH) {
    425415          slipFlag = true;
     
    428418      }
    429419    }
    430 
    431     dataL1 << int(firstEpoch.gpssec());
    432420
    433421    if (slipFlag) {
     
    444432    for (int ii = 0; ii < numEpo; ii++) {
    445433      int iEpo = chunkStart + ii;
    446       const t_anaObs* anaObs = satStat.anaObs[iEpo];
    447       double diff1 = anaObs->_MP1 - mean1;
    448       double diff2 = anaObs->_MP2 - mean2;
     434      const t_oneObs* oneObs = allObs._oneObsVec[iEpo];
     435      double diff1 = oneObs->_MP1 - mean1;
     436      double diff2 = oneObs->_MP2 - mean2;
    449437      stddev1 += diff1 * diff1;
    450438      stddev2 += diff2 * diff2;
     
    453441    double MP2 = sqrt(stddev2 / (numEpo-1));
    454442
    455     const t_anaObs* anaObs0 = satStat.anaObs[chunkStart];
     443    const t_oneObs* oneObs0 = allObs._oneObsVec[chunkStart];
    456444
    457445    // Compute the Azimuth and Zenith Distance
     
    470458      if (eph) {
    471459        double xSat, ySat, zSat, clkSat;
    472         eph->position(anaObs0->_GPSWeek, anaObs0->_GPSWeeks,
     460        eph->position(oneObs0->_GPSWeek, oneObs0->_GPSWeeks,
    473461                      xSat, ySat, zSat, clkSat);
    474462     
     
    509497////////////////////////////////////////////////////////////////////////////
    510498void t_reqcAnalyze::slotDspAvailPlot(const QString& fileName,
    511                                      const QByteArray& title,
    512                                      QMap<QString, QVector<int> >* prnAvail){
     499                                     const QByteArray& title) {
    513500
    514501  if (dynamic_cast<bncApp*>(qApp)->GUIenabled()) {
    515502
    516     t_availPlot* plot = new t_availPlot(0, prnAvail);
     503    t_availPlot* plot = new t_availPlot(0, &_availDataMap);
     504    plot->setTitle(title);
    517505
    518506    QVector<QWidget*> plots;
Note: See TracChangeset for help on using the changeset viewer.