Changeset 2111 in ntrip for trunk/BNC/bncmodel.cpp


Ignore:
Timestamp:
Dec 14, 2009, 9:57:08 AM (14 years ago)
Author:
mervart
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncmodel.cpp

    r2109 r2111  
    467467    ColumnVector vv = ll - AA * dx;
    468468
    469     iObs = 0;
    470     QMutableMapIterator<QString, t_satData*> it2Obs(epoData->satData);
    471     while (it2Obs.hasNext()) {
    472       ++iObs;
    473       it2Obs.next();
    474       QString    prn     = it2Obs.key();
    475       t_satData* satData = it2Obs.value();
    476       if (fabs(vv(iObs)) > MAXRES_CODE) {
    477         delete satData;
    478         it2Obs.remove();
    479         _QQ = QQsav;
    480         outlier = true;
    481         cout << "Code " << prn.toAscii().data() << " " << vv(iObs) << endl;
    482         break;
    483       }
    484       if (_usePhase) {
    485         ++iObs;
    486         if (fabs(vv(iObs)) > MAXRES_PHASE) {
     469    double vvMaxCode  = 0.0;
     470    int    iMaxCode   = 0;
     471    double vvMaxPhase = 0.0;
     472    int    iMaxPhase  = 0;
     473    if (_usePhase) {
     474      for (int ii = 1; ii <= vv.Nrows(); ii += 2) {
     475        if (vvMaxCode == 0.0 || fabs(vv(ii)) > vvMaxCode) {
     476          vvMaxCode = fabs(vv(ii));
     477          iMaxCode  = ii;
     478        }
     479        if (vvMaxPhase == 0.0 || fabs(vv(ii+1)) > vvMaxPhase) {
     480          vvMaxPhase = fabs(vv(ii+1));
     481          iMaxPhase  = ii;
     482        }
     483      }
     484    }
     485    else {
     486      for (int ii = 1; ii <= vv.Nrows(); ii++) {
     487        if (vvMaxCode == 0.0 || fabs(vv(ii)) > vvMaxCode) {
     488          vvMaxCode = fabs(vv(ii));
     489          iMaxCode  = ii;
     490        }
     491      }
     492    }
     493
     494    if      (vvMaxCode > MAXRES_CODE) {
     495      int iObs = 0;
     496      QMutableMapIterator<QString, t_satData*> itObs(epoData->satData);
     497      while (itObs.hasNext()) {
     498        itObs.next();
     499        iObs += 1;
     500        if (iObs == iMaxCode) {
     501          QString    prn     = itObs.key();
     502          t_satData* satData = itObs.value();
    487503          delete satData;
    488           it2Obs.remove();
     504          itObs.remove();
    489505          _QQ = QQsav;
    490506          outlier = true;
    491           cout << "Phase " << prn.toAscii().data() << " " << vv(iObs) << endl;
     507          cout << "Code " << prn.toAscii().data() << " " << vv(iObs) << endl;
    492508          break;
    493509        }
    494       }
    495     }
    496  
     510        if (_usePhase) {
     511          ++iObs;
     512        }
     513      }
     514    }
     515    else if (vvMaxPhase > MAXRES_PHASE) {
     516      int iObs = 0;
     517      QMutableMapIterator<QString, t_satData*> itObs(epoData->satData);
     518      while (itObs.hasNext()) {
     519        itObs.next();
     520        iObs += 2;
     521        if (iObs == iMaxPhase) {
     522          QString    prn     = itObs.key();
     523          t_satData* satData = itObs.value();
     524          delete satData;
     525          itObs.remove();
     526          _QQ = QQsav;
     527          outlier = true;
     528          cout << "Code " << prn.toAscii().data() << " " << vv(iObs) << endl;
     529          break;
     530        }
     531      }
     532    }
     533
    497534  } while (outlier);
    498535
Note: See TracChangeset for help on using the changeset viewer.