Changeset 11047 in ntrip for trunk/BNC/src/satObs.cpp
- Timestamp:
- Sep 28, 2026, 11:17:34 AM (11 hours ago)
- File:
-
- 1 edited
-
trunk/BNC/src/satObs.cpp (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/satObs.cpp
r11041 r11047 2 2 #include <iomanip> 3 3 #include <sstream> 4 #include <cstdlib> 4 5 #include <newmatio.h> 5 6 … … 132 133 133 134 e_ssrFormat ssrFormat = ssrUnknown; 135 136 // TEMPORARY BACKWARD COMPATIBILITY - remove later on: 137 // .ssr files written before the SSR format line (a single integer) was 138 // added after the "> ORBIT" epoch line don't have it - their first line 139 // is already the first satellite. Such a line is kept (firstLine) and 140 // processed as the first correction below, with ssrFormat unknown. 141 // To revert: read the format line unconditionally again, i.e. drop the 142 // "only one integer on the line" test and the firstLine handling in the 143 // loop below. 144 string firstLine; 145 getline(inStream, firstLine); 134 146 { 135 string line; 136 getline(inStream, line); 137 istringstream in(line.c_str()); 138 int ssrFormatInt = 0; 139 if (in >> ssrFormatInt) { 147 istringstream in(firstLine.c_str()); 148 int ssrFormatInt = 0; 149 string rest; 150 if ((in >> ssrFormatInt) && !(in >> rest)) { // format line 140 151 ssrFormat = static_cast<e_ssrFormat>(ssrFormatInt); 152 firstLine.clear(); 141 153 } 142 154 } … … 150 162 151 163 string line; 152 getline(inStream, line); 164 if (ii == 0 && !firstLine.empty()) { // TEMPORARY BACKWARD COMPATIBILITY, see above 165 line = firstLine; 166 } 167 else { 168 getline(inStream, line); 169 } 153 170 istringstream in(line.c_str()); 154 171 … … 245 262 *out << "> CODE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " " 246 263 << satCodeBias._updateInt << " " 247 << biasList.size() << ' ' << satCodeBias._staID << endl; 264 << biasList.size() << ' ' << satCodeBias._staID << ' ' 265 << satCodeBias._ssrIOD << ' ' << satCodeBias._ssrProviderID << endl; 248 266 } 249 267 *out << satCodeBias._prn.toString() << " " << setw(2) << satCodeBias._bias.size(); … … 268 286 return; 269 287 } 288 int ssrIOD, ssrProviderID; 289 t_corrSSR::readSsrIOD(epoLine, ssrIOD, ssrProviderID); 270 290 for (int ii = 0; ii < numSat; ii++) { 271 291 t_satCodeBias satCodeBias; … … 273 293 satCodeBias._updateInt = updateInt; 274 294 satCodeBias._staID = staID; 295 satCodeBias._ssrIOD = ssrIOD; 296 satCodeBias._ssrProviderID = ssrProviderID; 275 297 276 298 string line; … … 313 335 *out << "> PHASE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " " 314 336 << satPhaseBias._updateInt << " " 315 << biasList.size() << ' ' << satPhaseBias._staID << endl; 337 << biasList.size() << ' ' << satPhaseBias._staID << ' ' 338 << satPhaseBias._ssrIOD << ' ' << satPhaseBias._ssrProviderID << endl; 316 339 317 340 if (satPhaseBias._ssrFormat == e_ssrFormat::ssrRtcmNew) { … … 373 396 return; 374 397 } 398 int ssrIOD, ssrProviderID; 399 t_corrSSR::readSsrIOD(epoLine, ssrIOD, ssrProviderID); 375 400 for (int ii = 0; ii <= numSat; ii++) { 376 401 t_satPhaseBias satPhaseBias; … … 378 403 satPhaseBias._updateInt = updateInt; 379 404 satPhaseBias._staID = staID; 405 satPhaseBias._ssrIOD = ssrIOD; 406 satPhaseBias._ssrProviderID = ssrProviderID; 380 407 381 408 string line; … … 392 419 switch (ssrFormat) { 393 420 case e_ssrFormat::ssrRtcmNew: 394 satPhaseBias._ dispBiasConsistInd = metadata1;395 satPhaseBias._ MelbWuebConsistInd = metadata2;421 satPhaseBias._satYawInfoInd = metadata1; 422 satPhaseBias._extPBPhaseInd = metadata2; 396 423 break; 397 424 case e_ssrFormat::ssrRtcmOld: 398 425 case e_ssrFormat::ssrUnknown: 399 satPhaseBias._ satYawInfoInd = metadata1;400 satPhaseBias._ extPBPhaseInd = metadata2;426 satPhaseBias._dispBiasConsistInd = metadata1; 427 satPhaseBias._MelbWuebConsistInd = metadata2; 401 428 break; 402 429 } … … 575 602 in >> frqAntenna._frqType >> frqAntenna._nadirCorrectionIndicator >> frqAntenna._nadirCorrection; 576 603 for (unsigned kk = 0; kk < numAngles; kk++) { 577 double val;578 in >> val; 579 frqAntenna._nadirAngleCorrection.push_back( val);604 string valStr; // may be "nan" (invalid value), which operator>> can't parse 605 in >> valStr; 606 frqAntenna._nadirAngleCorrection.push_back(strtod(valStr.c_str(), 0)); 580 607 } 581 608 satAntenna._freq.push_back(frqAntenna); … … 684 711 685 712 return unknown; 713 } 714 715 // Optional SSR IOD and Provider ID trailing the staID in CODE_BIAS and 716 // PHASE_BIAS epoch lines (older files don't have them: -1 = unknown) 717 //////////////////////////////////////////////////////////////////////////// 718 void t_corrSSR::readSsrIOD(const string& line, int& ssrIOD, int& ssrProviderID) { 719 istringstream inLine(line.c_str()); 720 string hlp; 721 for (int ii = 0; ii < 11; ii++) { // '>', type, 6 x date/time, updateInt, numEntries, staID 722 inLine >> hlp; 723 } 724 if (!(inLine >> ssrIOD >> ssrProviderID)) { 725 ssrIOD = -1; 726 ssrProviderID = -1; 727 } 686 728 } 687 729
Note:
See TracChangeset
for help on using the changeset viewer.
