Changeset 8956 in ntrip for trunk/BNC/src/PPP/pppClient.cpp
- Timestamp:
- Jun 23, 2020, 11:58:46 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/PPP/pppClient.cpp
r8912 r8956 160 160 // ------- 161 161 epoTime.reset(); 162 clearObs(); 162 163 163 164 // Create vector of valid observations … … 174 175 } 175 176 } 176 }177 178 // (re)set reference satellites per system if required179 // ---------------------------------------------------180 if (_opt->_refSatRequired) {181 // reference satellite definition per system182 for (unsigned iSys = 0; iSys < _opt->systems().size(); iSys++) {183 char system = _opt->systems()[iSys];184 bool refSatDefined = false;185 t_pppRefSat* refSat = _obsPool->getRefSatMapElement(system);186 for (unsigned ii = 0; ii < obsVector.size(); ii++) {187 const t_pppSatObs* satObs = obsVector.at(ii);188 // reference satellite is unchanged189 if (!_obsPool->refSatChangeRequired() && refSat->prn() == satObs->prn()) {190 refSatDefined = true;191 obsVector[ii]->setAsReference();192 refSat->setStatus(t_pppRefSat::unchanged);193 }194 // reference satellite has changed195 else if ( _obsPool->refSatChangeRequired() && refSat->prn() != satObs->prn()) {196 if (satObs->prn().system() == system) {197 refSatDefined = true;198 obsVector[ii]->setAsReference();199 refSat->setStatus(t_pppRefSat::changed);200 refSat->setPrn(satObs->prn());201 }202 }203 if (refSatDefined) {204 break;205 }206 }207 // reference satellite has to be initialized208 if (!refSatDefined) {209 for (unsigned ii = 0; ii < obsVector.size(); ii++) {210 const t_pppSatObs* satObs = obsVector.at(ii);211 if (satObs->prn().system() == system) {212 obsVector[ii]->setAsReference();213 refSat->setStatus(t_pppRefSat::initialized);214 refSat->setPrn(satObs->prn());215 }216 }217 }218 }219 _obsPool->setRefSatChangeRequired(false);220 177 } 221 178 … … 497 454 satObs->eleSat() >= _opt->_minEle && 498 455 modelSetup == success) { 499 if (satObs->isReference() && _opt->_pseudoObsIono) {500 char system = satObs->prn().system();501 t_pppRefSat* refSat = _obsPool->getRefSatMapElement(system);502 refSat->setStecValue(satObs->getIonoCodeDelay(t_frequency::G1));503 }504 456 ++it; 505 457 } … … 517 469 void t_pppClient::processEpoch(const vector<t_satObs*>& satObs, t_output* output) { 518 470 471 _historicalRefSats.clear(); 519 472 try { 520 473 initOutput(output); … … 524 477 do { 525 478 num++; 479 if (num == 1) { 480 LOG << "\nPPP of Epoch "; 481 if (!_epoTimeRover.undef()) LOG << string(_epoTimeRover); 482 LOG << "\n---------------------------------------------------------------\n"; 483 } 526 484 527 485 // Prepare Observations of the Rover … … 530 488 return finish(failure); 531 489 } 532 533 LOG << "\nPPP of Epoch ";534 if (!_epoTimeRover.undef()) LOG << string(_epoTimeRover);535 LOG << "\n---------------------------------------------------------------\n";536 490 537 491 for (int iter = 1; iter <= 2; iter++) { … … 548 502 _offGG = cmpOffGG(_obsRover); 549 503 550 // Prepare Pseudo Observations of the Rover551 // ----------------------------------------552 _pseudoObsIono = preparePseudoObs(_obsRover);553 if (int(_obsRover.size()) < _opt->_minObs) {554 LOG << "t_pppClient::processEpoch not enough observations" << endl;555 return finish(failure);556 }557 558 504 if (_opt->_refSatRequired) { 505 setRefSatellites(_obsRover); 559 506 LOG.setf(ios::fixed); 560 507 QMapIterator<char, t_pppRefSat*> it(_obsPool->getRefSatMap()); … … 563 510 char sys = it.key(); 564 511 string prn = it.value()->prn().toString(); 512 if (num == 1) { 513 LOG << "set "; 514 } 515 else { 516 LOG << "reset "; 517 } 565 518 LOG << string(_epoTimeRover) << " REFSAT " << sys << ": " << prn << endl; 566 519 } 567 520 } 521 522 523 // Prepare Pseudo Observations of the Rover 524 // ---------------------------------------- 525 _pseudoObsIono = preparePseudoObs(_obsRover); 526 527 if (int(_obsRover.size()) < _opt->_minObs) { 528 LOG << "t_pppClient::processEpoch not enough observations" << endl; 529 return finish(failure); 530 } 531 568 532 569 533 // Store last epoch of data 570 534 // ------------------------ 571 //_obsRover.resize(2);572 535 _obsPool->putEpoch(_epoTimeRover, _obsRover, _pseudoObsIono); 536 _obsPool->setHistoricalRefSatList(_historicalRefSats); 573 537 574 538 // Process Epoch in Filter … … 582 546 if (_obsPool->refSatChangeRequired()) { 583 547 epochReProcessing = true; 548 _obsPool->deleteLastEpoch(); 549 QMapIterator<char, t_pppRefSat*> it(_obsPool->getRefSatMap()); 550 while (it.hasNext()) { 551 it.next(); 552 _historicalRefSats.append(it.value()->prn()); 553 } 584 554 } 585 555 else { 586 556 epochReProcessing = false; 587 } 588 // Datum transformation required? 589 // ------------------------------ 590 if (num > 1 && epochReProcessing) { 591 _filter->datumTransformation(); 592 } 593 557 558 } 594 559 } while (epochReProcessing); 595 560 } … … 694 659 // 695 660 ////////////////////////////////////////////////////////////////////////////// 661 void t_pppClient::setRefSatellites(std::vector<t_pppSatObs*>& obsVector) { 662 663 // reference satellite definition per system 664 for (unsigned iSys = 0; iSys < _opt->systems().size(); iSys++) { 665 char system = _opt->systems()[iSys]; 666 bool refSatDefined = false; 667 t_pppRefSat* refSat = _obsPool->getRefSatMapElement(system); 668 for (unsigned ii = 0; ii < obsVector.size(); ii++) { 669 t_pppSatObs* satObs = obsVector.at(ii); 670 if (satObs->eleSat() < _opt->_minEle) {continue;} 671 // reference satellite is unchanged 672 if (!_obsPool->refSatChangeRequired() && refSat->prn() == satObs->prn()) { 673 refSatDefined = true; 674 obsVector[ii]->setAsReference(); 675 } 676 // reference satellite has changed 677 else if ( _obsPool->refSatChangeRequired() && refSat->prn() != satObs->prn() && !_historicalRefSats.contains(satObs->prn())) { 678 if (satObs->prn().system() == system) { 679 refSatDefined = true; 680 obsVector[ii]->setAsReference(); 681 refSat->setPrn(satObs->prn()); 682 } 683 } 684 if (refSatDefined) { 685 if (OPT->_pseudoObsIono) { 686 refSat->setStecValue(satObs->getIonoCodeDelay(t_frequency::G1)); 687 } 688 break; 689 } 690 } 691 // reference satellite has to be initialized 692 if (!refSatDefined) { 693 for (unsigned ii = 0; ii < obsVector.size(); ii++) { 694 t_pppSatObs* satObs = obsVector.at(ii); 695 if (satObs->eleSat() < _opt->_minEle) { 696 continue; 697 } 698 if (satObs->prn().system() == system) { 699 obsVector[ii]->setAsReference(); 700 refSat->setPrn(satObs->prn()); 701 if (OPT->_pseudoObsIono) { 702 refSat->setStecValue(satObs->getIonoCodeDelay(t_frequency::G1)); 703 } 704 refSatDefined = true; 705 break; 706 } 707 } 708 } 709 } 710 _obsPool->setRefSatChangeRequired(false); 711 712 } 713 714 // 715 ////////////////////////////////////////////////////////////////////////////// 696 716 void t_pppClient::reset() { 697 717
Note:
See TracChangeset
for help on using the changeset viewer.