Changeset 3386 in ntrip
- Timestamp:
- Aug 30, 2011, 5:42:31 PM (13 years ago)
- Location:
- trunk/BNC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bncmodel.cpp
r3385 r3386 271 271 delete _params[iPar-1]; 272 272 } 273 delete _epoData_sav; 273 274 } 274 275 … … 906 907 Tracer tracer("bncModel::outlierDetection"); 907 908 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 } 931 918 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 } 946 921 } 947 922 … … 968 943 } 969 944 970 // //945 // 971 946 ////////////////////////////////////////////////////////////////////////////// 972 947 void bncModel::kalman(const Matrix& AA, const ColumnVector& ll, … … 1140 1115 } 1141 1116 1117 // Remember Observation Index 1118 // -------------------------- 1119 ++iObs; 1120 satData->index = iObs; 1121 1142 1122 // Phase Observations 1143 1123 // ------------------ 1144 1124 if (iPhase == 1) { 1145 ++iObs;1146 1125 ll(iObs) = satData->L3 - cmpValue(satData, true); 1147 1126 PP(iObs,iObs) = 1.0 / (_sigL3 * _sigL3) / (ellWgtCoef * ellWgtCoef); … … 1156 1135 AA(iObs, iPar) = _params[iPar-1]->partial(satData, true); 1157 1136 } 1158 satData->indexPhase = iObs;1159 1137 } 1160 1138 … … 1162 1140 // ----------------- 1163 1141 else { 1164 ++iObs;1165 1142 ll(iObs) = satData->P3 - cmpValue(satData, false); 1166 1143 PP(iObs,iObs) = 1.0 / (_sigP3 * _sigP3) / (ellWgtCoef * ellWgtCoef); … … 1168 1145 AA(iObs, iPar) = _params[iPar-1]->partial(satData, false); 1169 1146 } 1170 satData->indexCode = iObs;1171 1147 } 1172 1148 } … … 1177 1153 ostringstream& str, t_satData* satData) { 1178 1154 Tracer tracer("bncModel::printRes"); 1179 if (iPhase == 1) { 1155 1156 if (satData->index != 0) { 1180 1157 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; 1188 1161 } 1189 1162 } … … 1191 1164 // 1192 1165 /////////////////////////////////////////////////////////////////////////// 1193 void bncModel::findMaxRes( int iPhase,const ColumnVector& vv,1166 void bncModel::findMaxRes(const ColumnVector& vv, 1194 1167 const QMap<QString, t_satData*>& satData, 1195 QString& prn Code, double& maxResCode,1196 QString& prnPhase, double& maxResPhase) { 1168 QString& prn, double& maxRes) { 1169 1197 1170 Tracer tracer("bncModel::findMaxRes"); 1198 maxResCode = 0.0; 1199 maxRes Phase= 0.0;1171 1172 maxRes = 0.0; 1200 1173 1201 1174 QMapIterator<QString, t_satData*> it(satData); … … 1203 1176 it.next(); 1204 1177 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; 1220 1181 } 1221 1182 } … … 1280 1241 } 1281 1242 1282 // Remove Neglected Satellites f orm epoData1243 // Remove Neglected Satellites from epoData 1283 1244 // ---------------------------------------- 1284 1245 for (unsigned ip = 0; ip < allPrns.size(); ip++) { -
trunk/BNC/bncmodel.h
r3383 r3386 102 102 void printRes(int iPhase, const ColumnVector& vv, 103 103 std::ostringstream& str, t_satData* satData); 104 void findMaxRes( int iPhase,const ColumnVector& vv,104 void findMaxRes(const ColumnVector& vv, 105 105 const QMap<QString, t_satData*>& satData, 106 QString& prnCode, double& maxResCode, 107 QString& prnPhase, double& maxResPhase); 106 QString& prn, double& maxRes); 108 107 double cmpValue(t_satData* satData, bool phase); 109 108 double delay_saast(double Ele); -
trunk/BNC/bncpppclient.h
r3383 r3386 35 35 public: 36 36 t_satData() { 37 indexCode = 0; 38 indexPhase = 0; 37 index = 0; 39 38 } 40 39 ~t_satData() {} … … 57 56 bool slipFlag; 58 57 double lambda3; 59 unsigned indexCode; 60 unsigned indexPhase; 58 unsigned index; 61 59 char system() const {return prn.toAscii()[0];} 62 60 };
Note:
See TracChangeset
for help on using the changeset viewer.