Changeset 10945 in ntrip
- Timestamp:
- Jun 24, 2026, 12:43:35 PM (26 hours ago)
- Location:
- trunk/BNC
- Files:
-
- 9 edited
-
CHANGELOG.md (modified) (1 diff)
-
src/bnchelp.html (modified) (9 diffs)
-
src/bncmain.cpp (modified) (1 diff)
-
src/bncwindow.cpp (modified) (6 diffs)
-
src/bncwindow.h (modified) (1 diff)
-
src/rinex/reqcanalyze.cpp (modified) (3 diffs)
-
src/rinex/reqcanalyze.h (modified) (1 diff)
-
src/rinex/reqcedit.cpp (modified) (4 diffs)
-
src/rinex/reqcedit.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/CHANGELOG.md
r10942 r10945 3 3 - ADDED: PPP-AR Algorithm description is now part of BNCs help contents 4 4 - ADDED: L1C/B (RINEX code: '1E') in QZSS Signal ID Mapping 5 - ADDED: Minimum Elevation parameter to BNC's RINEX Editing & QC feature [(#195)](https://software.rtcm-ntrip.org/ticket/195) 5 6 - FIXED: BNC is now able to work with com ports with higher numbers, e.g. COM11 or COM17 [(#205)](https://software.rtcm-ntrip.org/ticket/205) 6 7 - FIXED: Handling of ionospheric constraints [(#220)](https://software.rtcm-ntrip.org/ticket/220) -
trunk/BNC/src/bnchelp.html
r10944 r10945 128 128 2.6.2 <a href="#reqcinp">Input Files</a><br> 129 129 2.6.3 <a href="#reqcout">Output Files</a><br> 130 2.6.4 <a href="#reqclog">Logfiles</a><br> 131 2.6.5 <a href="#reqcplots">Plots for Signals</a><br> 132 2.6.6 <a href="#reqcdir">Directory for Plots</a><br> 133 2.6.7 <a href="#reqcedit">Set Edit Options</a><br> 134 2.6.8 <a href="#reqccommand">Command Line, No Window</a><br> 130 2.6.4 <a href="#reqcminele">Minimum Elevation</a><br> 131 2.6.5 <a href="#reqclog">Logfiles</a><br> 132 2.6.6 <a href="#reqcplots">Plots for Signals</a><br> 133 2.6.7 <a href="#reqcdir">Directory for Plots</a><br> 134 2.6.8 <a href="#reqcedit">Set Edit Options</a><br> 135 2.6.9 <a href="#reqccommand">Command Line, No Window</a><br> 135 136 2.7 <a href="#sp3comp"><b>SP3 Comparison</b></a><br> 136 137 2.7.1 <a href="#sp3input">Input SP3 Files</a><br> … … 318 319 <tr><td>7</td><td>BNC's 'Network' panel configured to ignore eventually occurring SSL error messages</td><td>2.2.2</td></tr> 319 320 <tr><td>8</td><td>BNC translating incoming RTCM Version 3 Observation streams to 15 min RINEX Version 4 Observation files</td><td>2.4</td></tr> 320 <tr><td>9</td><td>Example for creating RINEX quality check analysis graphics output with BNC</td><td>2.6. 5</td></tr>321 <tr><td>10</td><td>Example for satellite availability, elevation and PDOP plots as a result of a RINEX quality check analysis with BNC</td><td>2.6. 5</td></tr>322 <tr><td>11</td><td>Sky plot examples for multipath, part of RINEX quality check analysis with BNC</td><td>2.6. 5</td></tr>323 <tr><td>12</td><td>Sky plot examples for signal-to-noise ratio, part of RINEX quality check analysis with BNC</td><td>2.6. 5</td></tr>324 <tr><td>13</td><td>Example for BNC's 'RINEX Editing Options' window</td><td>2.6. 7</td></tr>325 <tr><td>14</td><td>Example for RINEX file concatenation with BNC</td><td>2.6. 7</td></tr>321 <tr><td>9</td><td>Example for creating RINEX quality check analysis graphics output with BNC</td><td>2.6.6</td></tr> 322 <tr><td>10</td><td>Example for satellite availability, elevation and PDOP plots as a result of a RINEX quality check analysis with BNC</td><td>2.6.6</td></tr> 323 <tr><td>11</td><td>Sky plot examples for multipath, part of RINEX quality check analysis with BNC</td><td>2.6.6</td></tr> 324 <tr><td>12</td><td>Sky plot examples for signal-to-noise ratio, part of RINEX quality check analysis with BNC</td><td>2.6.6</td></tr> 325 <tr><td>13</td><td>Example for BNC's 'RINEX Editing Options' window</td><td>2.6.8</td></tr> 326 <tr><td>14</td><td>Example for RINEX file concatenation with BNC</td><td>2.6.8</td></tr> 326 327 <tr><td>15</td><td>Example for comparing two SP3 files with satellite orbit and clock data using BNC</td><td>2.7</td></tr> 327 328 <tr><td>16</td><td>Graphical results from an example comparison of two SP3 files with satellite orbit and clock data using BNC</td><td>2.7.3</td></tr> … … 1926 1927 </p> 1927 1928 1928 <p><h4 id="reqclog">2.6.4 Logfile - optional</h4></p> 1929 <p><h4 id="reqcminele">2.6.4 Minimum Elevation - optional</h4></p> 1930 <p> 1931 Select a minimum for satellite elevation angles. Observations from a satellite not reaching or exceeding this minimum 1932 elevation will be excluded, no matter whether 'Action' is set to 'Edit/Concatenate' or 'Analyze'. Determining a satellite's 1933 elevation requires specifying a RINEX Navigation input file, see section 'Input Files'. 1934 </p> 1935 <p> 1936 Default is '0 deg', meaning that no elevation mask is applied and all observations are used regardless of the involved satellite's elevation angle. 1937 </p> 1938 1939 <p><h4 id="reqclog">2.6.5 Logfile - optional</h4></p> 1929 1940 <p> 1930 1941 Specify the name of a logfile to save information on RINEX file Editing/Concatenation or Analysis. Default is an empty option field, … … 2254 2265 </p> 2255 2266 2256 <p><h4 id="reqcplots">2.6. 5Plots for Signals - mandatory if 'Action' is set to 'Analyze'</h4></p>2267 <p><h4 id="reqcplots">2.6.6 Plots for Signals - mandatory if 'Action' is set to 'Analyze'</h4></p> 2257 2268 <p> 2258 2269 BNC can produce plots for multipath, signal-to-noise ratio, satellite availability, satellite elevation, and PDOP values. … … 2292 2303 <p>Figure 12: Sky plot examples for signal-to-noise ratio, part of RINEX quality check analysis with BNC</p> 2293 2304 2294 <p><h4 id="reqcdir">2.6. 6Directory for Plots - optional if 'Action' is set to 'Analyze'</h4></p>2305 <p><h4 id="reqcdir">2.6.7 Directory for Plots - optional if 'Action' is set to 'Analyze'</h4></p> 2295 2306 <p> 2296 2307 If 'Analyze' is selected, specifying the path to a directory where plot files will be saved is optional. … … 2299 2310 </p> 2300 2311 2301 <p><h4 id="reqcedit">2.6. 7Set Edit Options - mandatory if 'Action' is set to 'Edit/Concatenate'</h4></p>2312 <p><h4 id="reqcedit">2.6.8 Set Edit Options - mandatory if 'Action' is set to 'Edit/Concatenate'</h4></p> 2302 2313 <p> 2303 2314 Once the 'Edit/Concatenate' action is selected, you have to 'Set Edit Options'. … … 2353 2364 <p>Figure 14: Example for RINEX file concatenation with BNC</p> 2354 2365 2355 <p><h4 id="reqccommand">2.6. 8Command Line, No Window - optional</h4></p>2366 <p><h4 id="reqccommand">2.6.9 Command Line, No Window - optional</h4></p> 2356 2367 <p> 2357 2368 BNC applies options from the configuration file but allows updating every one of them on the command line … … 2431 2442 <tr><td>reqcOutObsFile</td><td></td><td>RINEX Observation output file</td></tr> 2432 2443 <tr><td>reqcOutNavFile</td><td></td><td>RINEX Navigation output file</td></tr> 2444 <tr><td>reqcMinEle</td><td></td><td>Minimum Elevation</td></tr> 2433 2445 <tr><td>reqcOutLogFile</td><td></td><td>Logfile</td></tr> 2434 2446 <tr><td>reqcLogSummaryOnly</td><td></td><td>Summary of Logfile</td></tr> … … 6706 6718 reqcOutObsFile {Output observations file, full path [character string]} 6707 6719 reqcOutNavFile {Output navigation file, full path [character string]} 6720 reqcMinEle {Minimum satellite elevation in degrees [integer number: 0-90]} 6708 6721 reqcOutLogFile {Output logfile, full path [character string]} 6709 6722 reqcLogSummaryOnly {Output only summary of logfile [integer number: 0=no,2=yes]} -
trunk/BNC/src/bncmain.cpp
r10942 r10945 166 166 " reqcOutObsFile {Output observations file, full path [character string]}\n" 167 167 " reqcOutNavFile {Output navigation file, full path [character string]}\n" 168 " reqcMinEle {Minimum satellite elevation in degrees [integer number: 0-90]}\n" 168 169 " reqcOutLogFile {Output logfile, full path [character string]}\n" 169 170 " reqcLogSummaryOnly {Output only summary of logfile [integer number: 0=no,2=yes]}\n" -
trunk/BNC/src/bncwindow.cpp
r10942 r10945 1266 1266 _reqcLogSummaryOnly->setCheckState(Qt::CheckState(settings.value("reqcLogSummaryOnly").toInt())); 1267 1267 1268 _reqcMinEle = new QSpinBox(); 1269 _reqcMinEle->setMinimum(0); 1270 _reqcMinEle->setMaximum(90); 1271 _reqcMinEle->setSingleStep(1); 1272 _reqcMinEle->setSuffix(" deg"); 1273 _reqcMinEle->setValue(settings.value("reqcMinEle").toInt()); 1274 1268 1275 ir = 0; 1269 1276 reqcLayout->addWidget(new QLabel("RINEX file editing, concatenation and quality check.<br>"), ir, 0, 1, 8); … … 1293 1300 reqcLayout->addWidget(new QLabel(" Nav"), ir, 4); 1294 1301 ++ir; 1302 reqcLayout->addWidget(new QLabel("Minimum Elevation"), ir, 0); 1303 reqcLayout->addWidget(_reqcMinEle, ir, 1); 1304 ++ir; 1295 1305 reqcLayout->addWidget(new QLabel("Logfile"), ir, 0); 1296 1306 reqcLayout->addWidget(_reqcOutLogLineEdit, ir, 1); … … 1543 1553 _reqcOutNavLineEdit->setWhatsThis(tr("<p>Specify the full path to a RINEX Navigation output file.</p><p>Default is an empty option field, meaning that no RINEX Navigation output file will be produced. <i>[key: reqcOutNavFile]</i></p>")); 1544 1554 _reqcOutLogLineEdit->setWhatsThis(tr("<p>Specify the full path to a logfile.</p><p>Default is an empty option field, meaning that no 'RINEX Editing & QC' logfile will be produced. <i>[key: reqcOutLogFile]</i></p>")); 1555 _reqcMinEle->setWhatsThis(tr("<p>Select a Minimum satellite Elevation.</p><p>BNC will ignore an observation if the associated satellite Elevation does not reach or exceed this minimum. This requires a RINEX Navigation input file to compute satellite elevations.</p><p>Default is '0 deg' meaning that no elevation mask is applied. <i>[key: reqcMinEle]</i></p>")); 1545 1556 _reqcLogSummaryOnly->setWhatsThis(tr("<p>By default BNC produces a detailed 'Logfile' providing all information resulting from editing or analyzing RINEX data. If that is too much information, you can limit the logfile content to a short summary.</p><p>Tick 'Summary only' to suppress full logfile output and instead produce a logfile containing only summary information. <i>[key: reqcLogSummaryOnly]</i></p>")); 1546 1557 _reqcPlotDirLineEdit->setWhatsThis(tr("<p>Specify a directory for saving plots in PNG format.</p><p>Default is an empty option field, meaning that plots will not be saved on disk. <i>[key: reqcPlotDir]</i></p>")); … … 1893 1904 delete _reqcSkyPlotSignals; 1894 1905 delete _reqcLogSummaryOnly; 1906 delete _reqcMinEle; 1895 1907 delete _reqcEditOptionButton; 1896 1908 delete _sp3CompFileChooser; … … 2392 2404 settings.setValue("reqcSkyPlotSignals", _reqcSkyPlotSignals->text()); 2393 2405 settings.setValue("reqcLogSummaryOnly", _reqcLogSummaryOnly->checkState()); 2406 settings.setValue("reqcMinEle", _reqcMinEle->value()); 2394 2407 // SP3 Comparison 2395 2408 settings.setValue("sp3CompFile", _sp3CompFileChooser->fileName()); … … 3015 3028 enableWidget(enable, _reqcNavFileChooser); 3016 3029 enableWidget(enable, _reqcOutLogLineEdit); 3030 enableWidget(enable, _reqcMinEle); 3017 3031 enableWidget(enable && enable10, _reqcEditOptionButton); 3018 3032 enableWidget(enable && enable10, _reqcOutObsLineEdit); -
trunk/BNC/src/bncwindow.h
r10766 r10945 164 164 QLineEdit* _reqcSkyPlotSignals; 165 165 QCheckBox* _reqcLogSummaryOnly; 166 QSpinBox* _reqcMinEle; 166 167 167 168 qtFileChooser* _sp3CompFileChooser; -
trunk/BNC/src/rinex/reqcanalyze.cpp
r10630 r10945 68 68 _obsFileNames = settings.value("reqcObsFile").toString().split(",", Qt::SkipEmptyParts); 69 69 _navFileNames = settings.value("reqcNavFile").toString().split(",", Qt::SkipEmptyParts); 70 _minEle = settings.value("reqcMinEle").toDouble(); 70 71 _reqcPlotSignals = settings.value("reqcSkyPlotSignals").toString(); 71 72 _defaultSignalTypes << "G:1&2&5" << "R:1&2&3" << "J:1&2" << "E:1&5" << "S:1&5" << "C:2&6" << "I:5&9"; … … 209 210 t_qcSat& qcSat = qcEpo._qcSat[satObs._prn]; 210 211 setQcObs(qcEpo._epoTime, xyzSta, satObs, lastObsTime, qcSat); 212 if (qcSat._eleSet && qcSat._eleDeg < _minEle) { 213 qcEpo._qcSat.remove(satObs._prn); 214 continue; 215 } 211 216 updateQcSat(qcSat, _qcFile._qcSatSum[satObs._prn]); 212 217 } … … 986 991 double rho, eleSat, azSat; 987 992 topos(xyzSta(1), xyzSta(2), xyzSta(3), xc(1), xc(2), xc(3), rho, eleSat, azSat); 988 if (round(eleSat * 180.0/M_PI) >= 0.0) {993 if (round(eleSat * 180.0/M_PI) >= _minEle) { 989 994 numExpObs++; 990 995 } -
trunk/BNC/src/rinex/reqcanalyze.h
r10937 r10945 212 212 QVector<t_rnxObsFile*> _rnxObsFiles; 213 213 QStringList _navFileNames; 214 double _minEle; 214 215 QString _reqcPlotSignals; 215 216 QMap<char, QVector<char> > _signalTypes; -
trunk/BNC/src/rinex/reqcedit.cpp
r10630 r10945 73 73 } 74 74 _samplingRate = settings.value("reqcSampling").toString().split("sec").first().toDouble(); 75 _minEle = settings.value("reqcMinEle").toDouble(); 75 76 _begTime = bncTime(settings.value("reqcStartDateTime").toString().toLatin1().data()); 76 77 _endTime = bncTime(settings.value("reqcEndDateTime").toString().toLatin1().data()); … … 223 224 t_reqcEdit::initRnxObsFiles(_obsFileNames, _rnxObsFiles, _logStream); 224 225 226 // Read Ephemerides (needed to apply the elevation mask) 227 // ------------------------------------------------------ 228 if (_minEle > 0.0 && _ephs.isEmpty()) { 229 t_reqcEdit::readEphemerides(_navFileNames, _ephs, _logStream, _checkEph); 230 } 231 225 232 // Initialize output observation file 226 233 // ---------------------------------- … … 361 368 if (sec % (int(_samplingRate)*10) == 0) { 362 369 applyLLI(obsFile, epo); 370 if (_minEle > 0.0) { 371 applyElevationMask(obsFile, epo); 372 } 363 373 outObsFile.writeEpoch(epo); 364 374 } … … 518 528 519 529 _lli.clear(); 530 } 531 532 // Remove satellites below the minimum elevation angle 533 //////////////////////////////////////////////////////////////////////////// 534 void t_reqcEdit::applyElevationMask(const t_rnxObsFile* obsFile, 535 t_rnxObsFile::t_rnxEpo* epo) { 536 537 const ColumnVector& xyzSta = obsFile->xyz(); 538 if (xyzSta.size() != 3 || (xyzSta(1) == 0.0 && xyzSta(2) == 0.0 && xyzSta(3) == 0.0)) { 539 return; 540 } 541 542 std::vector<t_rnxObsFile::t_rnxSat> keptSats; 543 for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) { 544 const t_rnxObsFile::t_rnxSat& rnxSat = epo->rnxSat[iSat]; 545 546 t_eph* eph = 0; 547 for (int ie = 0; ie < _ephs.size(); ie++) { 548 if (_ephs[ie]->prn() == rnxSat.prn) { 549 eph = _ephs[ie]; 550 break; 551 } 552 } 553 if (eph) { 554 ColumnVector xc(6); 555 ColumnVector vv(3); 556 if (eph->getCrd(epo->tt, xc, vv, false) == success) { 557 double rho, eleSat, azSat; 558 topos(xyzSta(1), xyzSta(2), xyzSta(3), xc(1), xc(2), xc(3), rho, eleSat, azSat); 559 if (eleSat * 180.0/M_PI < _minEle) { 560 continue; 561 } 562 } 563 } 564 keptSats.push_back(rnxSat); 565 } 566 epo->rnxSat = keptSats; 520 567 } 521 568 -
trunk/BNC/src/rinex/reqcedit.h
r10630 r10945 63 63 void rememberLLI(const t_rnxObsFile* obsFile, const t_rnxObsFile::t_rnxEpo* epo); 64 64 void applyLLI(const t_rnxObsFile* obsFile, t_rnxObsFile::t_rnxEpo* epo); 65 void applyElevationMask(const t_rnxObsFile* obsFile, t_rnxObsFile::t_rnxEpo* epo); 65 66 void addRnxConversionDetails(const t_rnxObsFile* obsFile, QMap<QString, QString>& txtMap); 66 67 … … 76 77 double _rnxVersion; 77 78 double _samplingRate; 79 double _minEle; 78 80 bncTime _begTime; 79 81 bncTime _endTime;
Note:
See TracChangeset
for help on using the changeset viewer.
