Changeset 9635 in ntrip
- Timestamp:
- Feb 24, 2022, 5:08:42 PM (3 years ago)
- Location:
- trunk/BNC/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bncwindow.cpp
r9624 r9635 496 496 _cmbMethodComboBox = new QComboBox(); 497 497 _cmbMethodComboBox->setEditable(false); 498 _cmbMethodComboBox->addItems(QString(" Filter,Single-Epoch").split(","));498 _cmbMethodComboBox->addItems(QString("Kalman Filter,Single-Epoch").split(",")); 499 499 int im = _cmbMethodComboBox->findText(settings.value("cmbMethod").toString()); 500 500 if (im != -1) { … … 536 536 connect(_cmbIrnssCheckBox, SIGNAL(stateChanged(int)), this, SLOT(slotBncTextChanged())); 537 537 538 _cmbBsxFile = new qtFileChooser(0, qtFileChooser::File); 539 _cmbBsxFile->setFileName(settings.value("cmbBsxFile").toString()); 540 538 541 // Upload Results 539 542 // ------------- 540 _uploadTable = new QTableWidget(0,1 5);541 _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, Format, CoM, SP3 File, RNX File, PID, SID, IOD, bytes").split(","));543 _uploadTable = new QTableWidget(0,16); 544 _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, Format, CoM, SP3 File, RNX File, BSX File, PID, SID, IOD, bytes").split(",")); 542 545 _uploadTable->setSelectionMode(QAbstractItemView::ExtendedSelection); 543 546 _uploadTable->setSelectionBehavior(QAbstractItemView::SelectRows); … … 553 556 _uploadTable->horizontalHeader()->resizeSection( 9,15*ww); 554 557 _uploadTable->horizontalHeader()->resizeSection(10,15*ww); 555 _uploadTable->horizontalHeader()->resizeSection(11, 4*ww);558 _uploadTable->horizontalHeader()->resizeSection(11,15*ww); 556 559 _uploadTable->horizontalHeader()->resizeSection(12, 4*ww); 557 560 _uploadTable->horizontalHeader()->resizeSection(13, 4*ww); 558 _uploadTable->horizontalHeader()->resizeSection(14,12*ww); 561 _uploadTable->horizontalHeader()->resizeSection(14, 4*ww); 562 _uploadTable->horizontalHeader()->resizeSection(15,12*ww); 559 563 #if QT_VERSION < 0x050000 560 564 _uploadTable->horizontalHeader()->setResizeMode(QHeaderView::Interactive); … … 606 610 _uploadSamplClkRnxSpinBox->setSuffix(" sec"); 607 611 612 _uploadSamplBiaSnxSpinBox = new QSpinBox; 613 _uploadSamplBiaSnxSpinBox->setMinimum(0); 614 _uploadSamplBiaSnxSpinBox->setMaximum(60); 615 _uploadSamplBiaSnxSpinBox->setSingleStep(5); 616 _uploadSamplBiaSnxSpinBox->setMaximumWidth(9*ww); 617 _uploadSamplBiaSnxSpinBox->setValue(settings.value("uploadSamplBiaSnx").toInt()); 618 _uploadSamplBiaSnxSpinBox->setSuffix(" sec"); 619 608 620 int iRowT = _uploadTable->rowCount(); 609 621 if (iRowT > 0) { … … 612 624 enableWidget(true, _uploadSamplSp3SpinBox); 613 625 enableWidget(true, _uploadSamplClkRnxSpinBox); 626 enableWidget(true, _uploadSamplBiaSnxSpinBox); 614 627 enableWidget(true, _uploadAntexFile); 615 628 } … … 619 632 enableWidget(false, _uploadSamplSp3SpinBox); 620 633 enableWidget(false, _uploadSamplClkRnxSpinBox); 634 enableWidget(true, _uploadSamplBiaSnxSpinBox); 621 635 enableWidget(false, _uploadAntexFile); 622 636 } … … 1240 1254 1241 1255 populateCmbTable(); 1242 cmbLayout->addWidget(_cmbTable, 0, 0, 8, 3);1256 cmbLayout->addWidget(_cmbTable, 0, 0, 8, 6); 1243 1257 cmbLayout->addWidget(new QLabel(" Combine Broadcast Correction streams.<br>"), 1, 6, 1, 10); 1244 cmbLayout->addWidget(addCmbRowButton, 2, 6); 1245 cmbLayout->addWidget(delCmbRowButton, 2, 7); 1246 cmbLayout->addWidget(new QLabel("Method"), 3, 6, Qt::AlignRight); 1247 cmbLayout->addWidget(_cmbMethodComboBox, 3, 7); 1248 cmbLayout->addWidget(new QLabel(" Maximal residuum"), 4, 6, Qt::AlignRight); 1249 cmbLayout->addWidget(_cmbMaxresLineEdit, 4, 7, Qt::AlignRight); 1250 cmbLayout->addWidget(new QLabel("Sampling"), 5, 6, Qt::AlignRight); 1251 cmbLayout->addWidget(_cmbSamplSpinBox, 5, 7); 1252 cmbLayout->addWidget(new QLabel("GNSS"), 6, 6, Qt::AlignRight); 1253 cmbLayout->addWidget(new QLabel("Systems"), 6, 7, Qt::AlignLeft); 1254 cmbLayout->addWidget(new QLabel("GPS (1W/2W)"), 6, 8); 1255 cmbLayout->addWidget(_cmbGpsCheckBox, 6, 9); 1256 cmbLayout->addWidget(new QLabel("GLO (1P/2P)"), 6, 10); 1257 cmbLayout->addWidget(_cmbGloCheckBox, 6, 11); 1258 cmbLayout->addWidget(new QLabel("Galileo (1C/5Q)"), 6, 12); 1259 cmbLayout->addWidget(_cmbGalCheckBox, 6, 13); 1260 cmbLayout->addWidget(new QLabel("Beidou (2I/6I)"), 6, 14); 1261 cmbLayout->addWidget(_cmbBdsCheckBox, 6, 15); 1262 cmbLayout->addWidget(new QLabel("QZSS (1C/2L)"), 7, 8); 1263 cmbLayout->addWidget(_cmbQzssCheckBox, 7, 9); 1264 cmbLayout->addWidget(new QLabel("SBAS (1C/5Q)"), 7, 10); 1265 cmbLayout->addWidget(_cmbSbasCheckBox, 7, 11); 1266 cmbLayout->addWidget(new QLabel("IRNSS"), 7, 12); 1267 cmbLayout->addWidget(_cmbIrnssCheckBox, 7, 13); 1268 cmbLayout->setRowStretch(6, 999); 1258 cmbLayout->addWidget(addCmbRowButton, 2, 6); 1259 cmbLayout->addWidget(delCmbRowButton, 2, 7); 1260 cmbLayout->addWidget(new QLabel("Method"), 3, 6, Qt::AlignLeft); 1261 cmbLayout->addWidget(_cmbMethodComboBox, 3, 7); 1262 cmbLayout->addWidget(new QLabel("BSX File"), 4, 6, Qt::AlignLeft); 1263 cmbLayout->addWidget(_cmbBsxFile, 4, 7, Qt::AlignRight); 1264 cmbLayout->addWidget(new QLabel("Max Residual"), 5, 6, Qt::AlignLeft); 1265 cmbLayout->addWidget(_cmbMaxresLineEdit, 5, 7, Qt::AlignRight); 1266 cmbLayout->addWidget(new QLabel("Sampling"), 6, 6, Qt::AlignLeft); 1267 cmbLayout->addWidget(_cmbSamplSpinBox, 6, 7, Qt::AlignRight); 1268 cmbLayout->addWidget(new QLabel("GNSS"), 7, 6, Qt::AlignLeft); 1269 cmbLayout->addWidget(new QLabel("GPS (1W/2W)"), 7, 7); 1270 cmbLayout->addWidget(_cmbGpsCheckBox, 7, 8); 1271 cmbLayout->addWidget(new QLabel("GLONASS (1P/2P)"), 7, 9); 1272 cmbLayout->addWidget(_cmbGloCheckBox, 7, 10); 1273 cmbLayout->addWidget(new QLabel("Galileo (1C/5Q)"), 7, 11); 1274 cmbLayout->addWidget(_cmbGalCheckBox, 7, 12); 1275 cmbLayout->addWidget(new QLabel("Beidou (2I/6I)"), 7, 13); 1276 cmbLayout->addWidget(_cmbBdsCheckBox, 7, 14); 1277 cmbLayout->addWidget(new QLabel("QZSS (1C/2L)"), 8, 7); 1278 cmbLayout->addWidget(_cmbQzssCheckBox, 8, 8); 1279 cmbLayout->addWidget(new QLabel("SBAS (1C/5Q)"), 8, 9); 1280 cmbLayout->addWidget(_cmbSbasCheckBox, 8, 10); 1281 cmbLayout->addWidget(new QLabel("IRNSS"), 8, 11); 1282 cmbLayout->addWidget(_cmbIrnssCheckBox, 8, 12); 1283 cmbLayout->setRowStretch(8, 999); 1269 1284 1270 1285 connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow())); … … 1291 1306 uploadHlpLayout->addWidget(new QLabel("RNX"), 0, 8, Qt::AlignRight); 1292 1307 uploadHlpLayout->addWidget(_uploadSamplClkRnxSpinBox, 0, 9); 1293 uploadHlpLayout->addWidget(setUploadTrafoButton, 0,10); 1308 uploadHlpLayout->addWidget(new QLabel("BSX"), 0,10, Qt::AlignRight); 1309 uploadHlpLayout->addWidget(_uploadSamplBiaSnxSpinBox, 0,11); 1310 uploadHlpLayout->addWidget(setUploadTrafoButton, 0,12); 1294 1311 uploadHlpLayout->addWidget(new QLabel("ANTEX file"), 1, 0, Qt::AlignLeft); 1295 1312 uploadHlpLayout->addWidget(_uploadAntexFile, 1, 1, 1, 4); … … 1479 1496 _cmbMaxresLineEdit->setWhatsThis(tr("<p>BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 'Maximal residuum' meters from the average of all clocks will be ignored.<p></p>It is suggested to specify a value of about 0.2 m for the Kalman filter combination approach and a value of about 3.0 meters for the Single-Epoch combination approach.</p><p>Default is a value of '999.0'. <i>[key: cmbMaxres]</i></p>")); 1480 1497 _cmbSamplSpinBox->setWhatsThis(tr("<p>Select a combination Sampling interval for the clocks. Clock corrections will be produced following that interval.</p><p>A value of 10 sec may be an appropriate choice. <i>[key: cmbSampl]</i></p>")); 1481 _cmbGpsCheckBox->setWhatsThis(tr("<p>GPS corrections shall be combined. <i>[key: cmbGps]</i></p>")); 1482 _cmbGloCheckBox->setWhatsThis(tr("<p>GLONASS corrections shall be combined; GPS Broadcast ephemeris and corrections are required. <i>[key: cmbGlo]</i></p>")); 1483 _cmbGalCheckBox->setWhatsThis(tr("<p>Galileo corrections shall be combined; GLONASS Broadcast ephemeris and corrections are required. <i>[key: cmbGal]</i></p>")); 1484 _cmbBdsCheckBox->setWhatsThis(tr("<p>Beidou corrections shall be combined; Galileo Broadcast ephemeris and corrections are required. <i>[key: cmbBds]</i></p>")); 1485 _cmbQzssCheckBox->setWhatsThis(tr("<p>QZSS corrections shall be combined; QZSS Broadcast ephemeris and corrections are required. <i>[key: cmbQzss]</i></p>")); 1486 _cmbSbasCheckBox->setWhatsThis(tr("<p>SBAS corrections shall be combined; SBAS Broadcast ephemeris and corrections are required. <i>[key: cmbSbas]</i></p>")); 1487 _cmbIrnssCheckBox->setWhatsThis(tr("<p>IRNSS corrections shall be combined; IRNSS Broadcast ephemeris and corrections are required. <i>[key: cmbIrnss]</i></p>")); 1498 _cmbGpsCheckBox->setWhatsThis(tr("<p>GPS clock corrections shall be combined. <i>[key: cmbGps]</i></p>")); 1499 _cmbGloCheckBox->setWhatsThis(tr("<p>GLONASS clock corrections shall be combined; GPS Broadcast ephemeris and corrections are required. <i>[key: cmbGlo]</i></p>")); 1500 _cmbGalCheckBox->setWhatsThis(tr("<p>Galileo clock corrections shall be combined; GLONASS Broadcast ephemeris and corrections are required. <i>[key: cmbGal]</i></p>")); 1501 _cmbBdsCheckBox->setWhatsThis(tr("<p>Beidou clock corrections shall be combined; Galileo Broadcast ephemeris and corrections are required. <i>[key: cmbBds]</i></p>")); 1502 _cmbQzssCheckBox->setWhatsThis(tr("<p>QZSS clock corrections shall be combined; QZSS Broadcast ephemeris and corrections are required. <i>[key: cmbQzss]</i></p>")); 1503 _cmbSbasCheckBox->setWhatsThis(tr("<p>SBAS clock corrections shall be combined; SBAS Broadcast ephemeris and corrections are required. <i>[key: cmbSbas]</i></p>")); 1504 _cmbIrnssCheckBox->setWhatsThis(tr("<p>IRNSS clock corrections shall be combined; IRNSS Broadcast ephemeris and corrections are required. <i>[key: cmbIrnss]</i></p>")); 1505 _cmbBsxFile->setWhatsThis(tr("<p> Specify a Bias SINEX File that will be used to add satellite code biases to the combined clocks. <i>[key: cmbBsxFile]</i></p>")); 1488 1506 1489 1507 // WhatsThis, Upload Corrections … … 1496 1514 _uploadSamplSp3SpinBox->setWhatsThis(tr("<p>Select a SP3 orbit file sampling interval in minutes.</p><p>A value of zero '0' tells BNC to store all available samples into SP3 orbit files. <i>[key: uploadSamplSp3]</i></p>")); 1497 1515 _uploadSamplClkRnxSpinBox->setWhatsThis(tr("<p>Select a Clock RINEX file sampling interval in seconds.</p><p>A value of zero '0' tells BNC to store all available samples into Clock RINEX files. <i>[key: uploadSamplClkRnx]</i></p>")); 1516 _uploadSamplBiaSnxSpinBox->setWhatsThis(tr("<p>Select a Bias SINEX file sampling interval in seconds.</p><p>A value of zero '0' tells BNC to store all available samples into Bias SINEX files. <i>[key: uploadSamplBiaSnx]</i></p>")); 1498 1517 setUploadTrafoButton->setWhatsThis(tr("<p>Hit 'Custom Trafo' to specify your own 14 parameter Helmert Transformation instead of selecting a predefined transformation via option 'System'.</p>")); 1499 1518 _uploadAntexFile->setWhatsThis(tr("<p>When producing SP3 files or referring orbit and clock corrections to the satellite's Center of Mass (CoM) instead Antenna Phase Center (APC), an offset has to be applied which is available from the IGS 'ANTEX file'. You must therefore specify an 'ANTEX file' path if you want to save the stream content in SP3 format and/or refer correctors to CoM.</p><p>If you don't specify an 'ANTEX file' path, the SP3 file content as well as the orbit and clock correctors will be referred to satellite APCs. <i>[key: uploadAntexFile]</i></p>")); … … 1622 1641 delete _cmbSbasCheckBox; 1623 1642 delete _cmbIrnssCheckBox; 1643 delete _cmbBsxFile; 1624 1644 _uploadEphTable->deleteLater(); 1625 1645 delete _uploadSamplRtcmEphCorrSpinBox; … … 1630 1650 delete _uploadSamplSp3SpinBox; 1631 1651 delete _uploadSamplClkRnxSpinBox; 1652 delete _uploadSamplBiaSnxSpinBox; 1632 1653 delete _reqcActionComboBox; 1633 1654 delete _reqcObsFileChooser; … … 2106 2127 settings.setValue("cmbSbas", _cmbSbasCheckBox->checkState()); 2107 2128 settings.setValue("cmbIrnss", _cmbIrnssCheckBox->checkState()); 2129 settings.setValue("cmbBsxFile", _cmbBsxFile->fileName()); 2108 2130 2109 2131 // Upload Corrections … … 2118 2140 settings.setValue("uploadSamplSp3", _uploadSamplSp3SpinBox->value()); 2119 2141 settings.setValue("uploadSamplClkRnx", _uploadSamplClkRnxSpinBox->value()); 2142 settings.setValue("uploadSamplBiaSnx", _uploadSamplBiaSnxSpinBox->value()); 2120 2143 settings.setValue("uploadAntexFile", _uploadAntexFile->fileName()); 2121 2144 // Upload Ephemeris … … 2629 2652 enableWidget(true, _cmbSbasCheckBox); 2630 2653 enableWidget(true, _cmbIrnssCheckBox); 2654 enableWidget(true, _cmbBsxFile); 2631 2655 } 2632 2656 else { … … 2641 2665 enableWidget(false, _cmbSbasCheckBox); 2642 2666 enableWidget(false, _cmbIrnssCheckBox); 2667 enableWidget(false, _cmbBsxFile); 2643 2668 } 2644 2669 } … … 2651 2676 enableWidget(true, _uploadSamplRtcmEphCorrSpinBox); 2652 2677 enableWidget(true, _uploadSamplClkRnxSpinBox); 2678 enableWidget(true, _uploadSamplBiaSnxSpinBox); 2653 2679 enableWidget(true, _uploadSamplSp3SpinBox); 2654 2680 enableWidget(true, _uploadAntexFile); … … 2658 2684 enableWidget(false, _uploadSamplRtcmEphCorrSpinBox); 2659 2685 enableWidget(false, _uploadSamplClkRnxSpinBox); 2686 enableWidget(false, _uploadSamplBiaSnxSpinBox); 2660 2687 enableWidget(false, _uploadSamplSp3SpinBox); 2661 2688 enableWidget(false, _uploadAntexFile); … … 2808 2835 _uploadTable->setCellWidget(iRow, iCol, com); 2809 2836 } 2810 else if (iCol == 1 4) {2837 else if (iCol == 15) { 2811 2838 bncTableItem* bncIt = new bncTableItem(); 2812 2839 bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable); … … 2916 2943 _uploadTable->setCellWidget(iRow, iCol, com); 2917 2944 } 2918 else if (iCol == 1 4) {2945 else if (iCol == 15) { 2919 2946 bncTableItem* bncIt = new bncTableItem(); 2920 2947 bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable); -
trunk/BNC/src/bncwindow.h
r9292 r9635 225 225 QCheckBox* _cmbSbasCheckBox; 226 226 QCheckBox* _cmbIrnssCheckBox; 227 qtFileChooser* _cmbBsxFile; 227 228 228 229 QTableWidget* _uploadTable; … … 231 232 QSpinBox* _uploadSamplSp3SpinBox; 232 233 QSpinBox* _uploadSamplClkRnxSpinBox; 234 QSpinBox* _uploadSamplBiaSnxSpinBox; 233 235 qtFileChooser* _uploadAntexFile; 234 236 -
trunk/BNC/src/combination/bnccomb.cpp
r9546 r9635 18 18 #include <iomanip> 19 19 #include <sstream> 20 #include <map> 20 21 21 22 #include "bnccomb.h" … … 472 473 } 473 474 474 // Check satellite code biases475 // ----------------------------476 if (!_satCodeBiases.contains(acName)) {477 delete newCorr;478 continue;479 }480 else {481 QMap<t_prn, t_satCodeBias>& storage = _satCodeBiases[acName];482 if (!storage.contains(clkCorr._prn)) {483 delete newCorr;484 continue;485 }486 else {487 newCorr->_satCodeBias = storage[clkCorr._prn];488 }489 }490 491 475 // Check the Ephemeris 492 476 //-------------------- … … 520 504 continue; 521 505 } 506 } 507 508 // Check satellite code biases 509 // ---------------------------- 510 if (!_satCodeBiases.contains(acName)) { 511 delete newCorr; 512 continue; 513 } 514 else { 515 QMap<t_prn, t_satCodeBias>& storage = _satCodeBiases[acName]; 516 if (!storage.contains(clkCorr._prn)) { 517 delete newCorr; 518 continue; 519 } 520 else { 521 t_satCodeBias& satCodeBias = storage[clkCorr._prn]; 522 QMap<t_frequency::type, double> codeBias; 523 for (unsigned ii = 1; ii < t_lcRefSig::cIF; ii++) { 524 t_frequency::type frqType = t_lcRefSig::toFreq(sys, static_cast<t_lcRefSig::type>(ii)); 525 char frqNum = t_frequency::toString(frqType)[1]; 526 char attrib = t_lcRefSig::toAttrib(sys, static_cast<t_lcRefSig::type>(ii)); 527 QString obsType = QString("%1%2").arg(frqNum).arg(attrib); 528 for (unsigned ii = 0; ii < satCodeBias._bias.size(); ii++) { 529 const t_frqCodeBias& bias = satCodeBias._bias[ii]; 530 if (obsType.toStdString() == bias._rnxType2ch) { 531 codeBias[frqType] = bias._value; 532 } 533 } 534 } 535 map<t_frequency::type, double> codeCoeff; 536 double channel = double(newCorr->_eph->slotNum()); 537 t_lcRefSig::coeff(sys, t_lcRefSig::cIF, channel, codeCoeff); 538 map<t_frequency::type, double>::const_iterator it; 539 for (it = codeCoeff.begin(); it != codeCoeff.end(); it++) { 540 t_frequency::type frqType = it->first; 541 newCorr->_codeBiasIF += it->second * codeBias[frqType]; 542 } 543 } 544 cout << acName.toStdString() << " " << clkCorr._prn.toString().c_str() << " _codeBiasIF: " << newCorr->_codeBiasIF << endl; 522 545 } 523 546 … … 597 620 QTextStream out(&_log, QIODevice::WriteOnly); 598 621 599 out << endl << "Combination: " << sys << endl600 << "--------------------------------" << endl;622 out << "\n" << "Combination: " << sys << "\n" 623 << "--------------------------------" << "\n"; 601 624 602 625 // Observation Statistics … … 617 640 } 618 641 } 619 out << AC->name.toLatin1().data() << ": " << AC->numObs[sys] << endl;642 out << AC->name.toLatin1().data() << ": " << AC->numObs[sys] << "\n"; 620 643 } 621 644 … … 629 652 ++_masterMissingEpochs[sys]; 630 653 if (_masterMissingEpochs[sys] < switchMasterAfterGap) { 631 out << "Missing Master, Epoch skipped" << endl;654 out << "Missing Master, Epoch skipped" << "\n"; 632 655 _buffer[sys].remove(_resTime); 633 656 emit newMessage(_log, false); … … 644 667 << AC->name.toLatin1().data() << " " 645 668 << _resTime.datestr().c_str() << " " 646 << _resTime.timestr().c_str() << endl;669 << _resTime.timestr().c_str() << "\n"; 647 670 _masterOrbitAC[sys] = AC->name; 648 671 break; … … 682 705 out.setRealNumberPrecision(4); 683 706 out << pp->toString(sys) << " " 684 << pp->xx << " +- " << sqrt(_QQ[sys](pp->index,pp->index)) << endl;707 << pp->xx << " +- " << sqrt(_QQ[sys](pp->index,pp->index)) << "\n"; 685 708 out.setFieldWidth(0); 686 709 } … … 762 785 } 763 786 764 out << " Outlier" << endl;787 out << " Outlier" << "\n"; 765 788 _QQ[sys] = QQ_sav; 766 789 corrs(sys).remove(maxResIndex-1); 767 790 } 768 791 else { 769 out << " OK" << endl;792 out << " OK" << "\n"; 770 793 out.setRealNumberNotation(QTextStream::FixedNotation); 771 794 out.setRealNumberPrecision(4); … … 776 799 << corr->_acName << ' ' << corr->_prn.mid(0,3); 777 800 out.setFieldWidth(10); 778 out << " res = " << vv[ii] << endl;801 out << " res = " << vv[ii] << "\n"; 779 802 out.setFieldWidth(0); 780 803 } … … 807 830 out << "Full Clock " << corr->_prn.mid(0,3) << " " << corr->_iod << " "; 808 831 out.setFieldWidth(14); 809 out << (xc(4) + corr->_dClkResult) * t_CST::c << endl;832 out << (xc(4) + corr->_dClkResult) * t_CST::c << "\n"; 810 833 out.setFieldWidth(0); 811 834 } 812 835 else { 813 out << "bncComb::printResuls bug" << endl;836 out << "bncComb::printResuls bug" << "\n"; 814 837 } 815 838 } … … 958 981 } 959 982 960 ll(iObs) = corr->_clkCorr._dClk * t_CST::c- DotProduct(AA.Row(iObs), x0);983 ll(iObs) = (corr->_clkCorr._dClk * t_CST::c - corr->_codeBiasIF) - DotProduct(AA.Row(iObs), x0); 961 984 } 962 985 … … 1117 1140 } 1118 1141 catch (Exception& exc) { 1119 out << exc.what() << endl;1142 out << exc.what() << "\n"; 1120 1143 return failure; 1121 1144 } … … 1130 1153 1131 1154 if (maxRes > _MAXRES) { 1132 out << " Outlier" << endl;1155 out << " Outlier" << "\n"; 1133 1156 delete corrs(sys)[maxResIndex-1]; 1134 1157 corrs(sys).remove(maxResIndex-1); 1135 1158 } 1136 1159 else { 1137 out << " OK" << endl;1160 out << " OK" << "\n"; 1138 1161 out.setRealNumberNotation(QTextStream::FixedNotation); 1139 1162 out.setRealNumberPrecision(3); … … 1144 1167 << corr->_acName << ' ' << corr->_prn.mid(0,3); 1145 1168 out.setFieldWidth(6); 1146 out << " res = " << vv[ii] << endl;1169 out << " res = " << vv[ii] << "\n"; 1147 1170 out.setFieldWidth(0); 1148 1171 } … … 1172 1195 1173 1196 if (ephLast == 0) { 1174 out << "checkOrbit: missing eph (not found) " << corr->_prn.mid(0,3) << endl;1197 out << "checkOrbit: missing eph (not found) " << corr->_prn.mid(0,3) << "\n"; 1175 1198 delete corr; 1176 1199 im.remove(); 1177 1200 } 1178 1201 else if (corr->_eph == 0) { 1179 out << "checkOrbit: missing eph (zero) " << corr->_prn.mid(0,3) << endl;1202 out << "checkOrbit: missing eph (zero) " << corr->_prn.mid(0,3) << "\n"; 1180 1203 delete corr; 1181 1204 im.remove(); … … 1186 1209 } 1187 1210 else { 1188 out << "checkOrbit: missing eph (deleted) " << corr->_prn.mid(0,3) << endl;1211 out << "checkOrbit: missing eph (deleted) " << corr->_prn.mid(0,3) << "\n"; 1189 1212 delete corr; 1190 1213 im.remove(); … … 1268 1291 << prn.mid(0,3).toLatin1().data() << " " 1269 1292 << corr->_iod << " " 1270 << norm << endl;1293 << norm << "\n"; 1271 1294 delete corr; 1272 1295 im.remove(); … … 1301 1324 out << "Provider ID changed: AC " << AC->name.toLatin1().data() << " " 1302 1325 << _resTime.datestr().c_str() << " " 1303 << _resTime.timestr().c_str() << endl;1326 << _resTime.timestr().c_str() << "\n"; 1304 1327 break; 1305 1328 } -
trunk/BNC/src/combination/bnccomb.h
r9530 r9635 4 4 5 5 #include <fstream> 6 #include <map> 6 7 #include <newmat.h> 7 8 #include "bncephuser.h" 8 9 #include "satObs.h" 10 #include "bncconst.h" 9 11 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h" 10 12 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h" … … 80 82 _iod = 0; 81 83 _dClkResult = 0.0; 84 _codeBiasIF = 0.0; 82 85 } 83 86 ~cmbCorr() {} … … 90 93 t_satCodeBias _satCodeBias; 91 94 QString _acName; 95 double _codeBiasIF; 92 96 double _dClkResult; 93 97 ColumnVector _diffRao; … … 106 110 QVector<cmbCorr*> corrs; 107 111 }; 112 113 class t_lcRefSig { 114 public: 115 enum type {dummy = 0, c1, c2, cIF}; 116 117 static t_frequency::type toFreq(char sys, type tt) { 118 switch (tt) { 119 case c1: 120 if (sys == 'G') return t_frequency::G1; 121 else if (sys == 'R') return t_frequency::R1; 122 else if (sys == 'E') return t_frequency::E1; 123 else if (sys == 'C') return t_frequency::C2; 124 else if (sys == 'J') return t_frequency::J1; 125 else if (sys == 'S') return t_frequency::S1; 126 else return t_frequency::dummy; 127 case c2: 128 if (sys == 'G') return t_frequency::G2; 129 else if (sys == 'R') return t_frequency::R2; 130 else if (sys == 'E') return t_frequency::E5; 131 else if (sys == 'C') return t_frequency::C6; 132 else if (sys == 'J') return t_frequency::J2; 133 else if (sys == 'S') return t_frequency::S5; 134 else return t_frequency::dummy; 135 case dummy: 136 case cIF: 137 return t_frequency::dummy; 138 } 139 return t_frequency::dummy; 140 } 141 142 static char toAttrib(char sys, type LC) { 143 switch (LC) { 144 case c1: 145 if (sys == 'G') return 'W'; 146 else if (sys == 'R') return 'P'; 147 else if (sys == 'E') return 'C'; 148 else if (sys == 'C') return 'I'; 149 else if (sys == 'J') return 'C'; 150 else if (sys == 'S') return 'C'; 151 break; 152 case c2: 153 if (sys == 'G') return 'W'; 154 else if (sys == 'R') return 'P'; 155 else if (sys == 'E') return 'Q'; 156 else if (sys == 'C') return 'I'; 157 else if (sys == 'J') return 'L'; 158 else if (sys == 'S') return 'Q'; 159 break; 160 case dummy: 161 case cIF: 162 return '_'; 163 break; 164 } 165 return '_'; 166 } 167 168 static void coeff(char sys, type tLC, double channel, std::map<t_frequency::type, double>& codeCoeff) { 169 codeCoeff.clear(); 170 t_frequency::type fType1 = toFreq(sys, c1); 171 t_frequency::type fType2 = toFreq(sys, c2); 172 double f1 = t_CST::freq(fType1, channel); 173 double f2 = t_CST::freq(fType2, channel); 174 switch (tLC) { 175 case c1: 176 codeCoeff[fType1] = 1.0; 177 return; 178 case c2: 179 codeCoeff[fType2] = 1.0; 180 return; 181 case cIF: 182 codeCoeff[fType1] = f1 * f1 / (f1 * f1 - f2 * f2); 183 codeCoeff[fType2] = -f2 * f2 / (f1 * f1 - f2 * f2); 184 return; 185 case t_lcRefSig::dummy: 186 return; 187 } 188 return; 189 } 190 }; 191 108 192 109 193 void processEpoch(char sys); … … 134 218 e_method _method; 135 219 int _cmbSampl; 220 QString _cmbRefAttributes; 136 221 QMap<QString, QMap<t_prn, t_orbCorr> > _orbCorrections; 137 222 QMap<QString, QMap<t_prn, t_satCodeBias> > _satCodeBiases;
Note:
See TracChangeset
for help on using the changeset viewer.