- Timestamp:
- Jun 22, 2026, 12:48:31 PM (3 days ago)
- Location:
- trunk/BNC
- Files:
-
- 33 edited
-
CHANGELOG.md (modified) (1 diff)
-
Example_Configs/01_RinexObs.bnc (modified) (1 diff)
-
Example_Configs/02_RinexEph.bnc (modified) (1 diff)
-
Example_Configs/03_BrdcCorr.bnc (modified) (1 diff)
-
Example_Configs/04_RinexConcat.bnc (modified) (1 diff)
-
Example_Configs/05_RinexQC.bnc (modified) (1 diff)
-
Example_Configs/06_RTK.bnc (modified) (1 diff)
-
Example_Configs/07_FeedEngine.bnc (modified) (1 diff)
-
Example_Configs/08_PPP.bnc (modified) (1 diff)
-
Example_Configs/09_PPPNet.bnc (modified) (1 diff)
-
Example_Configs/10_PPPQuickStart.bnc (modified) (4 diffs)
-
Example_Configs/11_PPPPostProc.bnc (modified) (1 diff)
-
Example_Configs/12_PPPOsm.bnc (modified) (1 diff)
-
Example_Configs/13_PPPGalHAS.bnc (modified) (1 diff)
-
Example_Configs/14_SaveSp3.bnc (modified) (1 diff)
-
Example_Configs/15_Sp3ETRFPPP.bnc (modified) (1 diff)
-
Example_Configs/16_Upload.bnc (modified) (1 diff)
-
Example_Configs/17_Combi.bnc (modified) (1 diff)
-
Example_Configs/18_CombiPPP.bnc (modified) (1 diff)
-
Example_Configs/19_UploadEph.bnc (modified) (1 diff)
-
Example_Configs/20_UploadRaw.bnc (modified) (1 diff)
-
Example_Configs/21_CompareSp3.bnc (modified) (1 diff)
-
Example_Configs/22_Empty.bnc (modified) (1 diff)
-
Example_Configs/29_PPPAR_CNES.bnc (modified) (1 diff)
-
Example_Configs/30_PPPAR_WHU.bnc (modified) (1 diff)
-
src/PPP/pppSatObs.cpp (modified) (1 diff)
-
src/bnchelp.html (modified) (3 diffs)
-
src/bncmain.cpp (modified) (1 diff)
-
src/bncwindow.cpp (modified) (2 diffs)
-
src/pppMain.cpp (modified) (1 diff)
-
src/pppOptions.h (modified) (1 diff)
-
src/pppWidgets.cpp (modified) (3 diffs)
-
src/pppWidgets.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/CHANGELOG.md
r10935 r10942 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 - 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 - FIXED: Handling of ionospheric constraints [(#220)](https://software.rtcm-ntrip.org/ticket/220) 5 7 6 8 -
trunk/BNC/Example_Configs/01_RinexObs.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0161 160 maxResL1=0.03 162 161 minEle=0 -
trunk/BNC/Example_Configs/02_RinexEph.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0161 160 maxResL1=0.03 162 161 minEle=0 -
trunk/BNC/Example_Configs/03_BrdcCorr.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/04_RinexConcat.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/05_RinexQC.bnc
r10877 r10942 169 169 mapWinDotSize= 170 170 maxResC1=3.0 171 maxResGIM=3.0171 =3.0 172 172 maxResL1=0.03 173 173 minEle=0 -
trunk/BNC/Example_Configs/06_RTK.bnc
r10896 r10942 192 192 mapWinDotSize= 193 193 maxResC1=4.0 194 maxResGIM=3.0194 =3.0 195 195 maxResL1=0.03 196 196 minEle=0 -
trunk/BNC/Example_Configs/07_FeedEngine.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/08_PPP.bnc
r10753 r10942 158 158 mapWinDotSize=6 159 159 maxResC1=3.0 160 maxResGIM=5.0160 =5.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/09_PPPNet.bnc
r10753 r10942 158 158 mapWinDotSize=6 159 159 maxResC1=3.0 160 maxResGIM=5.0160 =5.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/10_PPPQuickStart.bnc
r10876 r10942 33 33 miscPort= 34 34 miscScanRTCM=0 35 mountPoints=//Example:Configs@euref-ip.net:2101/WTZR00DEU0 RTCM_3.3 DEU 49.14 12.88 no 2, //Example:Configs@products.igs-ip.net:2101/BCEP00BKG0 RTCM_3 DEU 50.09 8.66 no 2, //Example:Configs@products.igs-ip.net:2101/SSRA0 0CNE1 RTCM_3.1FRA 43.56 1.48 no 235 mountPoints=//Example:Configs@euref-ip.net:2101/WTZR00DEU0 RTCM_3.3 DEU 49.14 12.88 no 2, //Example:Configs@products.igs-ip.net:2101/BCEP00BKG0 RTCM_3 DEU 50.09 8.66 no 2, //Example:Configs@products.igs-ip.net:2101/SSRA01CAS1 RTCM_3.1 CHN 40.07 116.28 no 2 36 36 ntripVersion=2 37 37 onTheFlyInterval=no … … 107 107 sslClientCertPath= 108 108 sslIgnoreErrors=0 109 startTab=1 3110 statusTab= 3109 startTab=11 110 statusTab=0 111 111 trafo_dx= 112 112 trafo_dxr= … … 149 149 biasMount= 150 150 blqFile=Input/BNC.BLQ 151 constraints= no151 constraints=Ionosphere: pseudo-obs 152 152 corrFile= 153 corrMount=SSRA00C NE1153 corrMount=SSRA00CAS1 154 154 corrWaitTime=5 155 155 crdFile=Input/BNC_IGS20.CRD … … 169 169 mapWinDotSize=6 170 170 maxResC1=3.0 171 maxResGIM=5.0171 =5.0 172 172 maxResL1=0.03 173 173 minEle=7 -
trunk/BNC/Example_Configs/11_PPPPostProc.bnc
r10753 r10942 158 158 mapWinDotSize=6 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/12_PPPOsm.bnc
r10753 r10942 158 158 mapWinDotSize=5 159 159 maxResC1=10.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=5 -
trunk/BNC/Example_Configs/13_PPPGalHAS.bnc
r10753 r10942 158 158 mapWinDotSize=6 159 159 maxResC1=3.0 160 maxResGIM=5.0160 =5.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/14_SaveSp3.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/15_Sp3ETRFPPP.bnc
r10753 r10942 158 158 mapWinDotSize=6 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/16_Upload.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/17_Combi.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/18_CombiPPP.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=5.0160 =5.0 161 161 maxResL1=0.03 162 162 minEle=7 -
trunk/BNC/Example_Configs/19_UploadEph.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/20_UploadRaw.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/21_CompareSp3.bnc
r10753 r10942 158 158 mapWinDotSize= 159 159 maxResC1=3.0 160 maxResGIM=3.0160 =3.0 161 161 maxResL1=0.03 162 162 minEle=0 -
trunk/BNC/Example_Configs/22_Empty.bnc
r10753 r10942 157 157 mapWinDotSize= 158 158 maxResC1=3.0 159 maxResGIM=3.0159 =3.0 160 160 maxResL1=0.03 161 161 minEle=0 -
trunk/BNC/Example_Configs/29_PPPAR_CNES.bnc
r10875 r10942 170 170 mapWinDotSize=6 171 171 maxResC1=3.0 172 maxResGIM=5.0172 =5.0 173 173 maxResL1=0.03 174 174 minEle=10 -
trunk/BNC/Example_Configs/30_PPPAR_WHU.bnc
r10875 r10942 170 170 mapWinDotSize=6 171 171 maxResC1=3.0 172 maxResGIM=5.0172 =5.0 173 173 maxResL1=0.03 174 174 minEle=10 -
trunk/BNC/src/PPP/pppSatObs.cpp
r10938 r10942 393 393 retVal += it->second * it->second * OPT->_maxResL1 * OPT->_maxResL1; 394 394 } 395 if (LC._type == t_lc::GIM) {396 retVal = OPT->_maxResGIM * OPT->_maxResGIM + OPT->_maxResGIM * OPT->_maxResGIM;397 }398 395 399 396 retVal = sqrt(retVal); -
trunk/BNC/src/bnchelp.html
r10940 r10942 201 201 2.13.2.8 <a href=#pppseeding>Seeding</a><br> 202 202 2.13.2.9 <a href=#pppconstraints>Constraints</a><br> 203 2.13.2.9.1 <a href=#ppppseudogimobs>GIM Pseudo Observations</a><br> 203 2.13.2.9.0 <a href=#ppppseudogimobs>GIM Pseudo Observations - How it works</a><br> 204 2.13.2.9.1 <a href=#ppppseudogimobssigma>GIM Pseudo Observations Sigma</a><br> 204 205 2.13.2.10 <a href=#pppar>PPP-AR</a><br> 205 206 2.13.2.10.0 <a href=#ppparmethod>Algorithm Description</a><br> … … 4501 4502 <p><h4 id="pppconstraints">2.13.2.9 Constraints - optional</h4></p> 4502 4503 <p> 4503 Specify, whether ionospheric constraints in form of pseudo-observations shall be added. 4504 Please note, this is only valid, if no ionosphere-free linear-combination is used and VTEC informations is part of the SSR stream. 4505 Furthermore, it would be only helpful as soon as the ionosphere information is more accurate than the code data accuracy. 4506 Hence, currently this option is not recommended to use! 4507 </p> 4508 4509 <p><h4 id="ppppseudogimobs">2.13.2.9.2 GIM Pseudo Observations - optional</h4></p> 4504 Specify, whether ionospheric constraints in form of pseudo-observations shall be added to an uncombined PPP 4505 solution ('Pi&Li', 'Pi', 'P1&L1' or 'P1', see <a href=#pppobs>Section 2.13.2.1</a>). This is sometimes 4506 called 'PPP with pseudo-observations for STEC'. 4507 </p> 4508 <p><h4 id="ppppseudogimobs">2.13.2.9.0 GIM Pseudo Observations - How it works</h4></p> 4509 <p> 4510 When ionospheric constraints are activated, BNC derives a slant ionospheric delay (STEC) for every satellite from VTEC informations - taken 4511 from an Ionosphere stream/file (<a href=#pppionostream>Section 2.13.1.6</a>, <a href=#pppionofile>Section 4512 2.13.1.7</a>) or from the Corrections stream/file if no dedicated Ionosphere source is specified. For each GNSS 4513 system, one satellite is chosen as 'reference satellite' (initially the one with the highest elevation), and one 4514 satellite-differenced pseudo-observation per remaining satellite is added to the Kalman filter: 4515 </p> 4516 <p> 4517 STEC(reference satellite) − STEC(satellite) = ION(reference satellite) − ION(satellite) 4518 </p> 4519 <p> 4520 where ION(satellite) is the per-satellite ionospheric delay state already estimated by the uncombined PPP filter. 4521 This single difference constrains the relative ionospheric delay between satellites without removing the 4522 receiver's own freedom to estimate it from code and phase data. The reference satellite is kept as long as it 4523 stays in view; a new one is selected only once the previous reference satellite disappears from the 4524 observations, which avoids spurious jumps in the constraint from one epoch to the next. 4525 </p> 4526 <p> 4527 Pseudo-observations are treated as a soft constraint: they contribute to the solution with a weight derived from 4528 'Sigma GIM' (see below) but are never rejected as outliers, regardless of their residual size. They are also 4529 fully independent of ambiguity resolution (<a href=#pppar>Section 2.13.2.10</a>), which only ever resolves 4530 carrier-phase ambiguities. 4531 </p> 4532 <p> 4533 Please note that this option is only valid if no ionosphere-free linear combination is used and VTEC informations 4534 are actually available. Without VTEC data, no pseudo-observations are added and the PPP solution falls back to 4535 estimating per-satellite ionospheric delays from code and phase data alone. The pseudo-observations are only 4536 helpful once the ionosphere information is more accurate than the code data accuracy. 4537 </p> 4538 4539 <p><h4 id="ppppseudogimobssigma">2.13.2.9.1 GIM Pseudo Observations Sigma - optional</h4></p> 4510 4540 <p> 4511 4541 Enter a 'Sigma GIM' for pseudo observations regarding the Ionosphere in meters. 4512 4542 The bigger the sigma you enter, the less the contribution of GIM Pseudo observations to a PPP solutions 4513 4543 based on a combination of code and phase data. '5.0' meters is likely to be an appropriate choice. 4514 </p>4515 <p>4516 Specify a maximum for residuals 'Max Res GIM' for pseudo observations regarding the Ionosphere in a PPP solution.4517 '5.0' meters may be an appropriate choice for that.4518 If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.4519 4544 </p> 4520 4545 <p><h4 id="pppar">2.13.2.10 PPP-AR - optional</h4></p> … … 6742 6767 PPP/constraints {Specify, whether ionospheric constraints in form of pseudo-observations shall be added [character string: no|Ionosphere: pseudo-obs]} 6743 6768 PPP/sigmaGIM {Sigma for GIM pseudo observations in meters [floating-point number]} 6744 PPP/maxResGIM {Maximal residuum for GIM pseudo observations in meters [floating-point number]}6745 6769 PPP/arGPS {Ambiguities for GPS should be resolved: [integer number: 0=no,2=yes]} 6746 6770 PPP/arGalileo {Ambiguities for Galileo should be resolved: [integer number: 0=no,2=yes]} -
trunk/BNC/src/bncmain.cpp
r10914 r10942 280 280 " PPP/constraints {Specify, whether ionospheric constraints in form of pseudo-observations shall be added [character string: no|Ionosphere: pseudo-obs]}\n" 281 281 " PPP/sigmaGIM {Sigma for GIM pseudo observations in meters [floating-point number]}\n" 282 " PPP/maxResGIM {Maximal residuum for GIM pseudo observations in meters [floating-point number]}\n"283 282 " PPP/arGPS {Ambiguities for GPS should be resolved: [integer number: 0=no,2=yes]}\n" 284 283 " PPP/arGalileo {Ambiguities for Galileo should be resolved: [integer number: 0=no,2=yes]}\n" -
trunk/BNC/src/bncwindow.cpp
r10914 r10942 1132 1132 ++ir; 1133 1133 pppLayout2->addItem(new QSpacerItem(8 * ww, 0), ir, 2); 1134 pppLayout2->addWidget(new QLabel("Max Res GIM"), ir, 3, Qt::AlignLeft);1135 pppLayout2->addWidget(_pppWidgets._maxResGIM, ir, 4); _pppWidgets._maxResGIM->setMaximumWidth(8 * ww);1136 1134 pppLayout2->addWidget(new QLabel("Seeding (sec)"), ir, 6, Qt::AlignLeft); 1137 1135 pppLayout2->addWidget(_pppWidgets._seedingTime, ir, 7); _pppWidgets._seedingTime->setMaximumWidth(8 * ww); … … 1676 1674 _pppWidgets._maxResC1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS C1 code observations in a PPP solution. '2.0' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Res C1 = 3.0' <i>[key: PPP/maxResC1]</i></p>")); 1677 1675 _pppWidgets._maxResL1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS L1 phase observations in a PPP solution. '0.02' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Res L1 = 0.03' <i>[key: PPP/maxResL1]</i></p>")); 1678 _pppWidgets._maxResGIM->setWhatsThis(tr("<p>Specify a maximum for residuals from GIM pseudo observations in a PPP solution. '5.0' meters may be an appropriate choice for that.</p><p>If the maximum is exceeded, contributions from the corresponding observation will be ignored in the PPP solution.</p><p>Default is an empty option field, meaning<br>'Max Res GIM = 3.0' <i>[key: PPP/maxResGIM]</i></p>"));1679 1676 _pppWidgets._eleWgtCode->setWhatsThis(tr("<p>Tic 'Ele Wgt Code' to use satellite Elevation depending Weights for Code observations in the PPP solution. <i>[key: PPP/eleWgtCode]</i></p>")); 1680 1677 _pppWidgets._eleWgtPhase->setWhatsThis(tr("<p>Tic 'Ele Wgt Phase' to use satellite Elevation depending Weights for Phase observations in the PPP solution. <i>[key: PPP/eleWgtPhase]</i></p>")); -
trunk/BNC/src/pppMain.cpp
r10791 r10942 249 249 opt->_maxResC1 = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 3.0; 250 250 opt->_maxResL1 = settings.value("PPP/maxResL1").toDouble(); if (opt->_maxResL1 <= 0.0) opt->_maxResL1 = 0.03; 251 opt->_maxResGIM = settings.value("PPP/maxResGIM").toDouble(); if (opt->_maxResGIM <= 0.0) opt->_maxResGIM = 3.0;252 251 opt->_eleWgtCode = (settings.value("PPP/eleWgtCode").toInt() != 0); 253 252 opt->_eleWgtPhase = (settings.value("PPP/eleWgtPhase").toInt() != 0); -
trunk/BNC/src/pppOptions.h
r10791 r10942 85 85 double _maxResC1; 86 86 double _maxResL1; 87 double _maxResGIM;88 87 bool _eleWgtCode; 89 88 bool _eleWgtPhase; -
trunk/BNC/src/pppWidgets.cpp
r10880 r10942 94 94 _maxResC1 = new QLineEdit(); _maxResC1 ->setObjectName("PPP/maxResC1"); _widgets << _maxResC1; 95 95 _maxResL1 = new QLineEdit(); _maxResL1 ->setObjectName("PPP/maxResL1"); _widgets << _maxResL1; 96 _maxResGIM = new QLineEdit(); _maxResGIM ->setObjectName("PPP/maxResGIM"); _widgets << _maxResGIM;97 96 _minObs = new QSpinBox(); _minObs ->setObjectName("PPP/minObs"); _widgets << _minObs; 98 97 _minEle = new QSpinBox(); _minEle ->setObjectName("PPP/minEle"); _widgets << _minEle; … … 301 300 setWidgetValue(_maxResC1, "3.0"); 302 301 setWidgetValue(_maxResL1, "0.03"); 303 setWidgetValue(_maxResGIM, "3.0");304 302 setWidgetValue(_seedingTime, "0"); 305 303 … … 420 418 if (pseudoObsIono) { 421 419 _sigmaGIM->setEnabled(true); 422 _maxResGIM->setEnabled(true);423 420 } else { 424 421 _sigmaGIM->setEnabled(false); 425 _maxResGIM->setEnabled(false);426 422 } 427 423 -
trunk/BNC/src/pppWidgets.h
r10791 r10942 80 80 QLineEdit* _maxResC1; 81 81 QLineEdit* _maxResL1; 82 QLineEdit* _maxResGIM;83 82 QCheckBox* _eleWgtCode; 84 83 QCheckBox* _eleWgtPhase;
Note:
See TracChangeset
for help on using the changeset viewer.
