gnss-js 1.60.0 → 1.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-4WNIGDNR.js → chunk-TWAC2BZF.js} +59 -6
- package/dist/index.cjs +59 -6
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/positioning.cjs +59 -6
- package/dist/positioning.d.cts +28 -1
- package/dist/positioning.d.ts +28 -1
- package/dist/positioning.js +1 -1
- package/package.json +1 -1
|
@@ -1251,6 +1251,23 @@ var VAR_ICORR = [
|
|
|
1251
1251
|
187.0826
|
|
1252
1252
|
];
|
|
1253
1253
|
var varicorr = (give) => give > 0 && give <= 15 ? VAR_ICORR[give - 1] : 0;
|
|
1254
|
+
var GIVE_METERS = [
|
|
1255
|
+
0.3,
|
|
1256
|
+
0.6,
|
|
1257
|
+
0.9,
|
|
1258
|
+
1.2,
|
|
1259
|
+
1.5,
|
|
1260
|
+
1.8,
|
|
1261
|
+
2.1,
|
|
1262
|
+
2.4,
|
|
1263
|
+
2.7,
|
|
1264
|
+
3,
|
|
1265
|
+
3.6,
|
|
1266
|
+
4.5,
|
|
1267
|
+
6,
|
|
1268
|
+
15,
|
|
1269
|
+
45
|
|
1270
|
+
];
|
|
1254
1271
|
var DEGF = [
|
|
1255
1272
|
0,
|
|
1256
1273
|
5e-5,
|
|
@@ -1421,14 +1438,17 @@ var SbasProcessor = class {
|
|
|
1421
1438
|
}
|
|
1422
1439
|
}
|
|
1423
1440
|
decodeMask(msg) {
|
|
1424
|
-
const
|
|
1441
|
+
const iodp = getBitU(msg, 224, 2);
|
|
1442
|
+
const prns = [];
|
|
1425
1443
|
for (let i = 1; i <= 210; i++) {
|
|
1426
|
-
if (getBitU(msg, 13 + i, 1))
|
|
1444
|
+
if (getBitU(msg, 13 + i, 1)) prns.push(maskPrn(i));
|
|
1427
1445
|
}
|
|
1428
|
-
this.iodp
|
|
1429
|
-
|
|
1446
|
+
if (this.iodp === iodp && this.sats.length === prns.length && this.sats.every((s, k) => s.prn === prns[k]))
|
|
1447
|
+
return true;
|
|
1448
|
+
this.iodp = iodp;
|
|
1449
|
+
this.sats = prns.map((prn) => ({ prn }));
|
|
1430
1450
|
this.satIdx.clear();
|
|
1431
|
-
sats.forEach((s, k) => {
|
|
1451
|
+
this.sats.forEach((s, k) => {
|
|
1432
1452
|
if (s.prn) this.satIdx.set(s.prn, k);
|
|
1433
1453
|
});
|
|
1434
1454
|
return true;
|
|
@@ -1648,7 +1668,11 @@ var SbasProcessor = class {
|
|
|
1648
1668
|
break;
|
|
1649
1669
|
}
|
|
1650
1670
|
}
|
|
1651
|
-
|
|
1671
|
+
const iodi = getBitU(msg, 22, 2);
|
|
1672
|
+
const cur = this.ion[band];
|
|
1673
|
+
if (cur && cur.iodi === iodi && cur.igp.length === igp.length && cur.igp.every((g, k) => g.lat === igp[k].lat && g.lon === igp[k].lon))
|
|
1674
|
+
return true;
|
|
1675
|
+
this.ion[band] = { iodi, igp };
|
|
1652
1676
|
return true;
|
|
1653
1677
|
}
|
|
1654
1678
|
decodeIgpDelay(msg, week, tow) {
|
|
@@ -1680,6 +1704,35 @@ var SbasProcessor = class {
|
|
|
1680
1704
|
}
|
|
1681
1705
|
return n;
|
|
1682
1706
|
}
|
|
1707
|
+
/**
|
|
1708
|
+
* The current ionospheric grid — every IGP that carries a valid broadcast
|
|
1709
|
+
* vertical delay (MT18 mask populated by MT26 delays), across all bands, with
|
|
1710
|
+
* its GIVE (DO-229D Table A-17). For visualising the SBAS ionosphere; the
|
|
1711
|
+
* count matches {@link ionoGridPoints}. `week`/`tow` set the reference epoch
|
|
1712
|
+
* for each point's `ageSec` (the same argument the solver passes).
|
|
1713
|
+
*/
|
|
1714
|
+
ionoGrid(week, tow) {
|
|
1715
|
+
const now = gpsSeconds(week, tow);
|
|
1716
|
+
const out = [];
|
|
1717
|
+
for (let band = 0; band < this.ion.length; band++) {
|
|
1718
|
+
const b = this.ion[band];
|
|
1719
|
+
if (!b) continue;
|
|
1720
|
+
for (const g of b.igp) {
|
|
1721
|
+
if (g.give <= 0) continue;
|
|
1722
|
+
const givei = g.give - 1;
|
|
1723
|
+
out.push({
|
|
1724
|
+
latDeg: g.lat,
|
|
1725
|
+
lonDeg: g.lon,
|
|
1726
|
+
band,
|
|
1727
|
+
delayM: g.delay,
|
|
1728
|
+
givei,
|
|
1729
|
+
giveMeters: GIVE_METERS[givei] ?? NaN,
|
|
1730
|
+
ageSec: g.t0s ? now - g.t0s : NaN
|
|
1731
|
+
});
|
|
1732
|
+
}
|
|
1733
|
+
}
|
|
1734
|
+
return out;
|
|
1735
|
+
}
|
|
1683
1736
|
/**
|
|
1684
1737
|
* Correction-coverage census at a GPS week/time — a diagnostic funnel over
|
|
1685
1738
|
* the current state, explaining how many masked satellites are actually
|
package/dist/index.cjs
CHANGED
|
@@ -13461,6 +13461,23 @@ var VAR_ICORR = [
|
|
|
13461
13461
|
187.0826
|
|
13462
13462
|
];
|
|
13463
13463
|
var varicorr = (give) => give > 0 && give <= 15 ? VAR_ICORR[give - 1] : 0;
|
|
13464
|
+
var GIVE_METERS = [
|
|
13465
|
+
0.3,
|
|
13466
|
+
0.6,
|
|
13467
|
+
0.9,
|
|
13468
|
+
1.2,
|
|
13469
|
+
1.5,
|
|
13470
|
+
1.8,
|
|
13471
|
+
2.1,
|
|
13472
|
+
2.4,
|
|
13473
|
+
2.7,
|
|
13474
|
+
3,
|
|
13475
|
+
3.6,
|
|
13476
|
+
4.5,
|
|
13477
|
+
6,
|
|
13478
|
+
15,
|
|
13479
|
+
45
|
|
13480
|
+
];
|
|
13464
13481
|
var DEGF = [
|
|
13465
13482
|
0,
|
|
13466
13483
|
5e-5,
|
|
@@ -13631,14 +13648,17 @@ var SbasProcessor = class {
|
|
|
13631
13648
|
}
|
|
13632
13649
|
}
|
|
13633
13650
|
decodeMask(msg) {
|
|
13634
|
-
const
|
|
13651
|
+
const iodp = getBitU(msg, 224, 2);
|
|
13652
|
+
const prns = [];
|
|
13635
13653
|
for (let i = 1; i <= 210; i++) {
|
|
13636
|
-
if (getBitU(msg, 13 + i, 1))
|
|
13654
|
+
if (getBitU(msg, 13 + i, 1)) prns.push(maskPrn(i));
|
|
13637
13655
|
}
|
|
13638
|
-
this.iodp
|
|
13639
|
-
|
|
13656
|
+
if (this.iodp === iodp && this.sats.length === prns.length && this.sats.every((s, k) => s.prn === prns[k]))
|
|
13657
|
+
return true;
|
|
13658
|
+
this.iodp = iodp;
|
|
13659
|
+
this.sats = prns.map((prn) => ({ prn }));
|
|
13640
13660
|
this.satIdx.clear();
|
|
13641
|
-
sats.forEach((s, k) => {
|
|
13661
|
+
this.sats.forEach((s, k) => {
|
|
13642
13662
|
if (s.prn) this.satIdx.set(s.prn, k);
|
|
13643
13663
|
});
|
|
13644
13664
|
return true;
|
|
@@ -13858,7 +13878,11 @@ var SbasProcessor = class {
|
|
|
13858
13878
|
break;
|
|
13859
13879
|
}
|
|
13860
13880
|
}
|
|
13861
|
-
|
|
13881
|
+
const iodi = getBitU(msg, 22, 2);
|
|
13882
|
+
const cur = this.ion[band];
|
|
13883
|
+
if (cur && cur.iodi === iodi && cur.igp.length === igp.length && cur.igp.every((g, k) => g.lat === igp[k].lat && g.lon === igp[k].lon))
|
|
13884
|
+
return true;
|
|
13885
|
+
this.ion[band] = { iodi, igp };
|
|
13862
13886
|
return true;
|
|
13863
13887
|
}
|
|
13864
13888
|
decodeIgpDelay(msg, week, tow) {
|
|
@@ -13890,6 +13914,35 @@ var SbasProcessor = class {
|
|
|
13890
13914
|
}
|
|
13891
13915
|
return n;
|
|
13892
13916
|
}
|
|
13917
|
+
/**
|
|
13918
|
+
* The current ionospheric grid — every IGP that carries a valid broadcast
|
|
13919
|
+
* vertical delay (MT18 mask populated by MT26 delays), across all bands, with
|
|
13920
|
+
* its GIVE (DO-229D Table A-17). For visualising the SBAS ionosphere; the
|
|
13921
|
+
* count matches {@link ionoGridPoints}. `week`/`tow` set the reference epoch
|
|
13922
|
+
* for each point's `ageSec` (the same argument the solver passes).
|
|
13923
|
+
*/
|
|
13924
|
+
ionoGrid(week, tow) {
|
|
13925
|
+
const now = gpsSeconds(week, tow);
|
|
13926
|
+
const out = [];
|
|
13927
|
+
for (let band = 0; band < this.ion.length; band++) {
|
|
13928
|
+
const b = this.ion[band];
|
|
13929
|
+
if (!b) continue;
|
|
13930
|
+
for (const g of b.igp) {
|
|
13931
|
+
if (g.give <= 0) continue;
|
|
13932
|
+
const givei = g.give - 1;
|
|
13933
|
+
out.push({
|
|
13934
|
+
latDeg: g.lat,
|
|
13935
|
+
lonDeg: g.lon,
|
|
13936
|
+
band,
|
|
13937
|
+
delayM: g.delay,
|
|
13938
|
+
givei,
|
|
13939
|
+
giveMeters: GIVE_METERS[givei] ?? NaN,
|
|
13940
|
+
ageSec: g.t0s ? now - g.t0s : NaN
|
|
13941
|
+
});
|
|
13942
|
+
}
|
|
13943
|
+
}
|
|
13944
|
+
return out;
|
|
13945
|
+
}
|
|
13893
13946
|
/**
|
|
13894
13947
|
* Correction-coverage census at a GPS week/time — a diagnostic funnel over
|
|
13895
13948
|
* the current state, explaining how many masked satellites are actually
|
package/dist/index.d.cts
CHANGED
|
@@ -18,7 +18,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
|
|
|
18
18
|
export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
|
|
19
19
|
export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.cjs';
|
|
20
20
|
export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
|
|
21
|
-
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
|
|
21
|
+
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
|
|
22
22
|
export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
|
|
23
23
|
export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.cjs';
|
|
24
24
|
export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
|
|
|
18
18
|
export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
|
|
19
19
|
export { AllPositionsData, AlmanacPosition, DopValues, EpochSkyData, SatAzEl, SatPoint, SatPosition, VisibilityPass, VisibilityResult, almanacEpochMs, almanacSatPosition, computeAllPositions, computeDop, computeLiveSkyPositions, computeSatPosition, computeVisibility, computeVisibilityFromPositions, dopplerHz, ecefToAzEl, ephInfoToEphemeris, glonassAlmanacEpochMs, glonassAlmanacPosition, glonassPosition, keplerPosition, maskRadForAzimuth, navTimesFromEph, rangeRate, selectEphemeris } from './orbit.js';
|
|
20
20
|
export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
|
|
21
|
-
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
|
|
21
|
+
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, Degradation, DgnssOptions, DgnssSolution, EphemerisSource, FixedPositionResult, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, NetworkFcbResult, NetworkFcbSummary, NlArc, NlFcbResult, PppAntennaModel, PppArc, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppFixState, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, RtkObsEpoch, RtkObsInput, RtkPostProcessOptions, RtkPostProcessResult, RtkTrackPoint, SatGeom, SbasCorrectionSource, SbasIgp, SbasIonoDelay, SbasProcessor, SbasSatCorrection, SppOptions, SppSolution, TropoMapping, WlArc, WlFcbOptions, WlFcbResult, WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
|
|
22
22
|
export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
|
|
23
23
|
export { CompleteSatSignal, CompleteSignalStats, CompletenessAccumulator, CompletenessResult, CycleSlipAccumulator, CycleSlipEvent, CycleSlipResult, CycleSlipSignalStats, IonoAccumulator, IonoDcbResult, IonoPoint, IonoRatePoint, IonoRateSeries, IonoResult, IonoSeries, MultipathAccumulator, MultipathPoint, MultipathResult, MultipathSeries, MultipathSignalStat, QualityResult, SatDcbMap, analyzeQuality, applyIonoDcb, computeIonoRate, detrendIonoArcs, parseSinexBiasDcb } from './analysis.js';
|
|
24
24
|
export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
|
package/dist/index.js
CHANGED
package/dist/positioning.cjs
CHANGED
|
@@ -1727,6 +1727,23 @@ var VAR_ICORR = [
|
|
|
1727
1727
|
187.0826
|
|
1728
1728
|
];
|
|
1729
1729
|
var varicorr = (give) => give > 0 && give <= 15 ? VAR_ICORR[give - 1] : 0;
|
|
1730
|
+
var GIVE_METERS = [
|
|
1731
|
+
0.3,
|
|
1732
|
+
0.6,
|
|
1733
|
+
0.9,
|
|
1734
|
+
1.2,
|
|
1735
|
+
1.5,
|
|
1736
|
+
1.8,
|
|
1737
|
+
2.1,
|
|
1738
|
+
2.4,
|
|
1739
|
+
2.7,
|
|
1740
|
+
3,
|
|
1741
|
+
3.6,
|
|
1742
|
+
4.5,
|
|
1743
|
+
6,
|
|
1744
|
+
15,
|
|
1745
|
+
45
|
|
1746
|
+
];
|
|
1730
1747
|
var DEGF = [
|
|
1731
1748
|
0,
|
|
1732
1749
|
5e-5,
|
|
@@ -1897,14 +1914,17 @@ var SbasProcessor = class {
|
|
|
1897
1914
|
}
|
|
1898
1915
|
}
|
|
1899
1916
|
decodeMask(msg) {
|
|
1900
|
-
const
|
|
1917
|
+
const iodp = getBitU(msg, 224, 2);
|
|
1918
|
+
const prns = [];
|
|
1901
1919
|
for (let i = 1; i <= 210; i++) {
|
|
1902
|
-
if (getBitU(msg, 13 + i, 1))
|
|
1920
|
+
if (getBitU(msg, 13 + i, 1)) prns.push(maskPrn(i));
|
|
1903
1921
|
}
|
|
1904
|
-
this.iodp
|
|
1905
|
-
|
|
1922
|
+
if (this.iodp === iodp && this.sats.length === prns.length && this.sats.every((s, k) => s.prn === prns[k]))
|
|
1923
|
+
return true;
|
|
1924
|
+
this.iodp = iodp;
|
|
1925
|
+
this.sats = prns.map((prn) => ({ prn }));
|
|
1906
1926
|
this.satIdx.clear();
|
|
1907
|
-
sats.forEach((s, k) => {
|
|
1927
|
+
this.sats.forEach((s, k) => {
|
|
1908
1928
|
if (s.prn) this.satIdx.set(s.prn, k);
|
|
1909
1929
|
});
|
|
1910
1930
|
return true;
|
|
@@ -2124,7 +2144,11 @@ var SbasProcessor = class {
|
|
|
2124
2144
|
break;
|
|
2125
2145
|
}
|
|
2126
2146
|
}
|
|
2127
|
-
|
|
2147
|
+
const iodi = getBitU(msg, 22, 2);
|
|
2148
|
+
const cur = this.ion[band];
|
|
2149
|
+
if (cur && cur.iodi === iodi && cur.igp.length === igp.length && cur.igp.every((g, k) => g.lat === igp[k].lat && g.lon === igp[k].lon))
|
|
2150
|
+
return true;
|
|
2151
|
+
this.ion[band] = { iodi, igp };
|
|
2128
2152
|
return true;
|
|
2129
2153
|
}
|
|
2130
2154
|
decodeIgpDelay(msg, week, tow) {
|
|
@@ -2156,6 +2180,35 @@ var SbasProcessor = class {
|
|
|
2156
2180
|
}
|
|
2157
2181
|
return n;
|
|
2158
2182
|
}
|
|
2183
|
+
/**
|
|
2184
|
+
* The current ionospheric grid — every IGP that carries a valid broadcast
|
|
2185
|
+
* vertical delay (MT18 mask populated by MT26 delays), across all bands, with
|
|
2186
|
+
* its GIVE (DO-229D Table A-17). For visualising the SBAS ionosphere; the
|
|
2187
|
+
* count matches {@link ionoGridPoints}. `week`/`tow` set the reference epoch
|
|
2188
|
+
* for each point's `ageSec` (the same argument the solver passes).
|
|
2189
|
+
*/
|
|
2190
|
+
ionoGrid(week, tow) {
|
|
2191
|
+
const now = gpsSeconds(week, tow);
|
|
2192
|
+
const out = [];
|
|
2193
|
+
for (let band = 0; band < this.ion.length; band++) {
|
|
2194
|
+
const b = this.ion[band];
|
|
2195
|
+
if (!b) continue;
|
|
2196
|
+
for (const g of b.igp) {
|
|
2197
|
+
if (g.give <= 0) continue;
|
|
2198
|
+
const givei = g.give - 1;
|
|
2199
|
+
out.push({
|
|
2200
|
+
latDeg: g.lat,
|
|
2201
|
+
lonDeg: g.lon,
|
|
2202
|
+
band,
|
|
2203
|
+
delayM: g.delay,
|
|
2204
|
+
givei,
|
|
2205
|
+
giveMeters: GIVE_METERS[givei] ?? NaN,
|
|
2206
|
+
ageSec: g.t0s ? now - g.t0s : NaN
|
|
2207
|
+
});
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
return out;
|
|
2211
|
+
}
|
|
2159
2212
|
/**
|
|
2160
2213
|
* Correction-coverage census at a GPS week/time — a diagnostic funnel over
|
|
2161
2214
|
* the current state, explaining how many masked satellites are actually
|
package/dist/positioning.d.cts
CHANGED
|
@@ -599,6 +599,25 @@ interface SbasIonoDelay {
|
|
|
599
599
|
/** Variance (m²). */
|
|
600
600
|
varM2: number;
|
|
601
601
|
}
|
|
602
|
+
/** One ionospheric grid point (IGP) of the SBAS grid — its location, the
|
|
603
|
+
* broadcast vertical delay and its GIVE (grid ionospheric vertical error).
|
|
604
|
+
* For visualising the SBAS ionosphere (MT18 mask + MT26 delays). */
|
|
605
|
+
interface SbasIgp {
|
|
606
|
+
/** IGP geodetic latitude (deg). */
|
|
607
|
+
latDeg: number;
|
|
608
|
+
/** IGP geodetic longitude (deg, −180..180). */
|
|
609
|
+
lonDeg: number;
|
|
610
|
+
/** SBAS band index (0..10) the point belongs to. */
|
|
611
|
+
band: number;
|
|
612
|
+
/** Broadcast vertical L1 ionospheric delay (m). */
|
|
613
|
+
delayM: number;
|
|
614
|
+
/** GIVEI (0..14) — the broadcast grid-ionospheric-vertical-error indicator. */
|
|
615
|
+
givei: number;
|
|
616
|
+
/** GIVE — the 99.9% vertical-error bound (m), DO-229D Table A-17. */
|
|
617
|
+
giveMeters: number;
|
|
618
|
+
/** Age of the delay estimate (s) at the query epoch. */
|
|
619
|
+
ageSec: number;
|
|
620
|
+
}
|
|
602
621
|
declare class SbasProcessor {
|
|
603
622
|
private sats;
|
|
604
623
|
private satIdx;
|
|
@@ -640,6 +659,14 @@ declare class SbasProcessor {
|
|
|
640
659
|
activeSats(): string[];
|
|
641
660
|
/** Number of ionospheric grid points with a valid delay across all bands. */
|
|
642
661
|
ionoGridPoints(): number;
|
|
662
|
+
/**
|
|
663
|
+
* The current ionospheric grid — every IGP that carries a valid broadcast
|
|
664
|
+
* vertical delay (MT18 mask populated by MT26 delays), across all bands, with
|
|
665
|
+
* its GIVE (DO-229D Table A-17). For visualising the SBAS ionosphere; the
|
|
666
|
+
* count matches {@link ionoGridPoints}. `week`/`tow` set the reference epoch
|
|
667
|
+
* for each point's `ageSec` (the same argument the solver passes).
|
|
668
|
+
*/
|
|
669
|
+
ionoGrid(week: number, tow: number): SbasIgp[];
|
|
643
670
|
/**
|
|
644
671
|
* Correction-coverage census at a GPS week/time — a diagnostic funnel over
|
|
645
672
|
* the current state, explaining how many masked satellites are actually
|
|
@@ -1381,4 +1408,4 @@ declare function sbasProtectionLevels(sats: readonly {
|
|
|
1381
1408
|
*/
|
|
1382
1409
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
1383
1410
|
|
|
1384
|
-
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type Degradation, type DgnssOptions, type DgnssSolution, type EphemerisSource, type FixedPositionResult, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type NetworkFcbResult, type NetworkFcbSummary, type NlArc, type NlFcbResult, type PppAntennaModel, type PppArc, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppFixState, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type RtkObsEpoch, type RtkObsInput, type RtkPostProcessOptions, type RtkPostProcessResult, type RtkTrackPoint, type SatGeom, type SbasCorrectionSource, type SbasIonoDelay, SbasProcessor, type SbasSatCorrection, type SppOptions, type SppSolution, type TropoMapping, type WlArc, type WlFcbOptions, type WlFcbResult, type WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
|
1411
|
+
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type Degradation, type DgnssOptions, type DgnssSolution, type EphemerisSource, type FixedPositionResult, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type NetworkFcbResult, type NetworkFcbSummary, type NlArc, type NlFcbResult, type PppAntennaModel, type PppArc, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppFixState, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type RtkObsEpoch, type RtkObsInput, type RtkPostProcessOptions, type RtkPostProcessResult, type RtkTrackPoint, type SatGeom, type SbasCorrectionSource, type SbasIgp, type SbasIonoDelay, SbasProcessor, type SbasSatCorrection, type SppOptions, type SppSolution, type TropoMapping, type WlArc, type WlFcbOptions, type WlFcbResult, type WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
package/dist/positioning.d.ts
CHANGED
|
@@ -599,6 +599,25 @@ interface SbasIonoDelay {
|
|
|
599
599
|
/** Variance (m²). */
|
|
600
600
|
varM2: number;
|
|
601
601
|
}
|
|
602
|
+
/** One ionospheric grid point (IGP) of the SBAS grid — its location, the
|
|
603
|
+
* broadcast vertical delay and its GIVE (grid ionospheric vertical error).
|
|
604
|
+
* For visualising the SBAS ionosphere (MT18 mask + MT26 delays). */
|
|
605
|
+
interface SbasIgp {
|
|
606
|
+
/** IGP geodetic latitude (deg). */
|
|
607
|
+
latDeg: number;
|
|
608
|
+
/** IGP geodetic longitude (deg, −180..180). */
|
|
609
|
+
lonDeg: number;
|
|
610
|
+
/** SBAS band index (0..10) the point belongs to. */
|
|
611
|
+
band: number;
|
|
612
|
+
/** Broadcast vertical L1 ionospheric delay (m). */
|
|
613
|
+
delayM: number;
|
|
614
|
+
/** GIVEI (0..14) — the broadcast grid-ionospheric-vertical-error indicator. */
|
|
615
|
+
givei: number;
|
|
616
|
+
/** GIVE — the 99.9% vertical-error bound (m), DO-229D Table A-17. */
|
|
617
|
+
giveMeters: number;
|
|
618
|
+
/** Age of the delay estimate (s) at the query epoch. */
|
|
619
|
+
ageSec: number;
|
|
620
|
+
}
|
|
602
621
|
declare class SbasProcessor {
|
|
603
622
|
private sats;
|
|
604
623
|
private satIdx;
|
|
@@ -640,6 +659,14 @@ declare class SbasProcessor {
|
|
|
640
659
|
activeSats(): string[];
|
|
641
660
|
/** Number of ionospheric grid points with a valid delay across all bands. */
|
|
642
661
|
ionoGridPoints(): number;
|
|
662
|
+
/**
|
|
663
|
+
* The current ionospheric grid — every IGP that carries a valid broadcast
|
|
664
|
+
* vertical delay (MT18 mask populated by MT26 delays), across all bands, with
|
|
665
|
+
* its GIVE (DO-229D Table A-17). For visualising the SBAS ionosphere; the
|
|
666
|
+
* count matches {@link ionoGridPoints}. `week`/`tow` set the reference epoch
|
|
667
|
+
* for each point's `ageSec` (the same argument the solver passes).
|
|
668
|
+
*/
|
|
669
|
+
ionoGrid(week: number, tow: number): SbasIgp[];
|
|
643
670
|
/**
|
|
644
671
|
* Correction-coverage census at a GPS week/time — a diagnostic funnel over
|
|
645
672
|
* the current state, explaining how many masked satellites are actually
|
|
@@ -1381,4 +1408,4 @@ declare function sbasProtectionLevels(sats: readonly {
|
|
|
1381
1408
|
*/
|
|
1382
1409
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
1383
1410
|
|
|
1384
|
-
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type Degradation, type DgnssOptions, type DgnssSolution, type EphemerisSource, type FixedPositionResult, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type NetworkFcbResult, type NetworkFcbSummary, type NlArc, type NlFcbResult, type PppAntennaModel, type PppArc, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppFixState, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type RtkObsEpoch, type RtkObsInput, type RtkPostProcessOptions, type RtkPostProcessResult, type RtkTrackPoint, type SatGeom, type SbasCorrectionSource, type SbasIonoDelay, SbasProcessor, type SbasSatCorrection, type SppOptions, type SppSolution, type TropoMapping, type WlArc, type WlFcbOptions, type WlFcbResult, type WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
|
1411
|
+
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type Degradation, type DgnssOptions, type DgnssSolution, type EphemerisSource, type FixedPositionResult, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type NetworkFcbResult, type NetworkFcbSummary, type NlArc, type NlFcbResult, type PppAntennaModel, type PppArc, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppFixState, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type RtkObsEpoch, type RtkObsInput, type RtkPostProcessOptions, type RtkPostProcessResult, type RtkTrackPoint, type SatGeom, type SbasCorrectionSource, type SbasIgp, type SbasIonoDelay, SbasProcessor, type SbasSatCorrection, type SppOptions, type SppSolution, type TropoMapping, type WlArc, type WlFcbOptions, type WlFcbResult, type WlObs, buildPppAntenna, createPppCorrections, estimateNarrowlaneFcb, estimateNetworkFcbs, estimateWidelaneFcb, extractWidelaneArcs, fixPppPosition, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, postProcessRtk, resolvePppAmbiguities, satClockCorrection, sbasIonoDeg, sbasLongTermDeg, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
package/dist/positioning.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gnss-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.62.0",
|
|
4
4
|
"description": "Comprehensive GNSS library for JavaScript — time scales, coordinates, RINEX parsing, RTCM3 decoding, orbit computation, and signal analysis",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|