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


Ignore:
Timestamp:
Feb 24, 2022, 5:08:42 PM (2 years ago)
Author:
stuerze
Message:

consideration of incoming Code Biases during clock combination

File:
1 edited

Legend:

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

    r9624 r9635  
    496496  _cmbMethodComboBox = new QComboBox();
    497497  _cmbMethodComboBox->setEditable(false);
    498   _cmbMethodComboBox->addItems(QString("Filter,Single-Epoch").split(","));
     498  _cmbMethodComboBox->addItems(QString("Kalman Filter,Single-Epoch").split(","));
    499499  int im = _cmbMethodComboBox->findText(settings.value("cmbMethod").toString());
    500500  if (im != -1) {
     
    536536  connect(_cmbIrnssCheckBox, SIGNAL(stateChanged(int)), this, SLOT(slotBncTextChanged()));
    537537
     538  _cmbBsxFile      = new qtFileChooser(0, qtFileChooser::File);
     539  _cmbBsxFile->setFileName(settings.value("cmbBsxFile").toString());
     540
    538541  // Upload Results
    539542  // -------------
    540   _uploadTable = new QTableWidget(0,15);
    541   _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, Format, CoM, SP3 File, RNX File, PID, SID, IOD, bytes").split(","));
     543  _uploadTable = new QTableWidget(0,16);
     544  _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, Format, CoM, SP3 File, RNX File, BSX File, PID, SID, IOD, bytes").split(","));
    542545  _uploadTable->setSelectionMode(QAbstractItemView::ExtendedSelection);
    543546  _uploadTable->setSelectionBehavior(QAbstractItemView::SelectRows);
     
    553556  _uploadTable->horizontalHeader()->resizeSection( 9,15*ww);
    554557  _uploadTable->horizontalHeader()->resizeSection(10,15*ww);
    555   _uploadTable->horizontalHeader()->resizeSection(11, 4*ww);
     558  _uploadTable->horizontalHeader()->resizeSection(11,15*ww);
    556559  _uploadTable->horizontalHeader()->resizeSection(12, 4*ww);
    557560  _uploadTable->horizontalHeader()->resizeSection(13, 4*ww);
    558   _uploadTable->horizontalHeader()->resizeSection(14,12*ww);
     561  _uploadTable->horizontalHeader()->resizeSection(14, 4*ww);
     562  _uploadTable->horizontalHeader()->resizeSection(15,12*ww);
    559563#if QT_VERSION < 0x050000
    560564  _uploadTable->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
     
    606610  _uploadSamplClkRnxSpinBox->setSuffix(" sec");
    607611
     612  _uploadSamplBiaSnxSpinBox = new QSpinBox;
     613  _uploadSamplBiaSnxSpinBox->setMinimum(0);
     614  _uploadSamplBiaSnxSpinBox->setMaximum(60);
     615  _uploadSamplBiaSnxSpinBox->setSingleStep(5);
     616  _uploadSamplBiaSnxSpinBox->setMaximumWidth(9*ww);
     617  _uploadSamplBiaSnxSpinBox->setValue(settings.value("uploadSamplBiaSnx").toInt());
     618  _uploadSamplBiaSnxSpinBox->setSuffix(" sec");
     619
    608620  int iRowT = _uploadTable->rowCount();
    609621  if (iRowT > 0) {
     
    612624    enableWidget(true, _uploadSamplSp3SpinBox);
    613625    enableWidget(true, _uploadSamplClkRnxSpinBox);
     626    enableWidget(true, _uploadSamplBiaSnxSpinBox);
    614627    enableWidget(true, _uploadAntexFile);
    615628  }
     
    619632    enableWidget(false, _uploadSamplSp3SpinBox);
    620633    enableWidget(false, _uploadSamplClkRnxSpinBox);
     634    enableWidget(true, _uploadSamplBiaSnxSpinBox);
    621635    enableWidget(false, _uploadAntexFile);
    622636  }
     
    12401254
    12411255  populateCmbTable();
    1242   cmbLayout->addWidget(_cmbTable,                                            0, 0, 8, 3);
     1256  cmbLayout->addWidget(_cmbTable,                                                0, 0, 8, 6);
    12431257  cmbLayout->addWidget(new QLabel(" Combine Broadcast Correction streams.<br>"), 1, 6, 1, 10);
    1244   cmbLayout->addWidget(addCmbRowButton,                                      2,  6);
    1245   cmbLayout->addWidget(delCmbRowButton,                                      2,  7);
    1246   cmbLayout->addWidget(new QLabel("Method"),                                 3,  6, Qt::AlignRight);
    1247   cmbLayout->addWidget(_cmbMethodComboBox,                                   3,  7);
    1248   cmbLayout->addWidget(new QLabel(" Maximal residuum"),                      4,  6, Qt::AlignRight);
    1249   cmbLayout->addWidget(_cmbMaxresLineEdit,                                   4,  7, Qt::AlignRight);
    1250   cmbLayout->addWidget(new QLabel("Sampling"),                               5,  6, Qt::AlignRight);
    1251   cmbLayout->addWidget(_cmbSamplSpinBox,                                     5,  7);
    1252   cmbLayout->addWidget(new QLabel("GNSS"),                                   6,  6, Qt::AlignRight);
    1253   cmbLayout->addWidget(new QLabel("Systems"),                                6,  7, Qt::AlignLeft);
    1254   cmbLayout->addWidget(new QLabel("GPS (1W/2W)"),                            6,  8);
    1255   cmbLayout->addWidget(_cmbGpsCheckBox,                                      6,  9);
    1256   cmbLayout->addWidget(new QLabel("GLO (1P/2P)"),                            6, 10);
    1257   cmbLayout->addWidget(_cmbGloCheckBox,                                      6, 11);
    1258   cmbLayout->addWidget(new QLabel("Galileo (1C/5Q)"),                        6, 12);
    1259   cmbLayout->addWidget(_cmbGalCheckBox,                                      6, 13);
    1260   cmbLayout->addWidget(new QLabel("Beidou (2I/6I)"),                         6, 14);
    1261   cmbLayout->addWidget(_cmbBdsCheckBox,                                      6, 15);
    1262   cmbLayout->addWidget(new QLabel("QZSS (1C/2L)"),                           7,  8);
    1263   cmbLayout->addWidget(_cmbQzssCheckBox,                                     7,  9);
    1264   cmbLayout->addWidget(new QLabel("SBAS (1C/5Q)"),                           7, 10);
    1265   cmbLayout->addWidget(_cmbSbasCheckBox,                                     7, 11);
    1266   cmbLayout->addWidget(new QLabel("IRNSS"),                                  7, 12);
    1267   cmbLayout->addWidget(_cmbIrnssCheckBox,                                    7, 13);
    1268   cmbLayout->setRowStretch(6, 999);
     1258  cmbLayout->addWidget(addCmbRowButton,                                          2,  6);
     1259  cmbLayout->addWidget(delCmbRowButton,                                          2,  7);
     1260  cmbLayout->addWidget(new QLabel("Method"),                                     3,  6, Qt::AlignLeft);
     1261  cmbLayout->addWidget(_cmbMethodComboBox,                                       3,  7);
     1262  cmbLayout->addWidget(new QLabel("BSX File"),                                   4,  6, Qt::AlignLeft);
     1263  cmbLayout->addWidget(_cmbBsxFile,                                              4,  7, Qt::AlignRight);
     1264  cmbLayout->addWidget(new QLabel("Max Residual"),                               5,  6, Qt::AlignLeft);
     1265  cmbLayout->addWidget(_cmbMaxresLineEdit,                                       5,  7, Qt::AlignRight);
     1266  cmbLayout->addWidget(new QLabel("Sampling"),                                   6,  6, Qt::AlignLeft);
     1267  cmbLayout->addWidget(_cmbSamplSpinBox,                                         6,  7, Qt::AlignRight);
     1268  cmbLayout->addWidget(new QLabel("GNSS"),                                       7,  6, Qt::AlignLeft);
     1269  cmbLayout->addWidget(new QLabel("GPS (1W/2W)"),                                7,  7);
     1270  cmbLayout->addWidget(_cmbGpsCheckBox,                                          7,  8);
     1271  cmbLayout->addWidget(new QLabel("GLONASS (1P/2P)"),                            7,  9);
     1272  cmbLayout->addWidget(_cmbGloCheckBox,                                          7, 10);
     1273  cmbLayout->addWidget(new QLabel("Galileo (1C/5Q)"),                            7, 11);
     1274  cmbLayout->addWidget(_cmbGalCheckBox,                                          7, 12);
     1275  cmbLayout->addWidget(new QLabel("Beidou (2I/6I)"),                             7, 13);
     1276  cmbLayout->addWidget(_cmbBdsCheckBox,                                          7, 14);
     1277  cmbLayout->addWidget(new QLabel("QZSS (1C/2L)"),                               8,  7);
     1278  cmbLayout->addWidget(_cmbQzssCheckBox,                                         8,  8);
     1279  cmbLayout->addWidget(new QLabel("SBAS (1C/5Q)"),                               8,  9);
     1280  cmbLayout->addWidget(_cmbSbasCheckBox,                                         8, 10);
     1281  cmbLayout->addWidget(new QLabel("IRNSS"),                                      8, 11);
     1282  cmbLayout->addWidget(_cmbIrnssCheckBox,                                        8, 12);
     1283  cmbLayout->setRowStretch(8, 999);
    12691284
    12701285  connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
     
    12911306  uploadHlpLayout->addWidget(new QLabel("RNX"),                   0, 8, Qt::AlignRight);
    12921307  uploadHlpLayout->addWidget(_uploadSamplClkRnxSpinBox,           0, 9);
    1293   uploadHlpLayout->addWidget(setUploadTrafoButton,                0,10);
     1308  uploadHlpLayout->addWidget(new QLabel("BSX"),                   0,10, Qt::AlignRight);
     1309  uploadHlpLayout->addWidget(_uploadSamplBiaSnxSpinBox,           0,11);
     1310  uploadHlpLayout->addWidget(setUploadTrafoButton,                0,12);
    12941311  uploadHlpLayout->addWidget(new QLabel("ANTEX file"),            1, 0, Qt::AlignLeft);
    12951312  uploadHlpLayout->addWidget(_uploadAntexFile,                    1, 1, 1, 4);
     
    14791496  _cmbMaxresLineEdit->setWhatsThis(tr("<p>BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 'Maximal residuum' meters from the average of all clocks will be ignored.<p></p>It is suggested to specify a value of about 0.2 m for the Kalman filter combination approach and a value of about 3.0 meters for the Single-Epoch combination approach.</p><p>Default is a value of '999.0'. <i>[key: cmbMaxres]</i></p>"));
    14801497  _cmbSamplSpinBox->setWhatsThis(tr("<p>Select a combination Sampling interval for the clocks. Clock corrections will be produced following that interval.</p><p>A value of 10 sec may be an appropriate choice. <i>[key: cmbSampl]</i></p>"));
    1481   _cmbGpsCheckBox->setWhatsThis(tr("<p>GPS corrections shall be combined. <i>[key: cmbGps]</i></p>"));
    1482   _cmbGloCheckBox->setWhatsThis(tr("<p>GLONASS corrections shall be combined; GPS Broadcast ephemeris and corrections are required. <i>[key: cmbGlo]</i></p>"));
    1483   _cmbGalCheckBox->setWhatsThis(tr("<p>Galileo corrections shall be combined; GLONASS Broadcast ephemeris and corrections are required. <i>[key: cmbGal]</i></p>"));
    1484   _cmbBdsCheckBox->setWhatsThis(tr("<p>Beidou corrections shall be combined; Galileo Broadcast ephemeris and corrections are required. <i>[key: cmbBds]</i></p>"));
    1485   _cmbQzssCheckBox->setWhatsThis(tr("<p>QZSS corrections shall be combined; QZSS Broadcast ephemeris and corrections are required. <i>[key: cmbQzss]</i></p>"));
    1486   _cmbSbasCheckBox->setWhatsThis(tr("<p>SBAS corrections shall be combined; SBAS Broadcast ephemeris and corrections are required. <i>[key: cmbSbas]</i></p>"));
    1487   _cmbIrnssCheckBox->setWhatsThis(tr("<p>IRNSS corrections shall be combined; IRNSS Broadcast ephemeris and corrections are required. <i>[key: cmbIrnss]</i></p>"));
     1498  _cmbGpsCheckBox->setWhatsThis(tr("<p>GPS clock corrections shall be combined. <i>[key: cmbGps]</i></p>"));
     1499  _cmbGloCheckBox->setWhatsThis(tr("<p>GLONASS clock corrections shall be combined; GPS Broadcast ephemeris and corrections are required. <i>[key: cmbGlo]</i></p>"));
     1500  _cmbGalCheckBox->setWhatsThis(tr("<p>Galileo clock corrections shall be combined; GLONASS Broadcast ephemeris and corrections are required. <i>[key: cmbGal]</i></p>"));
     1501  _cmbBdsCheckBox->setWhatsThis(tr("<p>Beidou clock corrections shall be combined; Galileo Broadcast ephemeris and corrections are required. <i>[key: cmbBds]</i></p>"));
     1502  _cmbQzssCheckBox->setWhatsThis(tr("<p>QZSS clock corrections shall be combined; QZSS Broadcast ephemeris and corrections are required. <i>[key: cmbQzss]</i></p>"));
     1503  _cmbSbasCheckBox->setWhatsThis(tr("<p>SBAS clock corrections shall be combined; SBAS Broadcast ephemeris and corrections are required. <i>[key: cmbSbas]</i></p>"));
     1504  _cmbIrnssCheckBox->setWhatsThis(tr("<p>IRNSS clock corrections shall be combined; IRNSS Broadcast ephemeris and corrections are required. <i>[key: cmbIrnss]</i></p>"));
     1505  _cmbBsxFile->setWhatsThis(tr("<p> Specify a Bias SINEX File that will be used to add satellite code biases to the combined clocks. <i>[key: cmbBsxFile]</i></p>"));
    14881506
    14891507  // WhatsThis, Upload Corrections
     
    14961514  _uploadSamplSp3SpinBox->setWhatsThis(tr("<p>Select a SP3 orbit file sampling interval in minutes.</p><p>A value of zero '0' tells BNC to store all available samples into SP3 orbit files. <i>[key: uploadSamplSp3]</i></p>"));
    14971515  _uploadSamplClkRnxSpinBox->setWhatsThis(tr("<p>Select a Clock RINEX file sampling interval in seconds.</p><p>A value of zero '0' tells BNC to store all available samples into Clock RINEX files. <i>[key: uploadSamplClkRnx]</i></p>"));
     1516  _uploadSamplBiaSnxSpinBox->setWhatsThis(tr("<p>Select a Bias SINEX file sampling interval in seconds.</p><p>A value of zero '0' tells BNC to store all available samples into Bias SINEX files. <i>[key: uploadSamplBiaSnx]</i></p>"));
    14981517  setUploadTrafoButton->setWhatsThis(tr("<p>Hit 'Custom Trafo' to specify your own 14 parameter Helmert Transformation instead of selecting a predefined transformation via option 'System'.</p>"));
    14991518  _uploadAntexFile->setWhatsThis(tr("<p>When producing SP3 files or referring orbit and clock corrections to the satellite's Center of Mass (CoM) instead Antenna Phase Center (APC), an offset has to be applied which is available from the IGS 'ANTEX file'. You must therefore specify an 'ANTEX file' path if you want to save the stream content in SP3 format and/or refer correctors to CoM.</p><p>If you don't specify an 'ANTEX file' path, the SP3 file content as well as the orbit and clock correctors will be referred to satellite APCs. <i>[key: uploadAntexFile]</i></p>"));
     
    16221641  delete _cmbSbasCheckBox;
    16231642  delete _cmbIrnssCheckBox;
     1643  delete _cmbBsxFile;
    16241644  _uploadEphTable->deleteLater();
    16251645  delete _uploadSamplRtcmEphCorrSpinBox;
     
    16301650  delete _uploadSamplSp3SpinBox;
    16311651  delete _uploadSamplClkRnxSpinBox;
     1652  delete _uploadSamplBiaSnxSpinBox;
    16321653  delete _reqcActionComboBox;
    16331654  delete _reqcObsFileChooser;
     
    21062127  settings.setValue("cmbSbas",       _cmbSbasCheckBox->checkState());
    21072128  settings.setValue("cmbIrnss",      _cmbIrnssCheckBox->checkState());
     2129  settings.setValue("cmbBsxFile",    _cmbBsxFile->fileName());
    21082130
    21092131// Upload Corrections
     
    21182140  settings.setValue("uploadSamplSp3",         _uploadSamplSp3SpinBox->value());
    21192141  settings.setValue("uploadSamplClkRnx",      _uploadSamplClkRnxSpinBox->value());
     2142  settings.setValue("uploadSamplBiaSnx",      _uploadSamplBiaSnxSpinBox->value());
    21202143  settings.setValue("uploadAntexFile",        _uploadAntexFile->fileName());
    21212144// Upload Ephemeris
     
    26292652      enableWidget(true, _cmbSbasCheckBox);
    26302653      enableWidget(true, _cmbIrnssCheckBox);
     2654      enableWidget(true, _cmbBsxFile);
    26312655    }
    26322656    else {
     
    26412665      enableWidget(false, _cmbSbasCheckBox);
    26422666      enableWidget(false, _cmbIrnssCheckBox);
     2667      enableWidget(false, _cmbBsxFile);
    26432668    }
    26442669  }
     
    26512676    enableWidget(true, _uploadSamplRtcmEphCorrSpinBox);
    26522677    enableWidget(true, _uploadSamplClkRnxSpinBox);
     2678    enableWidget(true, _uploadSamplBiaSnxSpinBox);
    26532679    enableWidget(true, _uploadSamplSp3SpinBox);
    26542680    enableWidget(true, _uploadAntexFile);
     
    26582684    enableWidget(false, _uploadSamplRtcmEphCorrSpinBox);
    26592685    enableWidget(false, _uploadSamplClkRnxSpinBox);
     2686    enableWidget(false, _uploadSamplBiaSnxSpinBox);
    26602687    enableWidget(false, _uploadSamplSp3SpinBox);
    26612688    enableWidget(false, _uploadAntexFile);
     
    28082835      _uploadTable->setCellWidget(iRow, iCol, com);
    28092836    }
    2810     else if (iCol == 14) {
     2837    else if (iCol == 15) {
    28112838      bncTableItem* bncIt = new bncTableItem();
    28122839      bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable);
     
    29162943        _uploadTable->setCellWidget(iRow, iCol, com);
    29172944      }
    2918       else if (iCol == 14) {
     2945      else if (iCol == 15) {
    29192946        bncTableItem* bncIt = new bncTableItem();
    29202947        bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable);
Note: See TracChangeset for help on using the changeset viewer.