Changeset 9538 in ntrip
- Timestamp:
- Nov 9, 2021, 3:37:15 PM (3 years ago)
- Location:
- trunk/BNC
- Files:
-
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/Example_Configs/01_RinexObs.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/02_RinexEph.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/03_BrdcCorr.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/04_RinexConcat.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/05_RinexQC.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/06_RTK.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/07_FeedEngine.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/08_PPP.bnc
r9444 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.02 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/09_PPPNet.bnc
r9444 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.02 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/10_PPPQuickStart.bnc
r9444 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.02 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/11_PPPPostProc.bnc
r9444 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.02 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/12_PPPOsm.bnc
r9444 r9538 168 168 sigmaGIM=4.0 169 169 sigmaL1=0.02 170 sigmaTz0=0.10171 170 snxtroAc= 172 171 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/13_SPPQuickStart.bnc
r9444 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.02 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/14_SaveSp3.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/15_Sp3ETRFPPP.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/16_Upload.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/17_Combi.bnc
r9424 r9538 168 168 sigmaGIM=4.0 169 169 sigmaL1=0.01 170 sigmaTz0=0.10171 170 snxtroAc= 172 171 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/18_CombiPPP.bnc
r9444 r9538 168 168 sigmaGIM=4.0 169 169 sigmaL1=0.02 170 sigmaTz0=0.10171 170 snxtroAc= 172 171 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/19_UploadEph.bnc
r9424 r9538 165 165 sigmaGIM=4.0 166 166 sigmaL1=0.01 167 sigmaTz0=0.10168 167 snxtroAc= 169 168 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/20_CompareSp3.bnc
r9424 r9538 166 166 sigmaGIM=4.0 167 167 sigmaL1=0.01 168 sigmaTz0=0.10169 168 snxtroAc= 170 169 snxtroIntr=1 hour -
trunk/BNC/Example_Configs/21_Empty.bnc
r9424 r9538 160 160 sigmaGIM=4.0 161 161 sigmaL1=0.01 162 sigmaTz0=0.10163 162 snxtroAc= 164 163 snxtroIntr=1 hour -
trunk/BNC/src/PPP/pppClient.cpp
r9537 r9538 232 232 } 233 233 } 234 if (_opt->_pseudoObsTropo) { 235 vector<t_pppSatObs*>::iterator it = obsVector.begin(); 236 while (it != obsVector.end()) { 237 t_pppSatObs* satObs = *it; 238 if (satObs->isReference()) { 239 satObs->setPseudoObsTropo(); 240 } 241 it++; 242 } 243 } 234 244 235 /* 245 236 vector<t_pppSatObs*>::iterator it = obsVector.begin(); -
trunk/BNC/src/PPP/pppFilter.cpp
r9537 r9538 212 212 usedLCs -= 1; // GIM not used 213 213 } 214 int hlpLCs = 0;215 if (OPT->_pseudoObsTropo) {216 hlpLCs = -1;217 }218 214 // max Obs 219 unsigned maxObs = obsVector.size() * (usedLCs + hlpLCs); 220 if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) { 221 maxObs += 1; 222 } 215 unsigned maxObs = obsVector.size() * usedLCs; 216 223 217 if (OPT->_pseudoObsIono && pseudoObsIonoAvailable) { 224 218 maxObs -= 1; // pseudo obs iono with respect to refSat … … 257 251 if (tLC == t_lc::Tz0) {continue;} 258 252 ++iObs; 259 usedObs.push_back(obs);260 usedTypes.push_back(tLC);261 for (unsigned iPar = 0; iPar < nPar; iPar++) {262 const t_pppParam* par = params[iPar];263 AA[iObs][iPar] = par->partial(_epoTime, obs, tLC, refPrn);264 }265 ll[iObs] = obs->obsValue(tLC) - obs->cmpValue(tLC) - DotProduct(_x0, AA.Row(iObs+1));266 PP[iObs] = 1.0 / (obs->sigma(tLC) * obs->sigma(tLC));267 }268 }269 }270 271 // pseudo Obs Tropo272 // ================273 if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) {274 bool _pseudoObsTropoConsidered = false;275 for (unsigned ii = 0; ii < obsVector.size(); ii++) {276 if (_pseudoObsTropoConsidered) {break;}277 t_pppSatObs* obs = obsVector[ii];278 for (unsigned jj = 0; jj < usedLCs; jj++) {279 const t_lc::type tLC = LCs[jj];280 if (tLC != t_lc::Tz0) {continue;}281 ++iObs;282 _pseudoObsTropoConsidered = true;283 253 usedObs.push_back(obs); 284 254 usedTypes.push_back(tLC); … … 756 726 usedLCs -= 1; // GIM not used 757 727 } 758 int hlpLCs = 0;759 if (OPT->_pseudoObsTropo) {760 hlpLCs = -1;761 }762 728 // max Obs 763 unsigned maxObs = obsVector.size() * (usedLCs + hlpLCs); 764 765 if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) { 766 maxObs += 1; 767 } 729 unsigned maxObs = obsVector.size() * usedLCs; 730 768 731 if (OPT->_pseudoObsIono && peseudoObsIono) { 769 732 maxObs -= 1; // pseudo obs iono with respect to refSat … … 791 754 } 792 755 } 793 // pseudo Obs Tropo 794 // ================ 795 if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) { 796 bool pseudoObsTropoConsidered = false; 797 for (unsigned ii = 0; ii < obsVector.size(); ii++) { 798 if (pseudoObsTropoConsidered) {break;} 799 t_pppSatObs* obs = obsVector[ii]; 800 for (unsigned jj = 0; jj < usedLCs; jj++) { 801 const t_lc::type tLC = LCs[jj]; 802 if (tLC != t_lc::Tz0) {continue;} 803 ++iObs; 804 pseudoObsTropoConsidered = true; 805 for (unsigned iPar = 0; iPar < nPar; iPar++) { 806 const t_pppParam* par = params[iPar]; 807 AA[iObs][iPar] = par->partial(_epoTime, obs, tLC, refPrn); 808 } 809 } 810 } 811 } 756 812 757 if (!iObs) { 813 758 continue; … … 888 833 realUsedLCs -= 1; 889 834 } 890 if (OPT->_pseudoObsTropo) { 891 realUsedLCs -= 1; 892 } 835 893 836 trafoObs += satNum * realUsedLCs; 894 837 895 if (OPT->_pseudoObsTropo && _datumTrafo->firstSystem(sys)) {896 trafoObs += 1;897 }898 838 if (OPT->_pseudoObsIono && pseudoObsIono) { 899 839 trafoObs -= 1; // pseudo obs iono with respect to refSat -
trunk/BNC/src/bnchelp.html
r9445 r9538 5228 5228 PPP/sigmaL1 {Sigma for phase observations in meters [floating-point number]} 5229 5229 PPP/sigmaGIM {Sigma for GIM pseudo observations in meters [floating-point number]} 5230 PPP/sigmaTz0 {Sigma for Tz0 pseudo observations in meters [floating-point number]}5231 5230 PPP/maxResC1 {Maximal residuum for code observations in meters [floating-point number]} 5232 5231 PPP/maxResL1 {Maximal residuum for phase observations in meters [floating-point number]} -
trunk/BNC/src/bncmain.cpp
r9494 r9538 231 231 " PPP/lcBDS {Select observations from BDS code and/or phase data [character string: no|Pi|Li|Pi&Li]}\n" 232 232 " PPP/modelObs {select observation model [character string: Ionosphere-free PPP|Uncombined PPP|PPP-RTK|DCM with Code Biases|DCM with Phase Biases]}\n" 233 " PPP/pseudoOb {select pseudo observations [character string: no|Ionosphere &Troposphere]}\n"233 " PPP/pseudoOb {select pseudo observations [character string: no|Ionosphere]}\n" 234 234 " PPP/sigmaC1 {Sigma for code observations in meters [floating-point number]}\n" 235 235 " PPP/sigmaL1 {Sigma for phase observations in meters [floating-point number]}\n" 236 236 " PPP/sigmaGIM {Sigma for GIM pseudo observations in meters [floating-point number]}\n" 237 " PPP/sigmaTz0 {Sigma for Tz0 pseudo observations in meters [floating-point number]}\n"238 237 " PPP/maxResC1 {Maximal residuum for code observations in meters [floating-point number]}\n" 239 238 " PPP/maxResL1 {Maximal residuum for phase observations in meters [floating-point number]}\n" -
trunk/BNC/src/bncwindow.cpp
r9495 r9538 1063 1063 pppLayout3->addWidget(_pppWidgets._sigmaGIM, ir, 4); _pppWidgets._sigmaGIM->setMaximumWidth(8*ww); 1064 1064 pppLayout3->addItem(new QSpacerItem(8*ww, 0), ir, 5); 1065 pppLayout3->addWidget(new QLabel("Sigma Tz0"), ir, 6, Qt::AlignLeft);1066 pppLayout3->addWidget(_pppWidgets._sigmaTz0, ir, 7); _pppWidgets._sigmaTz0->setMaximumWidth(8*ww);1067 1065 ++ir; 1068 pppLayout3->addWidget(new QLabel(""), ir, 8);1066 pppLayout3->addWidget(new QLabel(""), ir, 6); 1069 1067 pppLayout3->setColumnStretch(8, 999); 1070 1068 ++ir; … … 1456 1454 _pppWidgets._sigmaL1->setWhatsThis(tr("<p>Enter a Sigma for GPS L1 phase observations in meters.</p><p>The higher the sigma you enter, the less the contribution of L1 phase observations to a PPP solutions from combined code and phase data. 0.01 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma L1 = 0.01' <i>[key: PPP/sigmaL1]</i></p>")); 1457 1455 _pppWidgets._sigmaGIM->setWhatsThis(tr("<p>Enter a Sigma for GIM pseudo observations in meters.</p><p>The higher the sigma you enter, the less the contribution of GIM pseudo observations to a PPP solution. 3.0 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma GIM = 3.0' <i>[key: PPP/sigmaGIM]</i></p>")); 1458 _pppWidgets._sigmaTz0->setWhatsThis(tr("<p>Enter a Sigma for a Tropospheric pseudo observation in zenith direction in meters.</p><p>The higher the sigma you enter, the less the contribution of Tz0 pseudo observations to a PPP solution. 0.10 is likely to be an appropriate choice.</p><p>Default is an empty option field, meaning<br>'Sigma Tzo = 0.10' <i>[key: PPP/sigmaTz0]</i></p>"));1459 1456 _pppWidgets._maxResC1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS C1 code observations in a PPP solution. '3.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 Rex C1 = 3.0' <i>[key: PPP/maxResC1]</i></p>")); 1460 1457 _pppWidgets._maxResL1->setWhatsThis(tr("<p>Specify a maximum for residuals from GPS L1 code observations in a PPP solution. '0.03' 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 Rex L1 = 0.03' <i>[key: PPP/maxResL1]</i></p>")); -
trunk/BNC/src/pppMain.cpp
r9494 r9538 182 182 opt->_sigmaL1 = settings.value("PPP/sigmaL1").toDouble(); if (opt->_sigmaL1 <= 0.0) opt->_sigmaL1 = 0.01; 183 183 opt->_sigmaGIM = settings.value("PPP/sigmaGIM").toDouble();if (opt->_sigmaGIM <= 0.0) opt->_sigmaGIM = 3.00; 184 opt->_sigmaTz0 = settings.value("PPP/sigmaTz0").toDouble();if (opt->_sigmaTz0 <= 0.0) opt->_sigmaTz0 = 0.10;185 184 opt->_corrWaitTime = settings.value("PPP/corrWaitTime").toDouble(); 186 185 if (!_realTime || opt->_corrMount.empty()) { … … 189 188 opt->_obsModelType = t_pppOptions::IF; 190 189 opt->_pseudoObsIono = false; 191 opt->_pseudoObsTropo = false;192 190 opt->_refSatRequired = false; 193 191 #ifdef USE_PPP … … 195 193 if (settings.value("PPP/pseudoObs").toString() == "no") { 196 194 opt->_pseudoObsIono = false; 197 opt->_pseudoObsTropo = false; 198 } 199 else if (settings.value("PPP/pseudoObs").toString() == "Troposphere") { 200 opt->_pseudoObsIono = false; 201 opt->_pseudoObsTropo = true; 202 } 203 else if (settings.value("PPP/pseudoObs").toString() == "Ionosphere&Troposphere") { 195 } 196 else if (settings.value("PPP/pseudoObs").toString() == "Ionosphere") { 204 197 opt->_pseudoObsIono = true; 205 opt->_pseudoObsTropo = true;206 198 } 207 199 // Observation Model … … 209 201 opt->_obsModelType = t_pppOptions::IF; 210 202 opt->_pseudoObsIono = false; 211 opt->_pseudoObsTropo = false;212 203 } 213 204 else if (settings.value("PPP/modelObs").toString() == "PPP-RTK") { 214 205 opt->_obsModelType = t_pppOptions::PPPRTK; 215 206 opt->_pseudoObsIono = false; 216 opt->_pseudoObsTropo = false;217 207 } 218 208 else if (settings.value("PPP/modelObs").toString() == "Uncombined PPP") { … … 247 237 opt->_LCsGPS.push_back(t_lc::GIM); 248 238 } 249 if (opt->_pseudoObsTropo) {250 opt->_LCsGPS.push_back(t_lc::Tz0);251 }252 239 } 253 240 } … … 262 249 opt->_LCsGPS.push_back(t_lc::GIM); 263 250 } 264 if (opt->_pseudoObsTropo) {265 opt->_LCsGPS.push_back(t_lc::Tz0);266 }267 251 } 268 252 } … … 276 260 if (opt->_pseudoObsIono) { 277 261 opt->_LCsGPS.push_back(t_lc::GIM); 278 }279 if (opt->_pseudoObsTropo) {280 opt->_LCsGPS.push_back(t_lc::Tz0);281 262 } 282 263 } … … 296 277 opt->_LCsGLONASS.push_back(t_lc::GIM); 297 278 } 298 if (opt->_pseudoObsTropo) {299 opt->_LCsGLONASS.push_back(t_lc::Tz0);300 }301 279 } 302 280 } … … 311 289 opt->_LCsGLONASS.push_back(t_lc::GIM); 312 290 } 313 if (opt->_pseudoObsTropo) {314 opt->_LCsGLONASS.push_back(t_lc::Tz0);315 }316 291 } 317 292 } … … 325 300 if (opt->_pseudoObsIono) { 326 301 opt->_LCsGLONASS.push_back(t_lc::GIM); 327 }328 if (opt->_pseudoObsTropo) {329 opt->_LCsGLONASS.push_back(t_lc::Tz0);330 302 } 331 303 } … … 345 317 opt->_LCsGalileo.push_back(t_lc::GIM); 346 318 } 347 if (opt->_pseudoObsTropo) {348 opt->_LCsGalileo.push_back(t_lc::Tz0);349 }350 319 } 351 320 } … … 360 329 opt->_LCsGalileo.push_back(t_lc::GIM); 361 330 } 362 if (opt->_pseudoObsTropo) {363 opt->_LCsGalileo.push_back(t_lc::Tz0);364 }365 331 } 366 332 } … … 374 340 if (opt->_pseudoObsIono) { 375 341 opt->_LCsGalileo.push_back(t_lc::GIM); 376 }377 if (opt->_pseudoObsTropo) {378 opt->_LCsGalileo.push_back(t_lc::Tz0);379 342 } 380 343 } … … 394 357 opt->_LCsBDS.push_back(t_lc::GIM); 395 358 } 396 if (opt->_pseudoObsTropo) {397 opt->_LCsBDS.push_back(t_lc::Tz0);398 }399 359 } 400 360 } … … 409 369 opt->_LCsBDS.push_back(t_lc::GIM); 410 370 } 411 if (opt->_pseudoObsTropo) {412 opt->_LCsBDS.push_back(t_lc::Tz0);413 }414 371 } 415 372 } … … 423 380 if (opt->_pseudoObsIono) { 424 381 opt->_LCsBDS.push_back(t_lc::GIM); 425 }426 if (opt->_pseudoObsTropo) {427 opt->_LCsBDS.push_back(t_lc::Tz0);428 382 } 429 383 } -
trunk/BNC/src/pppOptions.h
r9486 r9538 52 52 double _sigmaL1; 53 53 double _sigmaGIM; 54 double _sigmaTz0;55 54 double _maxResC1; 56 55 double _maxResL1; … … 81 80 std::vector<t_lc::type> _LCsBDS; 82 81 bool _pseudoObsIono; 83 bool _pseudoObsTropo;84 82 bool _refSatRequired; 85 83 }; -
trunk/BNC/src/pppWidgets.cpp
r9537 r9538 87 87 _sigmaL1 = new QLineEdit(); _sigmaL1 ->setObjectName("PPP/sigmaL1"); _widgets << _sigmaL1; 88 88 _sigmaGIM = new QLineEdit(); _sigmaGIM ->setObjectName("PPP/sigmaGIM"); _widgets << _sigmaGIM; 89 _sigmaTz0 = new QLineEdit(); _sigmaTz0 ->setObjectName("PPP/sigmaTz0"); _widgets << _sigmaTz0;90 89 _maxResC1 = new QLineEdit(); _maxResC1 ->setObjectName("PPP/maxResC1"); _widgets << _maxResC1; 91 90 _maxResL1 = new QLineEdit(); _maxResL1 ->setObjectName("PPP/maxResL1"); _widgets << _maxResL1; … … 155 154 #else 156 155 _modelObs->addItems(QString("Ionosphere-free PPP,Uncombined PPP,PPP-RTK,DCM with Code Biases,DCM with Phase Biases").split(",")); 157 _pseudoObs->addItems(QString("no, Troposphere,Ionosphere,Ionosphere&Troposphere").split(","));156 _pseudoObs->addItems(QString("no,Ionosphere").split(",")); 158 157 #endif 159 158 … … 257 256 delete _sigmaL1; 258 257 delete _sigmaGIM; 259 delete _sigmaTz0;260 258 delete _maxResC1; 261 259 delete _maxResL1; … … 354 352 else { 355 353 _sigmaGIM->setText("4.0"); 356 }357 358 if (!settings.value(_sigmaTz0->objectName()).toString().isEmpty()) {359 _sigmaTz0->setText(settings.value(_sigmaTz0->objectName()).toString());360 }361 else {362 _sigmaTz0->setText("0.10");363 354 } 364 355 … … 465 456 settings.setValue(_sigmaL1 ->objectName(), _sigmaL1 ->text()); 466 457 settings.setValue(_sigmaGIM ->objectName(), _sigmaGIM ->text()); 467 settings.setValue(_sigmaTz0 ->objectName(), _sigmaTz0 ->text());468 458 settings.setValue(_corrWaitTime->objectName(), _corrWaitTime->value()); 469 459 settings.setValue(_maxResC1 ->objectName(), _maxResC1 ->text()); … … 547 537 _pseudoObs->setEnabled(true); 548 538 _sigmaGIM->setEnabled(true); 549 _sigmaTz0->setEnabled(true);550 539 } else { 551 540 _pseudoObs->setEnabled(false); 552 541 _sigmaGIM->setEnabled(false); 553 _sigmaTz0->setEnabled(false);554 542 } 555 543 -
trunk/BNC/src/pppWidgets.h
r9302 r9538 71 71 QLineEdit* _sigmaL1; 72 72 QLineEdit* _sigmaGIM; 73 QLineEdit* _sigmaTz0;74 73 QSpinBox* _minObs; 75 74 QSpinBox* _minEle;
Note:
See TracChangeset
for help on using the changeset viewer.