- Timestamp:
- Nov 27, 2020, 10:38:03 AM (4 years ago)
- Location:
- trunk/BNC/src/PPP
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/PPP/pppClient.cpp
r8993 r9288 73 73 } 74 74 } 75 _offGG = 0.0; 76 _offGB = 0.0; 75 _offGR = 0.0; 76 _offGE = 0.0; 77 _offGC = 0.0; 77 78 CLIENTS.setLocalData(this); // CLIENTS takes ownership over "this" 78 79 } … … 332 333 // Compute A Priori GPS-Glonass Offset 333 334 ////////////////////////////////////////////////////////////////////////////// 334 double t_pppClient::cmpOffG G(vector<t_pppSatObs*>& obsVector) {335 double t_pppClient::cmpOffGR(vector<t_pppSatObs*>& obsVector) { 335 336 336 337 t_lc::type tLC = t_lc::dummy; 337 double offG G= 0.0;338 double offGR = 0.0; 338 339 339 340 if (_opt->useSystem('R')) { 340 341 while (obsVector.size() > 0) { 341 offG G= 0.0;342 offGR = 0.0; 342 343 double maxRes = 0.0; 343 344 int maxResIndex = -1; … … 353 354 double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC); 354 355 ++nObs; 355 offG G+= ll;356 offGR += ll; 356 357 if (fabs(ll) > fabs(maxRes)) { 357 358 maxRes = ll; … … 364 365 365 366 if (nObs > 0) { 366 offG G = offGG/ nObs;367 offGR = offGR / nObs; 367 368 } 368 369 else { 369 offG G= 0.0;370 offGR = 0.0; 370 371 } 371 372 372 373 if (fabs(maxRes) > 1000.0) { 373 LOG << "t_pppClient::cmpOffG Goutlier " << maxResPrn.toString() << " " << maxRes << endl;374 LOG << "t_pppClient::cmpOffGR outlier " << maxResPrn.toString() << " " << maxRes << endl; 374 375 delete obsVector.at(maxResIndex); 375 376 obsVector.erase(obsVector.begin() + maxResIndex); … … 380 381 } 381 382 } 382 return offGG; 383 return offGR; 384 } 385 386 // Compute A Priori GPS-Galileo Offset 387 ////////////////////////////////////////////////////////////////////////////// 388 double t_pppClient::cmpOffGE(vector<t_pppSatObs*>& obsVector) { 389 390 t_lc::type tLC = t_lc::dummy; 391 double offGE = 0.0; 392 393 if (_opt->useSystem('E')) { 394 while (obsVector.size() > 0) { 395 offGE = 0.0; 396 double maxRes = 0.0; 397 int maxResIndex = -1; 398 t_prn maxResPrn; 399 unsigned nObs = 0; 400 for (unsigned ii = 0; ii < obsVector.size(); ii++) { 401 const t_pppSatObs* satObs = obsVector.at(ii); 402 if (satObs->prn().system() == 'E') { 403 if (tLC == t_lc::dummy) { 404 tLC = satObs->isValid(t_lc::cIF) ? t_lc::cIF : t_lc::c1; 405 } 406 if (satObs->isValid(tLC) && (!satObs->modelSet() || satObs->eleSat() >= _opt->_minEle)) { 407 double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC); 408 ++nObs; 409 offGE += ll; 410 if (fabs(ll) > fabs(maxRes)) { 411 maxRes = ll; 412 maxResIndex = ii; 413 maxResPrn = satObs->prn(); 414 } 415 } 416 } 417 } 418 419 if (nObs > 0) { 420 offGE = offGE / nObs; 421 } 422 else { 423 offGE = 0.0; 424 } 425 426 if (fabs(maxRes) > 1000.0) { 427 LOG << "t_pppClient::cmpOffGE outlier " << maxResPrn.toString() << " " << maxRes << endl; 428 delete obsVector.at(maxResIndex); 429 obsVector.erase(obsVector.begin() + maxResIndex); 430 } 431 else { 432 break; 433 } 434 } 435 } 436 return offGE; 383 437 } 384 438 385 439 // Compute A Priori GPS-BDS Offset 386 440 ////////////////////////////////////////////////////////////////////////////// 387 double t_pppClient::cmpOffG B(vector<t_pppSatObs*>& obsVector) {441 double t_pppClient::cmpOffGC(vector<t_pppSatObs*>& obsVector) { 388 442 389 443 t_lc::type tLC = t_lc::dummy; 390 double offG B= 0.0;444 double offGC = 0.0; 391 445 392 446 if (_opt->useSystem('C')) { 393 447 while (obsVector.size() > 0) { 394 offG B= 0.0;448 offGC = 0.0; 395 449 double maxRes = 0.0; 396 450 int maxResIndex = -1; … … 406 460 double ll = satObs->obsValue(tLC) - satObs->cmpValue(tLC); 407 461 ++nObs; 408 offG B+= ll;462 offGC += ll; 409 463 if (fabs(ll) > fabs(maxRes)) { 410 464 maxRes = ll; … … 417 471 418 472 if (nObs > 0) { 419 offG B = offGB/ nObs;473 offGC = offGC / nObs; 420 474 } 421 475 else { 422 offG B= 0.0;476 offGC = 0.0; 423 477 } 424 478 425 479 if (fabs(maxRes) > 1000.0) { 426 LOG << "t_pppClient::cmpOffG Boutlier " << maxResPrn.toString() << " " << maxRes << endl;480 LOG << "t_pppClient::cmpOffGC outlier " << maxResPrn.toString() << " " << maxRes << endl; 427 481 delete obsVector.at(maxResIndex); 428 482 obsVector.erase(obsVector.begin() + maxResIndex); … … 433 487 } 434 488 } 435 return offG B;489 return offGC; 436 490 } 437 491 … … 570 624 } 571 625 572 _offGG = cmpOffGG(_obsRover); 573 _offGB = cmpOffGB(_obsRover); 626 _offGR = cmpOffGR(_obsRover); 627 _offGE = cmpOffGE(_obsRover); 628 _offGC = cmpOffGC(_obsRover); 574 629 575 630 if (_opt->_refSatRequired) { -
trunk/BNC/src/PPP/pppClient.h
r8993 r9288 37 37 const bncAntex* antex() const {return _antex;} 38 38 const t_pppStation* staRover() const {return _staRover;} 39 double offGG() const {return _offGG;} 40 double offGB() const {return _offGB;} 39 double offGR() const {return _offGR;} 40 double offGE() const {return _offGE;} 41 double offGC() const {return _offGC;} 41 42 42 43 std::ostringstream& log() {return *_log;} … … 60 61 t_irc cmpBancroft(const bncTime& epoTime, std::vector<t_pppSatObs*>& obsVector, 61 62 ColumnVector& xyzc, bool print); 62 double cmpOffGG(std::vector<t_pppSatObs*>& obsVector); 63 double cmpOffGB(std::vector<t_pppSatObs*>& obsVector); 63 double cmpOffGR(std::vector<t_pppSatObs*>& obsVector); 64 double cmpOffGE(std::vector<t_pppSatObs*>& obsVector); 65 double cmpOffGC(std::vector<t_pppSatObs*>& obsVector); 64 66 void setRefSatellites(std::vector<t_pppSatObs*>& obsVector); 65 67 … … 71 73 bncAntex* _antex; 72 74 t_pppFilter* _filter; 73 double _offGG; 74 double _offGB; 75 double _offGR; 76 double _offGE; 77 double _offGC; 75 78 std::vector<t_pppSatObs*> _obsRover; 76 79 std::ostringstream* _log; -
trunk/BNC/src/PPP/pppParlist.cpp
r8993 r9288 74 74 const t_pppSatObs* obs = obsVector->at(ii); 75 75 if (obs->prn() == _prn) { 76 double offG G= 0;76 double offGR = 0; 77 77 if (_prn.system() == 'R' && tLC != t_lc::MW) { 78 offG G = PPP_CLIENT->offGG();78 offGR = PPP_CLIENT->offGR(); 79 79 } 80 double offGB = 0; 80 double offGE = 0; 81 if (_prn.system() == 'E' && tLC != t_lc::MW) { 82 offGE = PPP_CLIENT->offGE(); 83 } 84 double offGC = 0; 81 85 if (_prn.system() == 'C' && tLC != t_lc::MW) { 82 offG B = PPP_CLIENT->offGB();86 offGC = PPP_CLIENT->offGC(); 83 87 } 84 _x0 = floor((obs->obsValue(tLC) - offG G - offGB- obs->cmpValue(tLC)) / obs->lambda(tLC) + 0.5);88 _x0 = floor((obs->obsValue(tLC) - offGR -offGE - offGC - obs->cmpValue(tLC)) / obs->lambda(tLC) + 0.5); 85 89 break; 86 90 } … … 88 92 } 89 93 break; 90 case offG G:94 case offGR: 91 95 _epoSpec = true; 92 96 _sigma0 = 1000.0; 93 _x0 = PPP_CLIENT->offG G();94 break; 95 case offG B:97 _x0 = PPP_CLIENT->offGR(); 98 break; 99 case offGE: 96 100 _epoSpec = true; 97 101 _sigma0 = 1000.0; 98 _x0 = PPP_CLIENT->offGB(); 102 _x0 = PPP_CLIENT->offGE(); 103 break; 104 case offGC: 105 _epoSpec = true; 106 _sigma0 = 1000.0; 107 _x0 = PPP_CLIENT->offGC(); 99 108 break; 100 109 case trp: … … 161 170 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 162 171 return 1.0; 163 case offG G:172 case offGR: 164 173 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 165 174 return (obs->prn().system() == 'R') ? 1.0 : 0.0; 166 case offGB: 175 case offGE: 176 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 177 return (obs->prn().system() == 'E') ? 1.0 : 0.0; 178 case offGC: 167 179 if (tLC == t_lc::GIM || tLC == t_lc::Tz0) {return 0.0;} 168 180 return (obs->prn().system() == 'C') ? 1.0 : 0.0; … … 276 288 ss << "REC_CLK "; 277 289 break; 278 case offG G:290 case offGR: 279 291 ss << "OGG "; 280 292 break; 281 case offGB: 293 case offGE: 294 ss << "OGE "; 295 break; 296 case offGC: 282 297 ss << "OGB "; 283 298 break; … … 401 416 // ------------------------ 402 417 if (OPT->useSystem('R')) { 403 required.push_back(new t_pppParam(t_pppParam::offGG, t_prn(), t_lc::dummy)); 418 required.push_back(new t_pppParam(t_pppParam::offGR, t_prn(), t_lc::dummy)); 419 } 420 421 // GPS-Galileo Clock Offset 422 // ------------------------ 423 if (OPT->useSystem('E')) { 424 required.push_back(new t_pppParam(t_pppParam::offGE, t_prn(), t_lc::dummy)); 404 425 } 405 426 … … 407 428 // ------------------------ 408 429 if (OPT->useSystem('C')) { 409 required.push_back(new t_pppParam(t_pppParam::offGB, t_prn(), t_lc::dummy)); 410 } 411 430 required.push_back(new t_pppParam(t_pppParam::offGC, t_prn(), t_lc::dummy)); 431 } 412 432 413 433 // Troposphere -
trunk/BNC/src/PPP/pppParlist.h
r8993 r9288 15 15 class t_pppParam { 16 16 public: 17 enum e_type {crdX, crdY, crdZ, clkR, amb, offG G, offGB, trp, ion, cBias1, cBias2, pBias1, pBias2};17 enum e_type {crdX, crdY, crdZ, clkR, amb, offGR, offGE, offGC, trp, ion, cBias1, cBias2, pBias1, pBias2}; 18 18 19 19 t_pppParam(e_type type, const t_prn& prn, t_lc::type tLC,
Note:
See TracChangeset
for help on using the changeset viewer.