Changeset 10251 in ntrip for trunk/BNC/src/pppWidgets.cpp


Ignore:
Timestamp:
Nov 20, 2023, 10:23:42 PM (8 months ago)
Author:
stuerze
Message:

changes regarding PPP: allow single frequency PPP and allow to select the frequency bands that are used

File:
1 edited

Legend:

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

    r10250 r10251  
    8585  _lcGalileo    = new QComboBox();     _lcGalileo   ->setObjectName("PPP/lcGalileo");    _widgets << _lcGalileo;
    8686  _lcBDS        = new QComboBox();     _lcBDS       ->setObjectName("PPP/lcBDS");        _widgets << _lcBDS;
    87   _modelObs     = new QComboBox();     _modelObs    ->setObjectName("PPP/modelObs");     _widgets << _modelObs;
    88   _pseudoObs    = new QComboBox();     _pseudoObs   ->setObjectName("PPP/pseudoObs");    _widgets << _pseudoObs;
     87  _constraints  = new QComboBox();     _constraints ->setObjectName("PPP/constraints");  _widgets << _constraints;
    8988  _sigmaC1      = new QLineEdit();     _sigmaC1     ->setObjectName("PPP/sigmaC1");      _widgets << _sigmaC1;
    9089  _sigmaL1      = new QLineEdit();     _sigmaL1     ->setObjectName("PPP/sigmaL1");      _widgets << _sigmaL1;
     
    116115  _dataSource->addItems(QString(",Real-Time Streams,RINEX Files").split(","));
    117116  connect(_dataSource, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
    118   connect(_pseudoObs, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
    119   connect(_modelObs, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
     117  connect(_constraints, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets()));
    120118  connect(_snxtroPath, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged()));
    121119  connect(_snxtroAc, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged()));
     
    130128  _lcGPS->addItems(QString("P3,P3&L3").split(","));
    131129#else
    132   _lcGPS->addItems(QString("Pi&Li,Pi,Li,no").split(","));
     130  _lcGPS->addItems(QString("Pi&Li,Pi,Li,P1&L1,P1,L1,P3&L3,P3,L3,no").split(","));
    133131#endif
    134132
     
    136134#ifdef USE_PPP_SSR_I
    137135   _lcGLONASS->addItems(QString("no,P3,L3,P3&L3").split(","));
    138 #else
    139   _lcGLONASS->addItems(QString("Pi&Li,Pi,Li,no").split(","));
     136#else 
     137  _lcGLONASS->addItems(QString("Pi&Li,Pi,Li,P1&L1,P1,L1,P3&L3,P3,L3,no").split(","));
    140138#endif
    141139
     
    143141#ifdef USE_PPP_SSR_I
    144142  _lcGalileo->addItems(QString("no,P3,L3,P3&L3").split(","));
    145 #else
    146   _lcGalileo->addItems(QString("Pi&Li,Pi,Li,no").split(","));
     143#else 
     144  _lcGalileo->addItems(QString("Pi&Li,Pi,Li,P1&L1,P1,L1,P3&L3,P3,L3,no").split(","));
    147145#endif
    148146
    149147  _lcBDS->setEditable(false);
    150 #ifdef USE_PPP_SSR_I
     148 #ifdef USE_PPP_SSR_I
    151149  _lcBDS->addItems(QString("no,P3,L3,P3&L3").split(","));
    152 #else
    153   _lcBDS->addItems(QString("Pi&Li,Pi,Li,no").split(","));
     150#else 
     151  _lcBDS->addItems(QString("Pi&Li,Pi,Li,P1&L1,P1,L1,P3&L3,P3,L3,no").split(","));
    154152#endif
    155153
    156   _modelObs->setEditable(false);
    157   _pseudoObs->setEditable(false);
    158 #ifdef USE_PPP_SSR_I
    159   _modelObs->addItems(QString("Ionosphere-free PPP").split(","));
    160   _pseudoObs->addItems(QString("no").split(","));
    161 #else
    162   _modelObs->addItems(QString("Uncombined PPP,Ionosphere-free PPP").split(","));
    163   _pseudoObs->addItems(QString("no,Ionosphere").split(","));
     154#ifdef USE_PPP
     155  _constraints->setEditable(false);
     156  _constraints->addItems(QString("no,Ionosphere: pseudo-obs").split(","));
    164157#endif
    165 
    166158  _snxtroSampl->setEditable(false);
    167159  _snxtroSampl->addItems(QString("1 sec,5 sec,10 sec,30 sec,60 sec,300 sec").split(","));
     
    218210  // WhatsThis, PPP (3)
    219211  // ------------------
    220   _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host. Specify a list of signal priorities for the observations that shall be used for PPP.</p><p>Specifying one record per Station is mandatory. BNC will only process data for stations which are listed here. To define a station, specify the 'Mountpoint' when in 'Real-Time Streams' mode or the 9-character station ID when in 'RINEX Files' mode.</p><p>'Sigma' is meant to describe the uncertainty of a single coordinate or tropospheric delay estimated for one epoch. 'Noise' is meant to describe the variation of estimates from epoch to epoch.</p><p><ul><li>A Sigma of 100.0 meters may be an appropriate choice e.g. for the initial N/E/H coordinates. However, this value may be significantly smaller (i.e. 0.01) for stations with well-known a priori coordinates.</li><li>A Noise of 100.0 meters for the estimated N/E/H coordinates may also be appropriate considering the potential movement of a rover position.</li><li>A value of 0.1 meters may be an appropriate Sigma for the a priori model based Tropospheric delay estimation.</li><li>Specify a Noise to describe the expected variation of the tropospheric effect over time. Supposing 1Hz observation data, specifying a value of 3e-6 would mean that the tropospheric effect may vary 3600 * 3e-6 = 0.01 meters per hour.</li></ul></p><p>'Signal Priorities' can be specified as equal for all systems, as system specific or as system and frequency specific. Default for all PPP models is the following list of 'Signal Priorities': <ul><li>'G:12&CWPSLX R:12&CP E:1&CBX E:5&QIX C:26&IQX'</li></ul><p>But it is recommended to specify it in more detail per individual station, e.g.:</p> <ul>  <li>'G:12&W R:12&P E:1&C E:5&Q C:26&I'</li>  </ul> <p> <i>[key: PPP/staTable]</i></p>"));
    221 
     212#ifdef USE_PPP
     213  _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host. Specify a list of signal priorities for the observations that shall be used for PPP.</p>"
     214                             "<p>'Sigma' is meant to describe the uncertainty of a single coordinate or tropospheric delay estimated for one epoch. 'Noise' is meant to describe the variation of estimates from epoch to epoch.</p><p><ul><li>A Sigma of 100.0 meters may be an appropriate choice e.g. for the initial N/E/H coordinates. However, this value may be significantly smaller (i.e. 0.01) for stations with well-known a priori coordinates.</li><li>A Noise of 100.0 meters for the estimated N/E/H coordinates may also be appropriate considering the potential movement of a rover position.</li><li>A value of 0.1 meters may be an appropriate Sigma for the a priori model based Tropospheric delay estimation.</li><li>Specify a Noise to describe the expected variation of the tropospheric effect over time. Supposing 1Hz observation data, specifying a value of 3e-6 would mean that the tropospheric effect may vary 3600 * 3e-6 = 0.01 meters per hour.</li></ul></p>"
     215                             "<p>'Signal Priorities' can be specified as system (G,R,E,C) and frequency specific. Two frequency bands per GNSS are allowed and will be considered. The following frequency bands are available for selection: <ul>"
     216                             "<li>G: 1, 2, 5</li>"
     217                             "<li>R: 1, 2</li>"
     218                             "<li>E: 1, 5, 6, 7, 8</li>"
     219                             "<li>C: 1, 2, 5, 6, 7, 8</li>"
     220                             "</ul>"
     221                             "<p>'Default is the following list of 'Signal Priorities': <ul><li>'G:12&CWPSLX R:12&CP E:1&CBX E:5&QIX C:26&IQX'</li></ul>"
     222                             "<p>But it is recommended to specify it in more detail per individual station, e.g.:</p> <ul>  <li>'G:12&W R:12&P E:1&C E:5&Q C:26&I'</li></ul> "
     223                             "<p> <i>[key: PPP/staTable]</i></p>"));
     224#else
     225  _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host.<i>[key: PPP/staTable]</i></p>"));
     226#endif
    222227  // WhatsThis, PPP (4)
    223228  // ------------------
     
    262267  delete _lcGalileo;
    263268  delete _lcBDS;
    264   delete _modelObs;
    265   delete _pseudoObs;
     269  delete _constraints;
    266270  delete _sigmaC1;
    267271  delete _sigmaL1;
     
    314318    _lcBDS->setCurrentIndex(ii);
    315319  }
    316   ii = _modelObs->findText(settings.value(_modelObs->objectName()).toString());
    317   if (ii != -1) {
    318     _modelObs->setCurrentIndex(ii);
    319   }
    320   ii = _pseudoObs->findText(settings.value(_pseudoObs->objectName()).toString());
    321   if (ii != -1) {
    322     _pseudoObs->setCurrentIndex(ii);
     320  ii = _constraints->findText(settings.value(_constraints->objectName()).toString());
     321  if (ii != -1) {
     322    _constraints->setCurrentIndex(ii);
    323323  }
    324324  ii = _snxtroIntr->findText(settings.value(_snxtroIntr->objectName()).toString());
     
    477477  settings.setValue(_lcGalileo   ->objectName(), _lcGalileo   ->currentText());
    478478  settings.setValue(_lcBDS       ->objectName(), _lcBDS       ->currentText());
    479   settings.setValue(_modelObs    ->objectName(), _modelObs    ->currentText());
    480   settings.setValue(_pseudoObs   ->objectName(), _pseudoObs   ->currentText());
     479  settings.setValue(_constraints ->objectName(), _constraints ->currentText());
    481480  settings.setValue(_sigmaC1     ->objectName(), _sigmaC1     ->text());
    482481  settings.setValue(_sigmaL1     ->objectName(), _sigmaL1     ->text());
     
    520519  const static QPalette paletteGray(QColor(230, 230, 230));
    521520
    522   bool allDisabled = _dataSource->currentText() == "";
    523   bool realTime    = _dataSource->currentText() == "Real-Time Streams";
    524   bool rinexFiles  = _dataSource->currentText() == "RINEX Files";
    525   bool enablePseudoObs;
    526   if (_modelObs->currentText() == "PPP-RTK" ||
    527       _modelObs->currentText() == "Ionosphere-free PPP") {
    528     enablePseudoObs = false;
    529   }
    530   else {
    531     enablePseudoObs = true;
    532   }
    533   bool pseudoObsUsed = _pseudoObs->currentText() == "Ionosphere";
     521  bool allDisabled   = _dataSource->currentText() == "";
     522  bool realTime      = _dataSource->currentText() == "Real-Time Streams";
     523  bool rinexFiles    = _dataSource->currentText() == "RINEX Files";
     524  bool pseudoObsIono = _constraints->currentText() == "Ionosphere: pseudo-obs";
    534525
    535526  QListIterator<QWidget*> it(_widgets);
     
    568559  }
    569560
    570   if (enablePseudoObs) {
    571     _pseudoObs->setEnabled(true);
    572     if (pseudoObsUsed) {
    573      _sigmaGIM->setEnabled(true);
    574      _maxResGIM->setEnabled(true);
    575     } else {
    576       _sigmaGIM->setEnabled(false);
    577       _maxResGIM->setEnabled(false);
    578     }
     561
     562  if (pseudoObsIono) {
     563   _sigmaGIM->setEnabled(true);
     564   _maxResGIM->setEnabled(true);
    579565  } else {
    580     _pseudoObs->setEnabled(false);
    581566    _sigmaGIM->setEnabled(false);
    582567    _maxResGIM->setEnabled(false);
Note: See TracChangeset for help on using the changeset viewer.