Changeset 3386 in ntrip


Ignore:
Timestamp:
Aug 30, 2011, 5:42:31 PM (13 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncmodel.cpp

    r3385 r3386  
    271271    delete _params[iPar-1];
    272272  }
     273  delete _epoData_sav;
    273274}
    274275
     
    906907  Tracer tracer("bncModel::outlierDetection");
    907908
    908   QString prnCode;
    909   QString prnPhase;
    910   double  maxResCode  = 0.0;
    911   double  maxResPhase = 0.0;
    912 
    913   QString prnRemoved;
    914   double  maxRes;
    915 
    916   bool irc = false;
    917 
    918   // Check Code
    919   // ----------
    920   if (iPhase == 0) {
    921     findMaxRes(iPhase, vv, satData, prnCode, maxResCode, prnPhase, maxResPhase);
    922     if (maxResCode > MAXRES_CODE) {
    923       prnRemoved = prnCode;
    924       maxRes     = maxResCode;
    925       irc        = true;
    926     }
    927   }
    928 
    929   // Check Phase
    930   // -----------
     909  QString prn;
     910  double  maxRes  = 0.0;
     911  findMaxRes(vv, satData, prn, maxRes);
     912
     913  if ( maxRes > (iPhase == 1 ? MAXRES_PHASE : MAXRES_CODE) ) {
     914    _log += "Outlier " + prn + " "
     915          + QByteArray::number(maxRes, 'f', 3) + "\n";
     916    return true;
     917  }
    931918  else {
    932     findMaxRes(iPhase, vv, satData, prnCode, maxResCode, prnPhase, maxResPhase);
    933     if (maxResPhase > MAXRES_PHASE) {
    934       prnRemoved = prnPhase;
    935       maxRes     = maxResPhase;
    936       irc        = true;
    937     }
    938   }
    939  
    940   if (irc) {
    941     _log += "Outlier " + prnRemoved.toAscii() + " "
    942           + QByteArray::number(maxRes, 'f', 3) + "\n";
    943   }
    944 
    945   return irc;
     919    return false;
     920  }
    946921}
    947922
     
    968943}
    969944
    970 ////
     945//
    971946//////////////////////////////////////////////////////////////////////////////
    972947void bncModel::kalman(const Matrix& AA, const ColumnVector& ll,
     
    11401115  }
    11411116
     1117  // Remember Observation Index
     1118  // --------------------------
     1119  ++iObs;
     1120  satData->index = iObs;
     1121
    11421122  // Phase Observations
    11431123  // ------------------
    11441124  if (iPhase == 1) {
    1145     ++iObs;
    11461125    ll(iObs)      = satData->L3 - cmpValue(satData, true);
    11471126    PP(iObs,iObs) = 1.0 / (_sigL3 * _sigL3) / (ellWgtCoef * ellWgtCoef);
     
    11561135      AA(iObs, iPar) = _params[iPar-1]->partial(satData, true);
    11571136    }
    1158     satData->indexPhase = iObs;
    11591137  }
    11601138
     
    11621140  // -----------------
    11631141  else {
    1164     ++iObs;
    11651142    ll(iObs)      = satData->P3 - cmpValue(satData, false);
    11661143    PP(iObs,iObs) = 1.0 / (_sigP3 * _sigP3) / (ellWgtCoef * ellWgtCoef);
     
    11681145      AA(iObs, iPar) = _params[iPar-1]->partial(satData, false);
    11691146    }
    1170     satData->indexCode = iObs;
    11711147  }
    11721148}
     
    11771153                        ostringstream& str, t_satData* satData) {
    11781154  Tracer tracer("bncModel::printRes");
    1179   if (iPhase == 1) {
     1155
     1156  if (satData->index != 0) {
    11801157    str << _time.timestr(1)
    1181         << " RES " << satData->prn.toAscii().data() << "   L3 "
    1182         << setw(9) << setprecision(4) << vv(satData->indexPhase) << endl;
    1183   }
    1184   else {
    1185     str << _time.timestr(1)
    1186         << " RES " << satData->prn.toAscii().data() << "   P3 "
    1187         << setw(9) << setprecision(4) << vv(satData->indexCode) << endl;
     1158        << " RES " << satData->prn.toAscii().data()
     1159        << (iPhase ? "   L3 " : "   P3 ")
     1160        << setw(9) << setprecision(4) << vv(satData->index) << endl;
    11881161  }
    11891162}
     
    11911164//
    11921165///////////////////////////////////////////////////////////////////////////
    1193 void bncModel::findMaxRes(int iPhase, const ColumnVector& vv,
     1166void bncModel::findMaxRes(const ColumnVector& vv,
    11941167                          const QMap<QString, t_satData*>& satData,
    1195                           QString& prnCode,  double& maxResCode,
    1196                           QString& prnPhase, double& maxResPhase) {
     1168                          QString& prn,  double& maxRes) {
     1169
    11971170  Tracer tracer("bncModel::findMaxRes");
    1198   maxResCode  = 0.0;
    1199   maxResPhase = 0.0;
     1171
     1172  maxRes  = 0.0;
    12001173
    12011174  QMapIterator<QString, t_satData*> it(satData);
     
    12031176    it.next();
    12041177    t_satData* satData = it.value();
    1205     if (iPhase == 0) {
    1206       if (satData->indexCode) {
    1207         if (fabs(vv(satData->indexCode)) > maxResCode) {
    1208           maxResCode = fabs(vv(satData->indexCode));
    1209           prnCode    = satData->prn;
    1210         }
    1211       }
    1212     }
    1213     else {
    1214       if (satData->indexPhase) {
    1215         if (fabs(vv(satData->indexPhase)) > maxResPhase) {
    1216           maxResPhase = fabs(vv(satData->indexPhase));
    1217           prnPhase    = satData->prn;
    1218         }
    1219       }
     1178    if (satData->index != 0 && fabs(vv(satData->index)) > maxRes) {
     1179      maxRes = fabs(vv(satData->index));
     1180      prn    = satData->prn;
    12201181    }
    12211182  }
     
    12801241      }
    12811242
    1282       // Remove Neglected Satellites form epoData
     1243      // Remove Neglected Satellites from epoData
    12831244      // ----------------------------------------
    12841245      for (unsigned ip = 0; ip < allPrns.size(); ip++) {
  • trunk/BNC/bncmodel.h

    r3383 r3386  
    102102  void   printRes(int iPhase, const ColumnVector& vv,
    103103                  std::ostringstream& str, t_satData* satData);
    104   void   findMaxRes(int iPhase, const ColumnVector& vv,
     104  void   findMaxRes(const ColumnVector& vv,
    105105                    const QMap<QString, t_satData*>& satData,
    106                     QString& prnCode,  double& maxResCode,
    107                     QString& prnPhase, double& maxResPhase);
     106                    QString& prn,  double& maxRes);
    108107  double cmpValue(t_satData* satData, bool phase);
    109108  double delay_saast(double Ele);
  • trunk/BNC/bncpppclient.h

    r3383 r3386  
    3535 public:
    3636  t_satData() {
    37     indexCode  = 0;
    38     indexPhase = 0;
     37    index = 0;
    3938  }
    4039  ~t_satData() {}
     
    5756  bool         slipFlag;
    5857  double       lambda3;
    59   unsigned     indexCode;
    60   unsigned     indexPhase;
     58  unsigned     index;
    6159  char system() const {return prn.toAscii()[0];}
    6260};
Note: See TracChangeset for help on using the changeset viewer.