Changeset 4584 in ntrip


Ignore:
Timestamp:
Aug 29, 2012, 6:02:19 PM (12 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnctime.h

    r4278 r4584  
    2121  unsigned int gpsw()   const;
    2222  double       gpssec() const;
     23  double       mjddec() const {return (_mjd + _sec / 86400.0);}
    2324  void         civil_date (unsigned int& year, unsigned int& month,
    2425                           unsigned int& day) const;
  • trunk/BNC/src/rinex/availplot.cpp

    r4582 r4584  
    77
    88#include "availplot.h"
     9#include "reqcanalyze.h"
    910
    1011t_availPlot::t_availPlot(QWidget* parent,
    11                          QMap<QString, QVector<int> >* prnAvail)
     12                        QMap<QString, t_availData>* availDataMap)
    1213: QwtPlot(parent) {
    13 
    14   setTitle("Availability Plot"); 
    1514
    1615  setCanvasBackground(QColor(Qt::white));
     
    3736  // ------
    3837  int iC = 0;
    39   QMapIterator<QString, QVector<int> > it(*prnAvail);
     38  QMapIterator<QString, t_availData > it(*availDataMap);
    4039  while (it.hasNext()) {
    4140    it.next();
    4241    ++iC;
    43     const QString&      prn    = it.key();
    44     const QVector<int>& epochs = it.value();
     42    const QString&         prn       = it.key();
     43    const t_availData&     availData = it.value();
     44    const QVector<double>& epochs    = availData._epoL1;
    4545
    4646    double xData[epochs.size()];
  • trunk/BNC/src/rinex/availplot.h

    r4578 r4584  
    55#include <qwt_plot.h>
    66
     7class t_availData;
     8
    79class t_availPlot: public QwtPlot {
    810 Q_OBJECT
    911
    1012public:
    11   t_availPlot(QWidget* parent, QMap<QString, QVector<int> >* prnAvail);
     13  t_availPlot(QWidget* parent, QMap<QString, t_availData>* availDataMap);
    1214
    1315private:
  • 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;
  • trunk/BNC/src/rinex/reqcanalyze.h

    r4572 r4584  
    3434class t_polarPoint;
    3535
     36class t_availData {
     37 public:
     38  QVector<double> _epoL1;
     39};
     40
    3641class t_reqcAnalyze : public QThread {
    3742Q_OBJECT
     
    5257                  const QByteArray&, double);
    5358
    54   void dspAvailPlot(const QString&, const QByteArray&,
    55                     QMap<QString, QVector<int> >*);
     59  void dspAvailPlot(const QString&, const QByteArray&);
    5660   
    5761 private slots:
     
    6367                      const QByteArray& scaleTitle, double maxValue);
    6468
    65   void slotDspAvailPlot(const QString& fileName, const QByteArray& title,
    66                         QMap<QString, QVector<int> >* prnAvail);
     69  void slotDspAvailPlot(const QString& fileName, const QByteArray& title);
    6770
    6871 public:
     
    7073 
    7174 private:
    72   class t_anaObs {
     75  class t_oneObs {
    7376   public:
    74     t_anaObs(int GPSWeek, double GPSWeeks) {
     77    t_oneObs(int GPSWeek, double GPSWeeks) {
    7578      _GPSWeek  = GPSWeek;
    7679      _GPSWeeks = GPSWeeks;
     
    9295  };
    9396
    94   class t_satStat {
     97  class t_allObs {
    9598   public:
    96     t_satStat() {}
    97     ~t_satStat() {
    98       for (int ii = 0; ii < anaObs.size(); ii++) {
    99         delete anaObs[ii];
     99    t_allObs() {}
     100    ~t_allObs() {
     101      for (int ii = 0; ii < _oneObsVec.size(); ii++) {
     102        delete _oneObsVec[ii];
    100103      }
    101104    }
    102105    void addObs(const t_obs& obs);
    103     QVector<t_anaObs*> anaObs;
     106    QVector<t_oneObs*> _oneObsVec;
    104107  };
    105108
    106109  void analyzeFile(t_rnxObsFile* obsFile);
    107   void preparePlotData(const QString& prn, const t_satStat& satStat,
    108                        const ColumnVector& xyz, double obsInterval,
     110  void preparePlotData(const QString& prn, const ColumnVector& xyz,
     111                       double obsInterval,
    109112                       QVector<t_polarPoint*>* dataMP1,
    110113                       QVector<t_polarPoint*>* dataMP2,
    111114                       QVector<t_polarPoint*>* dataSNR1,
    112                        QVector<t_polarPoint*>* dataSNR2,
    113                        QVector<int>&           dataL1);
     115                       QVector<t_polarPoint*>* dataSNR2);
    114116
    115   QString                  _logFileName;
    116   QFile*                   _logFile;
    117   QTextStream*             _log;
    118   QStringList              _obsFileNames;
    119   QVector<t_rnxObsFile*>   _rnxObsFiles;
    120   QStringList              _navFileNames;
    121   QVector<t_eph*>          _ephs;
    122   QMap<QString, t_satStat> _satStat;
    123   t_rnxObsFile::t_rnxEpo*  _currEpo;
     117  QString                    _logFileName;
     118  QFile*                     _logFile;
     119  QTextStream*               _log;
     120  QStringList                _obsFileNames;
     121  QVector<t_rnxObsFile*>     _rnxObsFiles;
     122  QStringList                _navFileNames;
     123  QVector<t_eph*>            _ephs;
     124  t_rnxObsFile::t_rnxEpo*    _currEpo;
     125  QMap<QString, t_allObs>    _allObsMap;
     126  QMap<QString, t_availData> _availDataMap;
    124127};
    125128
Note: See TracChangeset for help on using the changeset viewer.