Changeset 11037 in ntrip
- Timestamp:
- Sep 21, 2026, 3:24:09 PM (11 hours ago)
- Location:
- trunk/BNC/src
- Files:
-
- 4 edited
-
rinex/corrfile.cpp (modified) (1 diff)
-
rinex/corrfile.h (modified) (1 diff)
-
satObs.cpp (modified) (2 diffs)
-
satObs.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/rinex/corrfile.cpp
r11023 r11037 124 124 emit newMetaData(metaData); 125 125 } 126 else if (corrType == t_corrSSR::satAntenna) { 127 QList<t_satAntenna> satAntennaList; 128 t_satAntenna::readEpoch(_lastLine, _stream, satAntennaList); 129 emit newSatAntennas(satAntennaList); 130 } 126 131 127 132 _lastLine.clear(); -
trunk/BNC/src/rinex/corrfile.h
r11023 r11037 49 49 void newTec(t_vTec); 50 50 void newMetaData(t_metaData); 51 void newSatAntennas(QList<t_satAntenna>); 51 52 52 53 private: -
trunk/BNC/src/satObs.cpp
r11008 r11037 493 493 // 494 494 //////////////////////////////////////////////////////////////////////////// 495 void t_satAntenna::writeEpoch(ostream* out, const QList<t_satAntenna>& antList) { 496 if (!out || antList.size() == 0) { 497 return; 498 } 499 out->setf(ios::fixed); 500 bncTime epoTime; 501 QListIterator<t_satAntenna> it(antList); 502 while (it.hasNext()) { 503 const t_satAntenna& satAntenna = it.next(); 504 if (!epoTime.valid()) { 505 epoTime = satAntenna._time; 506 *out << "> SAT_ANTENNA " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " " 507 << 0 << " " << antList.size() << ' ' << satAntenna._staID << endl; 508 } 509 // header fields are genuinely per system (e.g. GPS/GLONASS/Galileo carry 510 // different maximumOffNadirAngle), so they are written per satellite 511 // rather than once per epoch like t_satPhaseBias's metadata line 512 *out << satAntenna._prn.toString() << ' ' 513 << setw(4) << satAntenna._ssrProviderID << ' ' 514 << setw(2) << satAntenna._satelliteAntennaIOD << ' ' 515 << setw(1) << satAntenna._phaseCenterInfoInd << ' ' 516 << setw(1) << satAntenna._groupDelayInfoInd << ' ' 517 << setw(1) << satAntenna._nadirAngleDependentCorrInd << ' ' 518 << setw(2) << satAntenna._maximumOffNadirAngle << ' ' 519 << setw(2) << satAntenna._nadirAngleRangeExtension << " " 520 << setw(2) << satAntenna._freq.size(); 521 for (unsigned ii = 0; ii < satAntenna._freq.size(); ii++) { 522 const t_frqAntenna& frqAntenna = satAntenna._freq[ii]; 523 *out << " " << frqAntenna._freqIndex << ' ' 524 << frqAntenna._nadirCorrectionIndicator << ' ' 525 << setw(10) << setprecision(4) << frqAntenna._nadirCorrection; 526 for (unsigned jj = 0; jj < frqAntenna._nadirAngleCorrection.size(); jj++) { 527 *out << ' ' << setw(9) << setprecision(4) << frqAntenna._nadirAngleCorrection[jj]; 528 } 529 } 530 *out << endl; 531 } 532 out->flush(); 533 } 534 535 // 536 //////////////////////////////////////////////////////////////////////////// 537 void t_satAntenna::readEpoch(const string& epoLine, istream& inStream, QList<t_satAntenna>& antList) { 538 bncTime epoTime; 539 unsigned int updateInt; 540 int numSat; 541 string staID; 542 if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numSat, staID) != t_corrSSR::satAntenna) { 543 return; 544 } 545 for (int ii = 0; ii < numSat; ii++) { 546 t_satAntenna satAntenna; 547 satAntenna._time = epoTime; 548 satAntenna._staID = staID; 549 550 string line; 551 getline(inStream, line); 552 istringstream in(line.c_str()); 553 554 int numFreq; 555 in >> satAntenna._prn 556 >> satAntenna._ssrProviderID 557 >> satAntenna._satelliteAntennaIOD 558 >> satAntenna._phaseCenterInfoInd 559 >> satAntenna._groupDelayInfoInd 560 >> satAntenna._nadirAngleDependentCorrInd 561 >> satAntenna._maximumOffNadirAngle 562 >> satAntenna._nadirAngleRangeExtension 563 >> numFreq; 564 565 char sys = satAntenna._prn.system(); 566 int num = satAntenna._prn.number(); 567 int flag = t_corrSSR::getSsrNavTypeFlag(sys, num); 568 satAntenna._prn.setFlag(flag); 569 570 unsigned int numAngles = satAntenna._nadirAngleDependentCorrInd ? 571 satAntenna._maximumOffNadirAngle + 1 : 0; 572 573 for (int jj = 0; jj < numFreq; jj++) { 574 t_frqAntenna frqAntenna; 575 in >> frqAntenna._freqIndex >> frqAntenna._nadirCorrectionIndicator >> frqAntenna._nadirCorrection; 576 for (unsigned kk = 0; kk < numAngles; kk++) { 577 double val; 578 in >> val; 579 frqAntenna._nadirAngleCorrection.push_back(val); 580 } 581 satAntenna._freq.push_back(frqAntenna); 582 } 583 584 antList.push_back(satAntenna); 585 } 586 } 587 588 // 589 //////////////////////////////////////////////////////////////////////////// 495 590 void t_metaData::write(ostream* out, const t_metaData& md) { 496 591 if (!out || md._entries.size() == 0) { … … 582 677 else if (typeString == "META_DATA") { 583 678 return metaData; 679 } 680 else if (typeString == "SAT_ANTENNA") { 681 return satAntenna; 584 682 } 585 683 } -
trunk/BNC/src/satObs.h
r11008 r11037 280 280 }; 281 281 282 class t_frqAntenna { 283 public: 284 t_frqAntenna() { 285 _freqIndex = 0; 286 _nadirCorrectionIndicator = false; 287 _nadirCorrection = 0.0; 288 } 289 unsigned int _freqIndex; // 0 .. ANT_MAXFREQUENCIES-1, DF+018 bit position 290 bool _nadirCorrectionIndicator; 291 double _nadirCorrection; // m, only valid if _nadirCorrectionIndicator 292 std::vector<double> _nadirAngleCorrection; // m, one entry per nadir angle bin 293 }; 294 295 class t_satAntenna { 296 public: 297 t_satAntenna() { 298 _ssrProviderID = 0; 299 _satelliteAntennaIOD = 0; 300 _phaseCenterInfoInd = false; 301 _groupDelayInfoInd = false; 302 _nadirAngleDependentCorrInd = false; 303 _maximumOffNadirAngle = 0; 304 _nadirAngleRangeExtension = 0; 305 } 306 static void writeEpoch(std::ostream* out, const QList<t_satAntenna>& antList); 307 static void readEpoch(const std::string& epoLine, std::istream& in, QList<t_satAntenna>& antList); 308 std::string _staID; 309 t_prn _prn; 310 bncTime _time; // time this message was decoded (no epoch field on the wire) 311 unsigned int _ssrProviderID; // not satellite specific 312 unsigned int _satelliteAntennaIOD; // not satellite specific; unique per provider within a 64-day window 313 bool _phaseCenterInfoInd; // not satellite specific 314 bool _groupDelayInfoInd; // not satellite specific 315 bool _nadirAngleDependentCorrInd; // not satellite specific 316 unsigned int _maximumOffNadirAngle; // not satellite specific 317 unsigned int _nadirAngleRangeExtension; // not satellite specific 318 std::vector<t_frqAntenna> _freq; 319 }; 320 282 321 class t_corrSSR { 283 322 public: 284 enum e_type {clkCorr, orbCorr, codeBias, phaseBias, vTec, URA, metaData, unknown}; 323 enum e_type {clkCorr, orbCorr, codeBias, phaseBias, vTec, URA, metaData, satAntenna, unknown}; 285 324 static e_type readEpoLine(const std::string& line, bncTime& epoTime, 286 325 unsigned int& updateInt, int& numEntries, std::string& staID);
Note:
See TracChangeset
for help on using the changeset viewer.
