Changeset 11085 in ntrip
- Timestamp:
- Oct 14, 2026, 11:47:57 AM (73 minutes ago)
- Location:
- trunk/BNC
- Files:
-
- 13 edited
-
CHANGELOG.md (modified) (1 diff)
-
src/bnchelp.html (modified) (1 diff)
-
src/ssrQc.cpp (modified) (6 diffs)
-
src/ssrQc.h (modified) (1 diff)
-
tests/cases/ssr_qc/expected/SSRA00BKG1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA00CHC1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA00CNE1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA00GMV0_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA00NRC0_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA01GFZ1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc/expected/SSRA01SHA1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc_select/expected/SSRA00CNE1_S_20262750000_01D_QC.txt.gz (modified) ( previous)
-
tests/cases/ssr_qc_select/expected/SSRA00GMV0_S_20262750000_01D_QC.txt.gz (modified) ( previous)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/CHANGELOG.md
r11084 r11085 2 2 ## 2.13.8 (2026-10-??) 3 3 - ADDED: epoch/velocity fields to PPP coordinates file to allow BNC to propagate the reference coordinates related to a dedicated reference epoch to the current processing epoch internally; coordinates can also be given as latitude/longitude/height 4 - ADDED: **SSR QC** of decoded Broadcast Correction streams (options 'QC Directory', 'QC Streams', 'QC Reference', 'QC Interval'; example configuration '31_SsrQC.bnc'). One daily report file per stream with epochs, declared and actual update intervals, gaps, latency, completeness w.r.t. healthy broadcast ephemerides, IOD matching, code and phase bias signals, missing code biases of the reference signals, clock jumps and largest orbit corrections 4 - ADDED: **SSR QC** of decoded Broadcast Correction streams (options 'QC Directory', 'QC Streams', 'QC Reference', 'QC Interval'; example configuration '31_SsrQC.bnc'). One daily report file per stream with epochs, declared and actual update intervals, gaps, latency, completeness w.r.t. healthy broadcast ephemerides, IOD matching, code and phase bias signals, yaw angle availability, missing code biases of the reference signals, clock jumps and largest orbit corrections 5 5 - ADDED: Stream comparison in the SSR QC: orbits (radial, along, cross), clocks referred to the reference signals and signal-in-space differences (SIS = radial - clock) of each stream compared with the consensus of the other ACs (one vote per AC, own AC left out, combination products not voting) or with a selected stream (e.g. 'INTERNAL'), as RMS and standard deviation per satellite and system 6 6 - ADDED: SIS (radial - clock, satellite-specific clock offset included) per epoch and SISRMS/SISSig per satellite and system in the SP3 comparison -
trunk/BNC/src/bnchelp.html
r11083 r11085 5132 5132 (see section 'Combination'),</li> 5133 5133 <li>the phase bias signals provided,</li> 5134 <li>the availability of the satellite yaw angle with the phase biases: 'not provided', or the number of 5135 satellites and the percentage of phase bias records with yaw angle, listing satellites without or only partly 5136 with yaw angle. New RTCM-SSR signals the yaw angle with the Yaw Information Indicator; old RTCM-SSR and 5137 IGS-SSR always carry the field, a provider without attitude information sends zeros, which is counted as not 5138 provided. Without a yaw angle from the stream, a PPP or combination user depends on its own attitude model 5139 (see section 'Combination'), which may differ from the provider's attitude during eclipse seasons and noon/midnight 5140 turns,</li> 5134 5141 <li>clock jumps, i.e. clock changes between consecutive epochs (same IOD) beyond the clock rate of more than 5135 5142 0.5 m,</li> -
trunk/BNC/src/ssrQc.cpp
r11081 r11085 182 182 << "Checks: epochs and update intervals, gaps (interval > 2 x max(declared, median)), latency," 183 183 << " completeness w.r.t. healthy broadcast ephemerides," << endl 184 << "IOD matching, code and phase bias signals, code biases of the reference signals, clock jumps > " 184 << "IOD matching, code and phase bias signals, yaw angle, code biases of the reference signals, clock jumps > " 185 185 << MAX_CLK_JUMP << " m, largest orbit corrections" << endl; 186 186 } … … 416 416 _phaseSignals[staSys].insert(QString::fromStdString(frqBias._rnxType2ch)); 417 417 } 418 // Yaw angle: new RTCM-SSR has an indicator, old RTCM-SSR and IGS-SSR always 419 // carry the field, providers without attitude information send zeros 420 t_satStat& stat = _satStat[QString::fromStdString(bias._staID) + ' ' + 421 QString::fromStdString(bias._prn.toString())]; 422 stat.numPB++; 423 bool yawProvided = (bias._ssrFormat == ssrRtcmNew) ? (bias._satYawInfoInd != 0) 424 : (bias._yaw != 0.0 || bias._yawRate != 0.0); 425 if (yawProvided) { 426 stat.numYaw++; 427 } 418 428 } 419 429 } … … 707 717 if (final) { 708 718 endTime = _staLast.value(staID, _lastTime); 719 if (endTime < _intervalStart) { // stream without data in the last interval 720 endTime = _lastTime; 721 } 709 722 } 710 723 out << endl << "=== SSR QC " << staID.toStdString() << ' ' … … 746 759 for (char sys : systems) { 747 760 QMap<QString, unsigned> missOrb, missClk, missCB, missPB, iodUnknown, unhealthy, noEph, 748 jumps, missRef; 761 jumps, missRef, noYaw, yawPartly; 762 unsigned numPB = 0, numYaw = 0, yawSats = 0; 749 763 double maxRadial = 0.0, maxAlongCross = 0.0; 750 764 QString maxRadialPrn, maxAlongCrossPrn; … … 792 806 if (stat.refBiasOK) { 793 807 biasIF.push_back(stat.biasIF); 808 } 809 if (stat.numPB) { 810 numPB += stat.numPB; 811 numYaw += stat.numYaw; 812 if (stat.numYaw) { 813 yawSats++; 814 if (stat.numYaw < stat.numPB) { 815 yawPartly[prn] = stat.numPB - stat.numYaw; 816 } 817 } 818 else { 819 noYaw[prn] = 0; 820 } 794 821 } 795 822 } … … 843 870 lines << "phase bias signals: " + sigs.join(" "); 844 871 } 872 if (numPB) { 873 if (numYaw == 0) { 874 lines << "yaw angle: not provided"; 875 } 876 else { 877 lines << QString("yaw angle: provided for %1 of %2 satellites (%3 % of the phase bias records)") 878 .arg(yawSats).arg(yawSats + noYaw.size()).arg(100.0 * numYaw / numPB, 0, 'f', 1); 879 addSats("phase biases without yaw angle", noYaw); 880 addSats("phase biases partly without yaw angle (records)", yawPartly); 881 } 882 } 845 883 addSats(QString("clock jumps > %1 m").arg(MAX_CLK_JUMP), jumps); 846 884 if (!maxRadialPrn.isEmpty()) { -
trunk/BNC/src/ssrQc.h
r11081 r11085 66 66 bool refBiasOK = false; 67 67 double biasIF = 0.0; // ionosphere-free combination of the reference biases [m] 68 unsigned numPB = 0; // phase bias records 69 unsigned numYaw = 0; // phase bias records with yaw angle 68 70 }; 69 71
Note:
See TracChangeset
for help on using the changeset viewer.
