Changeset 11037 in ntrip for trunk/BNC/src/satObs.cpp


Ignore:
Timestamp:
Sep 21, 2026, 3:24:09 PM (15 hours ago)
Author:
stuerze
Message:

updates regarding RTCM-SSR

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/satObs.cpp

    r11008 r11037  
    493493//
    494494////////////////////////////////////////////////////////////////////////////
     495void 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////////////////////////////////////////////////////////////////////////////
     537void 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////////////////////////////////////////////////////////////////////////////
    495590void t_metaData::write(ostream* out, const t_metaData& md) {
    496591  if (!out || md._entries.size() == 0) {
     
    582677    else if (typeString == "META_DATA") {
    583678      return metaData;
     679    }
     680    else if (typeString == "SAT_ANTENNA") {
     681      return satAntenna;
    584682    }
    585683  }
Note: See TracChangeset for help on using the changeset viewer.