Changeset 10955 in ntrip for trunk/BNC/src/bncwindow.cpp


Ignore:
Timestamp:
Jul 3, 2026, 11:10:42 AM (15 hours ago)
Author:
stuerze
Message:

Possibility to select how satellite attitude is modelled when converting Antenna Phase Center (APC) corrections to
Center-of-Mass (CoM) positions required for SP3 output

File:
1 edited

Legend:

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

    r10945 r10955  
    472472  // Combine Corrections
    473473  // -------------------
    474   _cmbTable = new QTableWidget(0, 4);
    475   _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight Factor, Exclude Satellites").split(","));
     474  _cmbTable = new QTableWidget(0, 5);
     475  _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight Factor, Exclude Satellites, Attitude").split(","));
    476476  _cmbTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
    477477  _cmbTable->setSelectionBehavior(QAbstractItemView::SelectRows);
    478   _cmbTable->setMaximumWidth(40 * ww);
     478  _cmbTable->setMaximumWidth(50 * ww);
    479479  _cmbTable->horizontalHeader()->resizeSection(0, 10 * ww);
    480480  _cmbTable->horizontalHeader()->resizeSection(1, 6 * ww);
    481481  _cmbTable->horizontalHeader()->resizeSection(2, 9 * ww);
    482482  _cmbTable->horizontalHeader()->resizeSection(3, 9 * ww);
     483  _cmbTable->horizontalHeader()->resizeSection(4, 8 * ww);
    483484#if QT_VERSION < 0x050000
    484485  _cmbTable->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
     
    17011702  // WhatsThis, Combine Corrections
    17021703  // ------------------------------
    1703   _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock correction streams in real-time to produce, encode, upload and save a combination of correctors coming from different providers. </p><p>To add a line to the 'Combine Corrections' table hit the 'Add Row' button, double click on the 'Mountpoint' field to specify a Broadcast Ephemeris Correction mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Double click on the 'Weight Factor' field to enter a weight factor to be applied for this stream in the combination. A Factor greater than 1 will enlarge the sigma of the clock pseudo-observations and with it down-weight its contribution. Finally, double click on the 'Exclude Satellites' field and specify satellites, to exclude them for an individual AC. An entry 'G04,G31,R' means to excludes GPS satellites PRN 4 and 31 as well as all GLONASS satellites from one individual AC. Default is an empty option field, meaning that no satellite is excluded from this individual AC.</p><p>Note that the orbit information in the resulting combination stream is just copied from one of the incoming streams. The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage then BNC switches to the next remaining stream for getting hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides orbit and clock correction streams BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p><p>It is possible to specify only one Broadcast Ephemeris Correction stream in the 'Combine Corrections' table. Instead of combining corrections BNC will then add the corrections to the Broadcast Ephemeris with the possibility to save final orbit and clock results in SP3 and/or Clock RINEX format. <i>[key: cmbStreams]</i></p>"));
     1704  _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock correction streams in real-time to produce, encode, upload and save a combination of correctors coming from different providers. </p><p>To add a line to the 'Combine Corrections' table hit the 'Add Row' button, double click on the 'Mountpoint' field to specify a Broadcast Ephemeris Correction mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Double click on the 'Weight Factor' field to enter a weight factor to be applied for this stream in the combination. A Factor greater than 1 will enlarge the sigma of the clock pseudo-observations and with it down-weight its contribution. Finally, double click on the 'Exclude Satellites' field and specify satellites, to exclude them for an individual AC. An entry 'G04,G31,R' means to excludes GPS satellites PRN 4 and 31 as well as all GLONASS satellites from one individual AC. Default is an empty option field, meaning that no satellite is excluded from this individual AC.</p><p>Use the 'Attitude' field to select how satellite attitude is modelled when converting Antenna Phase Center (APC) corrections to Center-of-Mass (CoM) positions for SP3 output. 'Computed' (default) applies BNC's kinematic attitude model, including GPS noon/midnight turn manoeuvres, GLONASS yaw-fixed mode, and Galileo/BDS orbit-normal mode switching. 'Nominal' uses a simplified continuous Sun-pointing model without manoeuvre modelling. 'SSR' uses the yaw angle transmitted in the SSR phase bias message; select this option only if you trust the yaw values provided by the AC. If no yaw angle is available for a particular satellite in a given epoch, BNC falls back to 'Computed'. Note that the attitude model affects APC-referenced streams only; for CoM-referenced streams the AC has already applied attitude before encoding.</p><p>Note that the orbit information in the resulting combination stream is just copied from one of the incoming streams. The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage then BNC switches to the next remaining stream for getting hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides orbit and clock correction streams BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p><p>It is possible to specify only one Broadcast Ephemeris Correction stream in the 'Combine Corrections' table. Instead of combining corrections BNC will then add the corrections to the Broadcast Ephemeris with the possibility to save final orbit and clock results in SP3 and/or Clock RINEX format. <i>[key: cmbStreams]</i></p>"));
    17041705  addCmbRowButton->setWhatsThis(tr("<p>Hit 'Add Row' button to add another line to the 'Combine Corrections' table.</p>"));
    17051706  delCmbRowButton->setWhatsThis(tr("<p>Hit 'Delete' button to delete the highlighted line(s) from the 'Combine Corrections' table.</p>"));
     
    22182219    QString hlp;
    22192220    for (int iCol = 0; iCol < _cmbTable->columnCount(); iCol++) {
    2220       if (_cmbTable->item(iRow, iCol)) {
     2221      if (iCol == 4) {
     2222        QComboBox* attCombo = qobject_cast<QComboBox*>(_cmbTable->cellWidget(iRow, iCol));
     2223        hlp += (attCombo ? attCombo->currentText() : "Computed") + " ";
     2224      }
     2225      else if (_cmbTable->item(iRow, iCol)) {
    22212226        hlp += _cmbTable->item(iRow, iCol)->text() + " ";
    22222227      }
     
    30563061  _cmbTable->insertRow(iRow);
    30573062  for (int iCol = 0; iCol < _cmbTable->columnCount(); iCol++) {
    3058     _cmbTable->setItem(iRow, iCol, new QTableWidgetItem(""));
     3063    if (iCol == 4) {
     3064      QComboBox* attCombo = new QComboBox();
     3065      attCombo->setEditable(false);
     3066      attCombo->addItems(QString("Computed,SSR,Nominal").split(","));
     3067      attCombo->setFrame(false);
     3068      _cmbTable->setCellWidget(iRow, iCol, attCombo);
     3069    }
     3070    else {
     3071      _cmbTable->setItem(iRow, iCol, new QTableWidgetItem(""));
     3072    }
    30593073  }
    30603074}
     
    31103124      _cmbTable->insertRow(iRow);
    31113125    }
    3112     for (int iCol = 0; iCol < hlp.size(); iCol++) {
    3113       _cmbTable->setItem(iRow, iCol, new QTableWidgetItem(hlp[iCol]));
     3126    for (int iCol = 0; iCol < hlp.size() && iCol < _cmbTable->columnCount(); iCol++) {
     3127      if (iCol == 4) {
     3128        QComboBox* attCombo = new QComboBox();
     3129        attCombo->setEditable(false);
     3130        attCombo->addItems(QString("Computed,SSR,Nominal").split(","));
     3131        attCombo->setFrame(false);
     3132        int idx = attCombo->findText(hlp[iCol]);
     3133        if (idx != -1) attCombo->setCurrentIndex(idx);
     3134        _cmbTable->setCellWidget(iRow, iCol, attCombo);
     3135      }
     3136      else {
     3137        _cmbTable->setItem(iRow, iCol, new QTableWidgetItem(hlp[iCol]));
     3138      }
     3139    }
     3140    // Ensure the Attitude combo exists even for old configs without column 4
     3141    if (hlp.size() <= 4 && _cmbTable->columnCount() > 4 && iRow >= 0
     3142        && !_cmbTable->cellWidget(iRow, 4)) {
     3143      QComboBox* attCombo = new QComboBox();
     3144      attCombo->setEditable(false);
     3145      attCombo->addItems(QString("Computed,SSR,Nominal").split(","));
     3146      attCombo->setFrame(false);
     3147      _cmbTable->setCellWidget(iRow, 4, attCombo);
    31143148    }
    31153149  }
Note: See TracChangeset for help on using the changeset viewer.