- Timestamp:
- Dec 14, 2010, 3:25:37 PM (14 years ago)
- Location:
- trunk/BNC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bncmodel.cpp
r2791 r2792 962 962 QMap<QString, t_satData*>& satDataGal) { 963 963 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; 994 1010 } 995 1011 } 996 1012 } 997 1013 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"; 1038 1017 _QQ = QQsav; 1039 1040 _log += "Outlier Phase " + prn.toAscii() + " "1041 + QByteArray::number(vvMaxPhaseGlo, 'f', 3) + "\n";1042 1043 1018 return 1; 1044 1019 } 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 } 1097 1023 } 1098 1024 … … 1317 1243 } 1318 1244 } 1245 1246 // 1247 /////////////////////////////////////////////////////////////////////////// 1248 void 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 94 94 void printRes(const ColumnVector& vv, 95 95 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); 96 100 double cmpValue(t_satData* satData, bool phase); 97 101 double delay_saast(double Ele);
Note:
See TracChangeset
for help on using the changeset viewer.