Changeset 2792 in ntrip


Ignore:
Timestamp:
Dec 14, 2010, 3:25:37 PM (13 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncmodel.cpp

    r2791 r2792  
    962962                               QMap<QString, t_satData*>& satDataGal) {
    963963
    964   double vvMaxCodeGPS  = 0.0;
    965   double vvMaxPhaseGPS = 0.0;
    966   double vvMaxPhaseGlo = 0.0;
    967   double vvMaxCodeGal  = 0.0;
    968   double vvMaxPhaseGal = 0.0;
    969   QMutableMapIterator<QString, t_satData*> itMaxCodeGPS(satDataGPS);
    970   QMutableMapIterator<QString, t_satData*> itMaxPhaseGPS(satDataGPS);
    971   QMutableMapIterator<QString, t_satData*> itMaxPhaseGlo(satDataGlo);
    972   QMutableMapIterator<QString, t_satData*> itMaxCodeGal(satDataGPS);
    973   QMutableMapIterator<QString, t_satData*> itMaxPhaseGal(satDataGPS);
    974 
    975   int ii = 0;
    976 
    977   // GPS code and (optionally) phase residuals
    978   // -----------------------------------------
    979   QMutableMapIterator<QString, t_satData*> itGPS(satDataGPS);
    980   while (itGPS.hasNext()) {
    981     itGPS.next();
    982     ++ii;
    983 
    984     if (vvMaxCodeGPS == 0.0 || fabs(vv(ii)) > vvMaxCodeGPS) {
    985       vvMaxCodeGPS    = fabs(vv(ii));
    986       itMaxCodeGPS = itGPS;
    987     }
    988 
    989     if (_usePhase) {
    990       ++ii;
    991       if (vvMaxPhaseGPS == 0.0 || fabs(vv(ii)) > vvMaxPhaseGPS) {
    992         vvMaxPhaseGPS    = fabs(vv(ii));
    993         itMaxPhaseGPS = itGPS;
     964
     965  QString prnCode;
     966  QString prnPhase;
     967  double  maxResCode  = 0.0;
     968  double  maxResPhase = 0.0;
     969
     970  QString prnRemoved;
     971  double  maxRes;
     972
     973  // First check Glonass
     974  // -------------------
     975  findMaxRes(vv,satDataGlo, prnCode, maxResCode, prnPhase, maxResPhase);
     976  if (maxResPhase > MAXRES_PHASE_GLO) {
     977    satDataGlo.remove(prnPhase);
     978    prnRemoved = prnPhase;
     979    maxRes     = maxResPhase;
     980  }
     981
     982  // then check Galileo
     983  // ------------------
     984  else {
     985    findMaxRes(vv,satDataGal, prnCode, maxResCode, prnPhase, maxResPhase);
     986    if      (maxResPhase > MAXRES_PHASE_GAL) {
     987      satDataGal.remove(prnPhase);
     988      prnRemoved = prnPhase;
     989      maxRes     = maxResPhase;
     990    }
     991    else if (maxResCode > MAXRES_CODE_GAL) {
     992      satDataGal.remove(prnCode);
     993      prnRemoved = prnCode;
     994      maxRes     = maxResCode;
     995    }
     996
     997    // and then check GPS
     998    // ------------------
     999    else {
     1000      findMaxRes(vv,satDataGPS, prnCode, maxResCode, prnPhase, maxResPhase);
     1001      if      (maxResPhase > MAXRES_PHASE_GPS) {
     1002        satDataGPS.remove(prnPhase);
     1003        prnRemoved = prnPhase;
     1004        maxRes     = maxResPhase;
     1005      }
     1006      else if (maxResCode > MAXRES_CODE_GPS) {
     1007        satDataGPS.remove(prnCode);
     1008        prnRemoved = prnCode;
     1009        maxRes     = maxResCode;
    9941010      }
    9951011    }
    9961012  }
    9971013 
    998   // Glonass phase residuals
    999   // -----------------------
    1000   if (_usePhase) {
    1001     QMutableMapIterator<QString, t_satData*> itGlo(satDataGlo);
    1002     while (itGlo.hasNext()) {
    1003       itGlo.next();
    1004       ++ii;
    1005       if (vvMaxPhaseGlo == 0.0 || fabs(vv(ii)) > vvMaxPhaseGlo) {
    1006         vvMaxPhaseGlo = fabs(vv(ii));
    1007         itMaxPhaseGlo = itGlo;
    1008       }
    1009     }
    1010   }
    1011 
    1012   // Galileo code and (optionally) phase residuals
    1013   // ---------------------------------------------
    1014   QMutableMapIterator<QString, t_satData*> itGal(satDataGal);
    1015   while (itGal.hasNext()) {
    1016     itGal.next();
    1017     ++ii;
    1018 
    1019     if (vvMaxCodeGal == 0.0 || fabs(vv(ii)) > vvMaxCodeGal) {
    1020       vvMaxCodeGal    = fabs(vv(ii));
    1021       itMaxCodeGal = itGal;
    1022     }
    1023 
    1024     if (_usePhase) {
    1025       ++ii;
    1026       if (vvMaxPhaseGal == 0.0 || fabs(vv(ii)) > vvMaxPhaseGal) {
    1027         vvMaxPhaseGal    = fabs(vv(ii));
    1028         itMaxPhaseGal = itGal;
    1029       }
    1030     }
    1031   }
    1032  
    1033   if (vvMaxPhaseGlo > MAXRES_PHASE_GLO) {
    1034     QString    prn     = itMaxPhaseGlo.key();
    1035     t_satData* satData = itMaxPhaseGlo.value();
    1036     delete satData;
    1037     itMaxPhaseGlo.remove();
     1014  if (!prnRemoved.isEmpty()) {
     1015    _log += "Outlier " + prnRemoved.toAscii() + " "
     1016          + QByteArray::number(maxRes, 'f', 3) + "\n";
    10381017    _QQ = QQsav;
    1039 
    1040     _log += "Outlier Phase " + prn.toAscii() + " "
    1041           + QByteArray::number(vvMaxPhaseGlo, 'f', 3) + "\n";
    1042 
    10431018    return 1;
    10441019  }
    1045 
    1046   else if (vvMaxCodeGPS > MAXRES_CODE_GPS) {
    1047     QString    prn     = itMaxCodeGPS.key();
    1048     t_satData* satData = itMaxCodeGPS.value();
    1049     delete satData;
    1050     itMaxCodeGPS.remove();
    1051     _QQ = QQsav;
    1052 
    1053     _log += "Outlier Code " + prn.toAscii() + " "
    1054             + QByteArray::number(vvMaxCodeGPS, 'f', 3) + "\n";
    1055 
    1056     return 1;
    1057   }
    1058   else if (vvMaxPhaseGPS > MAXRES_PHASE_GPS) {
    1059     QString    prn     = itMaxPhaseGPS.key();
    1060     t_satData* satData = itMaxPhaseGPS.value();
    1061     delete satData;
    1062     itMaxPhaseGPS.remove();
    1063     _QQ = QQsav;
    1064 
    1065     _log += "Outlier Phase " + prn.toAscii() + " "
    1066           + QByteArray::number(vvMaxPhaseGPS, 'f', 3)  + "\n";
    1067 
    1068     return 1;
    1069   }
    1070 
    1071   else if (vvMaxCodeGal > MAXRES_CODE_GAL) {
    1072     QString    prn     = itMaxCodeGal.key();
    1073     t_satData* satData = itMaxCodeGal.value();
    1074     delete satData;
    1075     itMaxCodeGal.remove();
    1076     _QQ = QQsav;
    1077 
    1078     _log += "Outlier Code " + prn.toAscii() + " "
    1079             + QByteArray::number(vvMaxCodeGal, 'f', 3) + "\n";
    1080 
    1081     return 1;
    1082   }
    1083   else if (vvMaxPhaseGal > MAXRES_PHASE_GAL) {
    1084     QString    prn     = itMaxPhaseGal.key();
    1085     t_satData* satData = itMaxPhaseGal.value();
    1086     delete satData;
    1087     itMaxPhaseGal.remove();
    1088     _QQ = QQsav;
    1089 
    1090     _log += "Outlier Phase " + prn.toAscii() + " "
    1091           + QByteArray::number(vvMaxPhaseGal, 'f', 3)  + "\n";
    1092 
    1093     return 1;
    1094   }
    1095 
    1096   return 0;
     1020  else {
     1021    return 0;
     1022  }
    10971023}
    10981024
     
    13171243  }
    13181244}
     1245
     1246//
     1247///////////////////////////////////////////////////////////////////////////
     1248void bncModel::findMaxRes(const ColumnVector& vv,
     1249                          const QMap<QString, t_satData*>& satData,
     1250                          QString& prnCode,  double& maxResCode,
     1251                          QString& prnPhase, double& maxResPhase) {
     1252  maxResCode  = 0.0;
     1253  maxResPhase = 0.0;
     1254
     1255  QMapIterator<QString, t_satData*> it(satData);
     1256  while (it.hasNext()) {
     1257    it.next();
     1258    t_satData* satData = it.value();
     1259    if (satData->indexCode) {
     1260      if (fabs(vv(satData->indexCode)) > maxResCode) {
     1261        maxResCode = fabs(vv(satData->indexCode));
     1262        prnCode    = satData->prn;
     1263      }
     1264    }
     1265    if (satData->indexPhase) {
     1266      if (fabs(vv(satData->indexPhase)) > maxResPhase) {
     1267        maxResPhase = fabs(vv(satData->indexPhase));
     1268        prnPhase    = satData->prn;
     1269      }
     1270    }
     1271  }
     1272}
     1273 
  • trunk/BNC/bncmodel.h

    r2791 r2792  
    9494  void   printRes(const ColumnVector& vv,
    9595                  std::ostringstream& str, t_satData* satData);
     96  void   findMaxRes(const ColumnVector& vv,
     97                    const QMap<QString, t_satData*>& satData,
     98                    QString& prnCode,  double& maxResCode,
     99                    QString& prnPhase, double& maxResPhase);
    96100  double cmpValue(t_satData* satData, bool phase);
    97101  double delay_saast(double Ele);
Note: See TracChangeset for help on using the changeset viewer.