- Timestamp:
- Apr 24, 2024, 3:46:28 PM (5 months ago)
- Location:
- trunk/BNC
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/CHANGELOG.md
r10446 r10451 1 1 # Changelog 2 ## 2.13.2 (2014-0?-??) 3 - ADDED: The possibility to to exclude satellites or satellite system for individual ACs within the combination. 4 Also the possibility to ignore orbit corrections from an indiviul AC that differ by more than 'Maximal Orb Displacement' meters 5 from the average of all orbit corrections per satellite. 2 6 3 7 ## 2.13.1 (2024-04-18) -
trunk/BNC/src/bnchelp.html
r10405 r10451 220 220 2.14.1.1 <a href=#combiadd>Add Row, Delete</a><br> 221 221 2.14.1.2 <a href=#combimethod>Method</a><br> 222 2.14.1.3 <a href=#combimax>Maximal Residuum</a><br> 223 2.14.1.4 <a href=#combismpl>Sampling</a><br> 222 2.14.1.3 <a href=#combimaxres>Maximal Clock Residuum</a><br> 223 2.14.1.4 <a href=#combimaxdisp>Maximal Orbit Displacement</a><br> 224 2.14.1.5 <a href=#combismpl>Sampling</a><br> 225 2.14.1.6 <a href=#combisatsys>Satellite Systems</a><br> 224 226 2.15 <a href=#upclk><b>Upload Corrections</b></a><br> 225 227 2.15.1 <a href=#upadd>Add, Delete Row</a><br> … … 4492 4494 <p> 4493 4495 Hit the 'Add Row' button, double click on the 'Mountpoint' field, enter a Broadcast Correction mountpoint from the 'Streams' section 4494 and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing 4495 the Antenna Phase Center (APC) related correction stream. Finally, double click on the 'Weight' field to enter a weight to be applied 4496 to this stream in the combination.</p> 4496 and hit Enter.</p> 4497 <p> 4498 Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing 4499 the Antenna Phase Center (APC) related correction stream.</p> 4500 <p> 4501 After that, double click on the 'Weight Factor' field to enter a weight to be applied to this stream in the combination. 4502 A Factor greater than 1 will enlarge the sigma of the clock pseudo-observations and with it down-weight its contribution.</p> 4503 <p> 4504 Finally, double click on the 'Exclude Satellites' field and specify satellites or satellite systems, to exclude them for an individual AC. 4505 An entry 'G04,G31,R' means to excludes GPS satellites PRN 4 and 31 as well as all GLONASS satellites from one individual AC. 4506 Default is an empty option field, meaning that no satellite is excluded from this individual AC.</p> 4507 <p> 4508 Note that the orbit information in the resulting combination stream is just copied from one of the incoming streams. 4509 The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage 4510 then BNC switches to the next remaining stream for getting hold of the orbit information.</p> 4511 <p> 4512 The combination process requires Broadcast Ephemeris. 4513 Besides orbit and clock correction streams BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p> 4514 <p> 4515 It is possible to specify only one Broadcast Ephemeris Correction stream in the 'Combine Corrections' table. 4516 Instead of combining corrections BNC will then add the corrections to the Broadcast Ephemeris with the possibility 4517 to save final orbit and clock results in SP3 and/or Clock RINEX format. 4518 </p> 4497 4519 <p> 4498 4520 The sequence of entries in the 'Combine Corrections' table is not of importance. … … 4521 4543 Select a clock combination method. Available options are 'Kalman Filter' and 'Single-Epoch'. 4522 4544 It is suggested to use the 'Kalman Filter' approach in case the combined stream of Broadcast Corrections 4523 is intended for Precise Point Positioning. 4524 </p> 4525 4526 <p><h4 id="combimax">2.14.1.3 Maximal Residuum - mandatory if 'Combine Corrections' table is populated</h4></p> 4545 is intended for Precise Point Positioning.</p> 4546 4547 <p><h4 id="combimaxres">2.14.1.3 Maximal Clock Residuum - mandatory if 'Combine Corrections' table is populated</h4></p> 4527 4548 <p> 4528 4549 BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 4529 'Maximal Residuum' meters from the average of all clocks will be ignored.4550 'Maximal Clk Residuum' meters from the average of all clocks will be ignored. 4530 4551 It is suggested to specify a value of about 0.2 m for the Kalman Filter combination approach and 4531 a value of about 3.0 meters for the Single-Epoch combination approach. 4532 </p> 4533 <p> 4534 Default is a 'Maximal Residuum' of 999.0 meters.</p> 4535 4536 <p><h4 id="combismpl">2.14.1.4 Sampling - mandatory if 'Combine Corrections' table is populated</h4></p> 4552 a value of about 3.0 meters for the Single-Epoch combination approach.</p> 4553 <p> 4554 Default is a 'Maximal Clk Residuum' of 999.0 meters.</p> 4555 4556 <p><h4 id="combimaxdisp">2.14.1.4 Maximal Orbit Displacement - mandatory if 'Combine Corrections' table is populated</h4></p> 4557 <p> 4558 BNC builds mean values for all incoming orbit corrections per satellite. 4559 Individual orbit corrections that differ by more than 'Maximal Orb Displacement' meters from the average 4560 of all orbit corrections per satellite will be ignored. It is suggested to specify a value of about 0.5 m.</p> 4561 <p> 4562 Default is a 'Maximal Orb Displacement' of 2.0 meters.</p> 4563 4564 <p><h4 id="combismpl">2.14.1.5 Sampling - mandatory if 'Combine Corrections' table is populated</h4></p> 4537 4565 <p> 4538 4566 Specify a combination sampling interval. Orbit and clock corrections will be produced following that interval. 4539 A value of 10 sec may be an appropriate choice. 4540 </p> 4567 A value of 10 sec may be an appropriate choice.</p> 4568 4569 <p><h4 id="combisatsys">2.14.1.6 Satellite Systems - mandatory if 'Combine Corrections' table is populated</h4></p> 4570 <p> 4571 Specify for each satellite system whether the clock corrections shall be combined.</p> 4541 4572 4542 4573 <p><h4 id="upclk">2.15 Upload Corrections</h4></p> … … 6129 6160 6130 6161 Combine Corrections Panel keys: 6131 cmbStreams {Correction streams table [character string, semicolon separated list, each element in quotation marks, example: 6132 "SSRA00ESA0 ESA 1.0;SSRA00BKG BKG 1.0"]} 6133 cmbMethodFilter {Combination approach [character string: Single-Epoch|Filter]} 6134 cmbBsxFile {SINEX Bias file, full path [char string]} 6135 cmbMaxres {Clock outlier residuum threshold in meters [floating-point number] 6136 cmbSampl {Clock sampling rate [integer number of seconds: 0|10|20|30|40|50|60]} 6137 cmbGps {GPS correction usage [integer number: 0=no,2=yes]} 6138 cmbGlo {GLONASS correction usage [integer number: 0=no,2=yes]} 6139 cmbGal {Galileo correction usage [integer number: 0=no,2=yes]} 6140 cmbBds {Beidou correction usage [integer number: 0=no,2=yes]} 6141 cmbQzss {QZSS correction usage [integer number: 0=no,2=yes]} 6142 cmbSbas {SBAS correction usage [integer number: 0=no,2=yes]} 6143 cmbIrnss {IRNSS correction usage [integer number: 0=no,2=yes]} 6162 cmbStreams {Correction streams table [character string, semicolon separated list, each element in quotation marks, example: 6163 "SSRA00ESA0 ESA 1.0;SSRA00BKG BKG 1.0"]} 6164 cmbMethodFilter {Combination approach [character string: Single-Epoch|Filter]} 6165 cmbBsxFile {SINEX Bias file, full path [char string]} 6166 cmbMaxres {Clock outlier residuum threshold in meters [floating-point number] 6167 cmbMaxdisplacement {Maximal orbit displacement from the mean of corrections for a satellite [floating-point number] 6168 cmbSampl {Clock sampling rate [integer number of seconds: 0|10|20|30|40|50|60]} 6169 cmbGps {GPS correction usage [integer number: 0=no,2=yes]} 6170 cmbGlo {GLONASS correction usage [integer number: 0=no,2=yes]} 6171 cmbGal {Galileo correction usage [integer number: 0=no,2=yes]} 6172 cmbBds {Beidou correction usage [integer number: 0=no,2=yes]} 6173 cmbQzss {QZSS correction usage [integer number: 0=no,2=yes]} 6174 cmbSbas {SBAS correction usage [integer number: 0=no,2=yes]} 6175 cmbIrnss {IRNSS correction usage [integer number: 0=no,2=yes]} 6144 6176 6145 6177 Upload Corrections Panel keys: -
trunk/BNC/src/bncmain.cpp
r10354 r10451 281 281 "\n" 282 282 "Combine Corrections Panel keys:\n" 283 " cmbStreams {Correction streams table [character string, semicolon separated list, each element in quotation marks, example:\n" 284 " \"SSRA00ESA0 ESA 1.0;SSRA00BKG BKG 1.0\"]}\n" 285 " cmbMethodFilter {Combination approach [character string: Single-Epoch|Filter]}\n" 286 " cmbBsxFile {SINEX Bias file, full path [char string]}\n" 287 " cmbMaxres {Clock outlier residuum threshold in meters [floating-point number]\n" 288 " cmbSampl {Clock sampling rate [integer number of seconds: 0|10|20|30|40|50|60]}\n" 289 " cmbGps {GPS correction usage [integer number: 0=no,2=yes]}\n" 290 " cmbGlo {GLONASS correction usage [integer number: 0=no,2=yes]}\n" 291 " cmbGal {Galileo correction usage [integer number: 0=no,2=yes]}\n" 292 " cmbBds {Beidou correction usage [integer number: 0=no,2=yes]}\n" 293 " cmbQzss {QZSS correction usage [integer number: 0=no,2=yes]}\n" 294 " cmbSbas {SBAS correction usage [integer number: 0=no,2=yes]}\n" 295 " cmbIrnss {IRNSS correction usage [integer number: 0=no,2=yes]}\n" 283 " cmbStreams {Correction streams table [character string, semicolon separated list, each element in quotation marks, example:\n" 284 " \"SSRA00ESA0 ESA 1.0;SSRA00BKG BKG 1.0\"]}\n" 285 " cmbMethodFilter {Combination approach [character string: Single-Epoch|Filter]}\n" 286 " cmbBsxFile {SINEX Bias file, full path [char string]}\n" 287 " cmbMaxres {Clock outlier residuum threshold in meters [floating-point number]}\n" 288 " cmbMaxdisplacement {Maximal orbit displacement from the mean of corrections for a satellite [floating-point number]}\n" 289 " cmbSampl {Clock sampling rate [integer number of seconds: 0|10|20|30|40|50|60]}\n" 290 " cmbGps {GPS correction usage [integer number: 0=no,2=yes]}\n" 291 " cmbGlo {GLONASS correction usage [integer number: 0=no,2=yes]}\n" 292 " cmbGal {Galileo correction usage [integer number: 0=no,2=yes]}\n" 293 " cmbBds {Beidou correction usage [integer number: 0=no,2=yes]}\n" 294 " cmbQzss {QZSS correction usage [integer number: 0=no,2=yes]}\n" 295 " cmbSbas {SBAS correction usage [integer number: 0=no,2=yes]}\n" 296 " cmbIrnss {IRNSS correction usage [integer number: 0=no,2=yes]}\n" 296 297 "\n" 297 298 "Upload Corrections Panel keys:\n" -
trunk/BNC/src/bncsettings.cpp
r10420 r10451 171 171 setValue_p("cmbMethod", ""); 172 172 setValue_p("cmbMaxres", ""); 173 setValue_p("cmbMaxdisplacement", ""); 173 174 setValue_p("cmbSampl", "10"); 174 175 setValue_p("cmbGps", "2"); -
trunk/BNC/src/bncwindow.cpp
r10422 r10451 474 474 // Combine Corrections 475 475 // ------------------- 476 _cmbTable = new QTableWidget(0, 3);477 _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight Factor ").split(","));476 _cmbTable = new QTableWidget(0,4); 477 _cmbTable->setHorizontalHeaderLabels(QString("Mountpoint, AC Name, Weight Factor, Exclude Satellites").split(",")); 478 478 _cmbTable->setSelectionMode(QAbstractItemView::ExtendedSelection); 479 479 _cmbTable->setSelectionBehavior(QAbstractItemView::SelectRows); 480 _cmbTable->setMaximumWidth( 30*ww);480 _cmbTable->setMaximumWidth(40*ww); 481 481 _cmbTable->horizontalHeader()->resizeSection(0,10*ww); 482 _cmbTable->horizontalHeader()->resizeSection(1,8*ww); 483 _cmbTable->horizontalHeader()->resizeSection(2,8*ww); 482 _cmbTable->horizontalHeader()->resizeSection(1,6*ww); 483 _cmbTable->horizontalHeader()->resizeSection(2,9*ww); 484 _cmbTable->horizontalHeader()->resizeSection(3,9*ww); 484 485 #if QT_VERSION < 0x050000 485 486 _cmbTable->horizontalHeader()->setResizeMode(QHeaderView::Interactive); … … 491 492 492 493 _cmbMaxresLineEdit = new QLineEdit(settings.value("cmbMaxres").toString()); 494 _cmbMaxdisplacementLineEdit = new QLineEdit(settings.value("cmbMaxdisplacements").toString()); 493 495 494 496 _cmbSamplSpinBox = new QSpinBox; … … 517 519 enableWidget(true, _cmbMethodComboBox); 518 520 enableWidget(true, _cmbMaxresLineEdit); 521 enableWidget(true, _cmbMaxdisplacementLineEdit); 519 522 enableWidget(true, _cmbSamplSpinBox); 520 523 } … … 522 525 enableWidget(false, _cmbMethodComboBox); 523 526 enableWidget(false, _cmbMaxresLineEdit); 527 enableWidget(false, _cmbMaxdisplacementLineEdit); 524 528 enableWidget(false, _cmbSamplSpinBox); 525 529 } … … 1283 1287 1284 1288 populateCmbTable(); 1285 cmbLayout->addWidget(_cmbTable, 0, 0, 8, 6); 1286 cmbLayout->addWidget(new QLabel(" Combine Broadcast Correction streams.<br>"), 1, 6, 1, 10); 1287 cmbLayout->addWidget(addCmbRowButton, 2, 6); 1288 cmbLayout->addWidget(delCmbRowButton, 2, 7); 1289 cmbLayout->addWidget(new QLabel("Method"), 3, 6, Qt::AlignLeft); 1290 cmbLayout->addWidget(_cmbMethodComboBox, 3, 7); 1291 cmbLayout->addWidget(new QLabel("BSX File"), 4, 6, Qt::AlignLeft); 1292 cmbLayout->addWidget(_cmbBsxFile, 4, 7, Qt::AlignRight); 1293 cmbLayout->addWidget(new QLabel("Max Residual"), 5, 6, Qt::AlignLeft); 1294 cmbLayout->addWidget(_cmbMaxresLineEdit, 5, 7, Qt::AlignRight); 1295 cmbLayout->addWidget(new QLabel("Sampling"), 6, 6, Qt::AlignLeft); 1296 cmbLayout->addWidget(_cmbSamplSpinBox, 6, 7, Qt::AlignRight); 1297 cmbLayout->addWidget(new QLabel("GNSS"), 7, 6, Qt::AlignLeft); 1298 cmbLayout->addWidget(new QLabel("GPS (C1W/C2W)"), 7, 7); 1299 cmbLayout->addWidget(_cmbGpsCheckBox, 7, 8); 1300 cmbLayout->addWidget(new QLabel("GLONASS (C1P/C2P)"), 7, 9); 1301 cmbLayout->addWidget(_cmbGloCheckBox, 7, 10); 1302 cmbLayout->addWidget(new QLabel("Galileo (C1C/C5Q)"), 7, 11); 1303 cmbLayout->addWidget(_cmbGalCheckBox, 7, 12); 1304 cmbLayout->addWidget(new QLabel("Beidou (C2I/C6I)"), 7, 13); 1305 cmbLayout->addWidget(_cmbBdsCheckBox, 7, 14); 1306 cmbLayout->addWidget(new QLabel("QZSS (C1C/C2L)"), 8, 7); 1307 cmbLayout->addWidget(_cmbQzssCheckBox, 8, 8); 1308 cmbLayout->addWidget(new QLabel("SBAS (C1C/C5Q)"), 8, 9); 1309 cmbLayout->addWidget(_cmbSbasCheckBox, 8, 10); 1310 cmbLayout->addWidget(new QLabel("IRNSS"), 8, 11); 1311 cmbLayout->addWidget(_cmbIrnssCheckBox, 8, 12); 1312 cmbLayout->setRowStretch(8, 999); 1289 cmbLayout->addWidget(_cmbTable, 0, 0, 8, 10); 1290 cmbLayout->addWidget(new QLabel(" Combine Broadcast Correction streams.<br>"), 0, 10, 1, 10); 1291 cmbLayout->addWidget(addCmbRowButton, 1, 10); 1292 cmbLayout->addWidget(delCmbRowButton, 1, 11); 1293 cmbLayout->addWidget(new QLabel("Method"), 2, 10, Qt::AlignLeft); 1294 cmbLayout->addWidget(_cmbMethodComboBox, 2, 11); 1295 cmbLayout->addWidget(new QLabel("BSX File"), 3, 10, Qt::AlignLeft); 1296 cmbLayout->addWidget(_cmbBsxFile, 3, 11, Qt::AlignRight); 1297 cmbLayout->addWidget(new QLabel("Max Clk Residual"), 4, 10, Qt::AlignLeft); 1298 cmbLayout->addWidget(_cmbMaxresLineEdit, 4, 11, Qt::AlignRight); 1299 cmbLayout->addWidget(new QLabel("Max Orb Displacement"), 5, 10, Qt::AlignLeft); 1300 cmbLayout->addWidget(_cmbMaxdisplacementLineEdit, 5, 11, Qt::AlignRight); 1301 cmbLayout->addWidget(new QLabel("Sampling"), 6, 10, Qt::AlignLeft); 1302 cmbLayout->addWidget(_cmbSamplSpinBox, 6, 11, Qt::AlignRight); 1303 1304 cmbLayout->addWidget(new QLabel("GNSS"), 0, 14, Qt::AlignLeft); 1305 cmbLayout->addWidget(new QLabel("GPS (C1W/C2W)"), 1, 14); 1306 cmbLayout->addWidget(_cmbGpsCheckBox, 1, 15); 1307 1308 cmbLayout->addWidget(new QLabel("GLONASS (C1P/C2P)"), 2, 14); 1309 cmbLayout->addWidget(_cmbGloCheckBox, 2, 15); 1310 1311 cmbLayout->addWidget(new QLabel("Galileo (C1C/C5Q)"), 3, 14); 1312 cmbLayout->addWidget(_cmbGalCheckBox, 3, 15); 1313 1314 cmbLayout->addWidget(new QLabel("Beidou (C2I/C6I)"), 4, 14); 1315 cmbLayout->addWidget(_cmbBdsCheckBox, 4, 15); 1316 1317 cmbLayout->addWidget(new QLabel("QZSS (C1C/C2L)"), 5, 14); 1318 cmbLayout->addWidget(_cmbQzssCheckBox, 5, 15); 1319 1320 cmbLayout->addWidget(new QLabel("SBAS (C1C/C5Q)"), 6, 14); 1321 cmbLayout->addWidget(_cmbSbasCheckBox, 6, 15); 1322 1323 cmbLayout->addWidget(new QLabel("IRNSS"), 7, 14); 1324 cmbLayout->addWidget(_cmbIrnssCheckBox, 7, 15); 1325 cmbLayout->setRowStretch(9, 999); 1313 1326 1314 1327 connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow())); … … 1583 1596 // WhatsThis, Combine Corrections 1584 1597 // ------------------------------ 1585 _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. 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. Finally, 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.</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>"));1598 _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. 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>")); 1586 1599 addCmbRowButton->setWhatsThis(tr("<p>Hit 'Add Row' button to add another line to the 'Combine Corrections' table.</p>")); 1587 1600 delCmbRowButton->setWhatsThis(tr("<p>Hit 'Delete' button to delete the highlighted line(s) from the 'Combine Corrections' table.</p>")); 1588 1601 _cmbMethodComboBox->setWhatsThis(tr("<p>Select a clock combination approach. Options are 'Single-Epoch' and Kalman 'Filter'.</p><p>It is suggested to use the Kalman filter approach for the purpose of Precise Point Positioning. <i>[key: cmbMethod]</i></p>")); 1589 _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>")); 1602 _cmbMaxresLineEdit->setWhatsThis(tr("<p>BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 'Maximal Clk 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>")); 1603 _cmbMaxdisplacementLineEdit->setWhatsThis(tr("<p>BNC builds mean values for all incoming orbit corrections per satellite. Individual orbit corrections that differ by more than 'Maximal Orb Displacement' meters from the average of all orbit corrections per satellite will be ignored.<p></p>It is suggested to specify a value of about 0.5 m.</p><p>Default is a value of '2.0'. <i>[key: cmbMaxdisplacement]</i></p>")); 1590 1604 _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. A value of zero '0' tells BNC to use all available samples. <i>[key: ]</i></p>")); 1591 1605 _cmbGpsCheckBox->setWhatsThis(tr("<p>GPS clock corrections shall be combined. GPS Broadcast ephemeris and corrections are required. <i>[key: cmbGps]</i></p>")); … … 1727 1741 _cmbTable->deleteLater(); 1728 1742 delete _cmbMaxresLineEdit; 1743 delete _cmbMaxdisplacementLineEdit; 1729 1744 delete _cmbSamplSpinBox; 1730 1745 delete _cmbMethodComboBox; … … 2217 2232 settings.setValue("cmbStreams", ""); 2218 2233 } 2219 settings.setValue("cmbMethod", _cmbMethodComboBox->currentText()); 2220 settings.setValue("cmbMaxres", _cmbMaxresLineEdit->text()); 2221 settings.setValue("cmbSampl", _cmbSamplSpinBox->value()); 2222 settings.setValue("cmbGps", _cmbGpsCheckBox->checkState()); 2223 settings.setValue("cmbGlo", _cmbGloCheckBox->checkState()); 2224 settings.setValue("cmbGal", _cmbGalCheckBox->checkState()); 2225 settings.setValue("cmbBds", _cmbBdsCheckBox->checkState()); 2226 settings.setValue("cmbQzss", _cmbQzssCheckBox->checkState()); 2227 settings.setValue("cmbSbas", _cmbSbasCheckBox->checkState()); 2228 settings.setValue("cmbIrnss", _cmbIrnssCheckBox->checkState()); 2229 settings.setValue("cmbBsxFile", _cmbBsxFile->fileName()); 2234 settings.setValue("cmbMethod", _cmbMethodComboBox->currentText()); 2235 settings.setValue("cmbMaxres", _cmbMaxresLineEdit->text()); 2236 settings.setValue("cmbMaxdisplacement", _cmbMaxresLineEdit->text()); 2237 settings.setValue("cmbSampl", _cmbSamplSpinBox->value()); 2238 settings.setValue("cmbGps", _cmbGpsCheckBox->checkState()); 2239 settings.setValue("cmbGlo", _cmbGloCheckBox->checkState()); 2240 settings.setValue("cmbGal", _cmbGalCheckBox->checkState()); 2241 settings.setValue("cmbBds", _cmbBdsCheckBox->checkState()); 2242 settings.setValue("cmbQzss", _cmbQzssCheckBox->checkState()); 2243 settings.setValue("cmbSbas", _cmbSbasCheckBox->checkState()); 2244 settings.setValue("cmbIrnss", _cmbIrnssCheckBox->checkState()); 2245 settings.setValue("cmbBsxFile", _cmbBsxFile->fileName()); 2230 2246 2231 2247 // Upload Corrections … … 2752 2768 enableWidget(true, _cmbMethodComboBox); 2753 2769 enableWidget(true, _cmbMaxresLineEdit); 2770 enableWidget(true, _cmbMaxdisplacementLineEdit); 2754 2771 enableWidget(true, _cmbSamplSpinBox); 2755 2772 enableWidget(true, _cmbGpsCheckBox); … … 2765 2782 enableWidget(false, _cmbMethodComboBox); 2766 2783 enableWidget(false, _cmbMaxresLineEdit); 2784 enableWidget(false, _cmbMaxdisplacementLineEdit); 2767 2785 enableWidget(false, _cmbSamplSpinBox); 2768 2786 enableWidget(false, _cmbGpsCheckBox); … … 2873 2891 enableWidget(false, _cmbMethodComboBox); 2874 2892 enableWidget(false, _cmbMaxresLineEdit); 2893 enableWidget(false, _cmbMaxdisplacementLineEdit); 2875 2894 enableWidget(false, _cmbSamplSpinBox); 2876 2895 } -
trunk/BNC/src/bncwindow.h
r10420 r10451 219 219 QTableWidget* _cmbTable; 220 220 QLineEdit* _cmbMaxresLineEdit; 221 QLineEdit* _cmbMaxdisplacementLineEdit; 221 222 QComboBox* _cmbMethodComboBox; 222 223 QSpinBox* _cmbSamplSpinBox; -
trunk/BNC/src/combination/bnccomb.cpp
r10449 r10451 176 176 newAC->name = hlp[1]; 177 177 newAC->weightFactor = hlp[2].toDouble(); 178 newAC->isAPC = bool(newAC->mountPoint.mid(0,4) == "SSRA"); 178 newAC->excludeSats = hlp[3].split(QRegExp("[ ,]"), QString::SkipEmptyParts); 179 newAC->isAPC = bool(newAC->mountPoint.mid(0,4) == "SSRA"); 179 180 QMapIterator<char, unsigned> itSys(_cmbSysPrn); 180 181 // init … … 182 183 itSys.next(); 183 184 char sys = itSys.key(); 184 if (!_masterOrbitAC.contains(sys)) { 185 if (!_masterOrbitAC.contains(sys) && 186 !newAC->excludeSats.contains(QString(sys), Qt::CaseSensitive)) { 185 187 _masterOrbitAC[sys] = newAC->name; 186 188 _masterIsAPC[sys] = newAC->isAPC; … … 299 301 // Maximal Residuum 300 302 // ---------------- 301 _MAXRES = settings.value("cmbMaxres").toDouble(); 302 if (_MAXRES <= 0.0) { 303 _MAXRES = 999.0; 304 } 303 _MAX_RES = settings.value("cmbMaxres").toDouble(); 304 if (_MAX_RES <= 0.0) { 305 _MAX_RES = 999.0; 306 } 307 308 // Maximal Displacement 309 // -------------------- 310 _MAX_DISPLACEMENT = settings.value("cmbMaxdisplacement").toDouble(); 311 if (_MAX_DISPLACEMENT <= 0.0) { 312 _MAX_DISPLACEMENT = 2.0; 313 } 314 305 315 _newCorr = 0; 306 316 } … … 395 405 // ---------------------- 396 406 QString acName; 407 QStringList excludeSats; 397 408 QListIterator<cmbAC*> icAC(_ACs); 398 409 while (icAC.hasNext()) { … … 400 411 if (AC->mountPoint == staID) { 401 412 acName = AC->name; 413 excludeSats = AC->excludeSats; 402 414 break; 403 415 } 404 416 } 405 if (acName.isEmpty() ) {417 if (acName.isEmpty() || excludeSat(orbCorr._prn, excludeSats)) { 406 418 continue; 407 419 } … … 431 443 // ---------------------- 432 444 QString acName; 445 QStringList excludeSats; 433 446 QListIterator<cmbAC*> icAC(_ACs); 434 447 while (icAC.hasNext()) { … … 436 449 if (AC->mountPoint == staID) { 437 450 acName = AC->name; 451 excludeSats = AC->excludeSats; 438 452 break; 439 453 } 440 454 } 441 if (acName.isEmpty() ) {455 if (acName.isEmpty() || excludeSat(satCodeBias._prn, excludeSats)) { 442 456 continue; 443 457 } … … 480 494 // ---------------------- 481 495 QString acName; 496 QStringList excludeSats; 482 497 bool isAPC; 483 498 QString staID(newClk._staID.c_str()); … … 487 502 if (AC->mountPoint == staID) { 488 503 acName = AC->name; 504 QStringList excludeSats; 489 505 isAPC = AC->isAPC; 490 506 break; 491 507 } 492 508 } 493 if (acName.isEmpty() || isAPC != _masterIsAPC[sys]) { 509 if (acName.isEmpty() || 510 isAPC != _masterIsAPC[sys] || 511 excludeSat(newClk._prn, excludeSats)) { 494 512 continue; 495 513 } … … 962 980 << " Maximum Residuum " << maxRes << ' ' 963 981 << corrs(sys)[maxResIndex-1]->_acName << ' ' << corrs(sys)[maxResIndex-1]->_prn.mid(0,3); 964 if (maxRes > _MAX RES) {982 if (maxRes > _MAX_RES) { 965 983 for (int iPar = 1; iPar <= _params[sys].size(); iPar++) { 966 984 cmbParam* pp = _params[sys][iPar-1]; … … 1368 1386 << corrs(sys)[maxResIndex-1]->_acName << ' ' << corrs(sys)[maxResIndex-1]->_prn.mid(0,3); 1369 1387 1370 if (maxRes > _MAX RES) {1388 if (maxRes > _MAX_RES) { 1371 1389 out << " Outlier" << "\n"; 1372 1390 delete corrs(sys)[maxResIndex-1]; … … 1398 1416 t_irc bncComb::checkOrbits(bncTime epoTime, char sys, QTextStream& out) { 1399 1417 1400 const double MAX_DISPLACEMENT = 2.0;1401 1402 1418 // Switch to last ephemeris (if possible) 1403 1419 // -------------------------------------- … … 1500 1516 else if (corr == maxDiff[prn]) { 1501 1517 double norm = corr->_diffRao.NormFrobenius(); 1502 if (norm > MAX_DISPLACEMENT) {1518 if (norm > _MAX_DISPLACEMENT) { 1503 1519 out << epoTime.datestr().c_str() << " " 1504 1520 << epoTime.timestr().c_str() << " " … … 1577 1593 } 1578 1594 } 1595 1596 // 1597 //////////////////////////////////////////////////////////////////////////// 1598 bool bncComb::excludeSat(const t_prn& prn, const QStringList excludeSats) const { 1599 QStringListIterator it(excludeSats); 1600 while (it.hasNext()) { 1601 string prnStr = it.next().toLatin1().data(); 1602 if (prnStr == prn.toString() || prnStr == prn.toString().substr(0,1)) { 1603 return true; 1604 } 1605 } 1606 return false; 1607 } -
trunk/BNC/src/combination/bnccomb.h
r10275 r10451 98 98 QString name; 99 99 double weightFactor; 100 QStringList excludeSats; 100 101 bool isAPC; 101 102 QMap<char, unsigned> numObs; … … 153 154 std::vector<t_clkCorr> _clkCorr; 154 155 }; 155 156 157 156 158 157 class cmbRefSig { … … 245 244 void switchToLastEph(t_eph* lastEph, cmbCorr* corr); 246 245 t_irc checkOrbits(bncTime epoTime, char sys, QTextStream& out); 246 bool excludeSat(const t_prn& prn, const QStringList excludeSats) const; 247 247 QVector<cmbCorr*>& corrs(char sys) {return _buffer[sys].corrs;} 248 248 … … 257 257 bncAntex* _antex; 258 258 bncBiasSnx* _bsx; 259 double _MAXRES; 259 double _MAX_RES; 260 double _MAX_DISPLACEMENT; 260 261 e_method _method; 261 262 int _cmbSampl;
Note:
See TracChangeset
for help on using the changeset viewer.