gnss-js 1.57.0 → 1.59.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-BU6YC6VK.js → chunk-7NZ4SJTJ.js} +62 -9
- package/dist/index.cjs +64 -9
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -1
- package/dist/positioning.cjs +64 -9
- package/dist/positioning.d.cts +37 -1
- package/dist/positioning.d.ts +37 -1
- package/dist/positioning.js +5 -1
- package/package.json +1 -1
|
@@ -1213,7 +1213,7 @@ var D2R = Math.PI / 180;
|
|
|
1213
1213
|
var R2D = 180 / Math.PI;
|
|
1214
1214
|
var SEC_PER_WEEK = 604800;
|
|
1215
1215
|
var MAXSBSAGEF = 30;
|
|
1216
|
-
var MAXSBSAGEL =
|
|
1216
|
+
var MAXSBSAGEL = 360;
|
|
1217
1217
|
var MAXBAND = 10;
|
|
1218
1218
|
var two = (n) => String(n).padStart(2, "0");
|
|
1219
1219
|
var VAR_FCORR = [
|
|
@@ -1270,6 +1270,17 @@ var DEGF = [
|
|
|
1270
1270
|
58e-4
|
|
1271
1271
|
];
|
|
1272
1272
|
var degfcorr = (ai) => ai > 0 && ai <= 15 ? DEGF[ai] : 58e-4;
|
|
1273
|
+
function sbasLongTermDeg(d, vel, ageSec) {
|
|
1274
|
+
if (vel) {
|
|
1275
|
+
if (ageSec > 0 && ageSec < d.iltcV1) return 0;
|
|
1276
|
+
return d.cltcLsb + d.cltcV1 * Math.max(0, -ageSec, ageSec - d.iltcV1);
|
|
1277
|
+
}
|
|
1278
|
+
return d.cltcV0 * Math.floor(Math.abs(ageSec) / d.iltcV0);
|
|
1279
|
+
}
|
|
1280
|
+
function sbasIonoDeg(d, ageSec) {
|
|
1281
|
+
const dt = Math.abs(ageSec);
|
|
1282
|
+
return d.cionoStep * Math.floor(dt / d.iiono) + d.cionoRamp * dt;
|
|
1283
|
+
}
|
|
1273
1284
|
var x1 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85];
|
|
1274
1285
|
var x2 = [-55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
|
|
1275
1286
|
var x3 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75];
|
|
@@ -1323,6 +1334,7 @@ var SbasProcessor = class {
|
|
|
1323
1334
|
satIdx = /* @__PURE__ */ new Map();
|
|
1324
1335
|
iodp = -1;
|
|
1325
1336
|
tlat = 0;
|
|
1337
|
+
degr = null;
|
|
1326
1338
|
ion = [];
|
|
1327
1339
|
/** GEO PRN(s) whose messages have been ingested. */
|
|
1328
1340
|
geoPrns = /* @__PURE__ */ new Set();
|
|
@@ -1349,6 +1361,8 @@ var SbasProcessor = class {
|
|
|
1349
1361
|
return this.decodeIntegrity(msg) ? type : -1;
|
|
1350
1362
|
case 7:
|
|
1351
1363
|
return this.decodeDegradation(msg) ? type : -1;
|
|
1364
|
+
case 10:
|
|
1365
|
+
return this.decodeMt10(msg) ? type : -1;
|
|
1352
1366
|
case 18:
|
|
1353
1367
|
return this.decodeIgpMask(msg) ? type : -1;
|
|
1354
1368
|
case 24:
|
|
@@ -1417,6 +1431,30 @@ var SbasProcessor = class {
|
|
|
1417
1431
|
}
|
|
1418
1432
|
return true;
|
|
1419
1433
|
}
|
|
1434
|
+
/** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
|
|
1435
|
+
* preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
|
|
1436
|
+
* Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
|
|
1437
|
+
decodeMt10(msg) {
|
|
1438
|
+
const u = (p, n) => getBitU(msg, p, n);
|
|
1439
|
+
this.degr = {
|
|
1440
|
+
brrc: u(14, 10) * 2e-3,
|
|
1441
|
+
cltcLsb: u(24, 10) * 2e-3,
|
|
1442
|
+
cltcV1: u(34, 10) * 5e-5,
|
|
1443
|
+
iltcV1: u(44, 9),
|
|
1444
|
+
cltcV0: u(53, 10) * 2e-3,
|
|
1445
|
+
iltcV0: u(63, 9) || 1,
|
|
1446
|
+
cgeoLsb: u(72, 10) * 5e-4,
|
|
1447
|
+
cgeoV: u(82, 10) * 5e-5,
|
|
1448
|
+
igeo: u(92, 9),
|
|
1449
|
+
cer: u(101, 6) * 0.5,
|
|
1450
|
+
cionoStep: u(107, 10) * 1e-3,
|
|
1451
|
+
iiono: u(117, 9) || 1,
|
|
1452
|
+
cionoRamp: u(126, 10) * 5e-6,
|
|
1453
|
+
rssUdre: u(136, 1) === 1,
|
|
1454
|
+
rssIono: u(137, 1) === 1
|
|
1455
|
+
};
|
|
1456
|
+
return true;
|
|
1457
|
+
}
|
|
1420
1458
|
decodeMixed(msg, week, tow) {
|
|
1421
1459
|
if (this.iodp !== getBitU(msg, 110, 2)) return false;
|
|
1422
1460
|
const blk = getBitU(msg, 112, 2);
|
|
@@ -1463,7 +1501,8 @@ var SbasProcessor = class {
|
|
|
1463
1501
|
dvel: [0, 0, 0],
|
|
1464
1502
|
daf0: getBitS(msg, p + 41, 10) * P2_31,
|
|
1465
1503
|
daf1: 0,
|
|
1466
|
-
t0s: gpsSeconds(week, tow)
|
|
1504
|
+
t0s: gpsSeconds(week, tow),
|
|
1505
|
+
vel: false
|
|
1467
1506
|
};
|
|
1468
1507
|
return true;
|
|
1469
1508
|
}
|
|
@@ -1487,7 +1526,8 @@ var SbasProcessor = class {
|
|
|
1487
1526
|
],
|
|
1488
1527
|
daf0: getBitS(msg, p + 47, 11) * P2_31,
|
|
1489
1528
|
daf1: getBitS(msg, p + 82, 8) * P2_39,
|
|
1490
|
-
t0s: gpsSeconds(week, tow + t)
|
|
1529
|
+
t0s: gpsSeconds(week, tow + t),
|
|
1530
|
+
vel: true
|
|
1491
1531
|
};
|
|
1492
1532
|
return true;
|
|
1493
1533
|
}
|
|
@@ -1608,9 +1648,16 @@ var SbasProcessor = class {
|
|
|
1608
1648
|
const tf = now - s.fcorr.t0s + this.tlat;
|
|
1609
1649
|
if (Math.abs(tf) > MAXSBSAGEF || s.fcorr.udre >= 15) return null;
|
|
1610
1650
|
const prc = s.fcorr.prc;
|
|
1611
|
-
const
|
|
1651
|
+
const sigUdre = Math.sqrt(varfcorr(s.fcorr.udre));
|
|
1652
|
+
const efc = degfcorr(s.fcorr.ai) * tf * tf / 2;
|
|
1653
|
+
const eltc = this.degr && s.lcorr && s.lcorr.t0s !== 0 ? sbasLongTermDeg(this.degr, s.lcorr.vel, now - s.lcorr.t0s) : 0;
|
|
1654
|
+
const varM2 = this.degr?.rssUdre ? sigUdre * sigUdre + efc * efc + eltc * eltc : (sigUdre + efc + eltc) ** 2;
|
|
1612
1655
|
return { dPos: drs, dClkS: dclk + prc / C_LIGHT, prcM: prc, varM2, iode };
|
|
1613
1656
|
}
|
|
1657
|
+
/** The last-decoded MT10 degradation factors, or null if none seen. */
|
|
1658
|
+
get degradation() {
|
|
1659
|
+
return this.degr;
|
|
1660
|
+
}
|
|
1614
1661
|
/**
|
|
1615
1662
|
* Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
|
|
1616
1663
|
* position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
|
|
@@ -1659,14 +1706,18 @@ var SbasProcessor = class {
|
|
|
1659
1706
|
} else return null;
|
|
1660
1707
|
const now = gpsSeconds(week, tow);
|
|
1661
1708
|
let delay = 0;
|
|
1662
|
-
let
|
|
1709
|
+
let varVert = 0;
|
|
1663
1710
|
for (let i = 0; i < 4; i++) {
|
|
1664
1711
|
const g = pts[i];
|
|
1665
1712
|
if (!g) continue;
|
|
1666
1713
|
delay += w[i] * g.delay;
|
|
1667
|
-
|
|
1714
|
+
const sigGive = Math.sqrt(varicorr(g.give));
|
|
1715
|
+
const d = this.degr;
|
|
1716
|
+
const eiono = d ? sbasIonoDeg(d, now - g.t0s) : 0;
|
|
1717
|
+
const sig2 = d?.rssIono ? sigGive * sigGive + eiono * eiono : (sigGive + eiono) ** 2;
|
|
1718
|
+
varVert += w[i] * sig2;
|
|
1668
1719
|
}
|
|
1669
|
-
return { delayM: delay * fp, varM2:
|
|
1720
|
+
return { delayM: delay * fp, varM2: varVert * fp * fp };
|
|
1670
1721
|
}
|
|
1671
1722
|
/** Find the four IGPs bracketing a pierce point (RTKLIB `searchigp`). */
|
|
1672
1723
|
searchIgp(latP, lonP) {
|
|
@@ -3081,10 +3132,10 @@ function sagnac2(pos, travelTimeS) {
|
|
|
3081
3132
|
function sbasAirTropoVar(elRad) {
|
|
3082
3133
|
const elDeg = elRad * 180 / Math.PI;
|
|
3083
3134
|
const sigMp = 0.13 + 0.53 * Math.exp(-elDeg / 10);
|
|
3084
|
-
const
|
|
3135
|
+
const NOISE_DIVG_AADA = 0.36;
|
|
3085
3136
|
const m = 1.001 / Math.sqrt(2001e-6 + Math.sin(elRad) * Math.sin(elRad));
|
|
3086
3137
|
const sigTropo = 0.12 * m;
|
|
3087
|
-
return sigMp * sigMp +
|
|
3138
|
+
return sigMp * sigMp + NOISE_DIVG_AADA * NOISE_DIVG_AADA + sigTropo * sigTropo;
|
|
3088
3139
|
}
|
|
3089
3140
|
function invertMatrix(A) {
|
|
3090
3141
|
const n = A.length;
|
|
@@ -3380,6 +3431,8 @@ export {
|
|
|
3380
3431
|
solveDgnss,
|
|
3381
3432
|
RtkFloatEngine,
|
|
3382
3433
|
postProcessRtk,
|
|
3434
|
+
sbasLongTermDeg,
|
|
3435
|
+
sbasIonoDeg,
|
|
3383
3436
|
SbasProcessor,
|
|
3384
3437
|
niellMapping,
|
|
3385
3438
|
gmst,
|
package/dist/index.cjs
CHANGED
|
@@ -303,8 +303,10 @@ __export(src_exports, {
|
|
|
303
303
|
rhumbLine: () => rhumbLine,
|
|
304
304
|
rtcm3Constellation: () => rtcm3Constellation,
|
|
305
305
|
satClockCorrection: () => satClockCorrection,
|
|
306
|
+
sbasIonoDeg: () => sbasIonoDeg,
|
|
306
307
|
sbasL5MessageName: () => sbasL5MessageName,
|
|
307
308
|
sbasL5MessageType: () => sbasL5MessageType,
|
|
309
|
+
sbasLongTermDeg: () => sbasLongTermDeg,
|
|
308
310
|
sbasProtectionLevels: () => sbasProtectionLevels,
|
|
309
311
|
sbfCrc16: () => crc16,
|
|
310
312
|
scanSbfFrames: () => scanSbfFrames,
|
|
@@ -13421,7 +13423,7 @@ var D2R = Math.PI / 180;
|
|
|
13421
13423
|
var R2D = 180 / Math.PI;
|
|
13422
13424
|
var SEC_PER_WEEK12 = 604800;
|
|
13423
13425
|
var MAXSBSAGEF = 30;
|
|
13424
|
-
var MAXSBSAGEL =
|
|
13426
|
+
var MAXSBSAGEL = 360;
|
|
13425
13427
|
var MAXBAND = 10;
|
|
13426
13428
|
var two8 = (n) => String(n).padStart(2, "0");
|
|
13427
13429
|
var VAR_FCORR = [
|
|
@@ -13478,6 +13480,17 @@ var DEGF = [
|
|
|
13478
13480
|
58e-4
|
|
13479
13481
|
];
|
|
13480
13482
|
var degfcorr = (ai) => ai > 0 && ai <= 15 ? DEGF[ai] : 58e-4;
|
|
13483
|
+
function sbasLongTermDeg(d, vel, ageSec) {
|
|
13484
|
+
if (vel) {
|
|
13485
|
+
if (ageSec > 0 && ageSec < d.iltcV1) return 0;
|
|
13486
|
+
return d.cltcLsb + d.cltcV1 * Math.max(0, -ageSec, ageSec - d.iltcV1);
|
|
13487
|
+
}
|
|
13488
|
+
return d.cltcV0 * Math.floor(Math.abs(ageSec) / d.iltcV0);
|
|
13489
|
+
}
|
|
13490
|
+
function sbasIonoDeg(d, ageSec) {
|
|
13491
|
+
const dt = Math.abs(ageSec);
|
|
13492
|
+
return d.cionoStep * Math.floor(dt / d.iiono) + d.cionoRamp * dt;
|
|
13493
|
+
}
|
|
13481
13494
|
var x1 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85];
|
|
13482
13495
|
var x2 = [-55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
|
|
13483
13496
|
var x3 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75];
|
|
@@ -13531,6 +13544,7 @@ var SbasProcessor = class {
|
|
|
13531
13544
|
satIdx = /* @__PURE__ */ new Map();
|
|
13532
13545
|
iodp = -1;
|
|
13533
13546
|
tlat = 0;
|
|
13547
|
+
degr = null;
|
|
13534
13548
|
ion = [];
|
|
13535
13549
|
/** GEO PRN(s) whose messages have been ingested. */
|
|
13536
13550
|
geoPrns = /* @__PURE__ */ new Set();
|
|
@@ -13557,6 +13571,8 @@ var SbasProcessor = class {
|
|
|
13557
13571
|
return this.decodeIntegrity(msg) ? type : -1;
|
|
13558
13572
|
case 7:
|
|
13559
13573
|
return this.decodeDegradation(msg) ? type : -1;
|
|
13574
|
+
case 10:
|
|
13575
|
+
return this.decodeMt10(msg) ? type : -1;
|
|
13560
13576
|
case 18:
|
|
13561
13577
|
return this.decodeIgpMask(msg) ? type : -1;
|
|
13562
13578
|
case 24:
|
|
@@ -13625,6 +13641,30 @@ var SbasProcessor = class {
|
|
|
13625
13641
|
}
|
|
13626
13642
|
return true;
|
|
13627
13643
|
}
|
|
13644
|
+
/** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
|
|
13645
|
+
* preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
|
|
13646
|
+
* Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
|
|
13647
|
+
decodeMt10(msg) {
|
|
13648
|
+
const u = (p, n) => getBitU(msg, p, n);
|
|
13649
|
+
this.degr = {
|
|
13650
|
+
brrc: u(14, 10) * 2e-3,
|
|
13651
|
+
cltcLsb: u(24, 10) * 2e-3,
|
|
13652
|
+
cltcV1: u(34, 10) * 5e-5,
|
|
13653
|
+
iltcV1: u(44, 9),
|
|
13654
|
+
cltcV0: u(53, 10) * 2e-3,
|
|
13655
|
+
iltcV0: u(63, 9) || 1,
|
|
13656
|
+
cgeoLsb: u(72, 10) * 5e-4,
|
|
13657
|
+
cgeoV: u(82, 10) * 5e-5,
|
|
13658
|
+
igeo: u(92, 9),
|
|
13659
|
+
cer: u(101, 6) * 0.5,
|
|
13660
|
+
cionoStep: u(107, 10) * 1e-3,
|
|
13661
|
+
iiono: u(117, 9) || 1,
|
|
13662
|
+
cionoRamp: u(126, 10) * 5e-6,
|
|
13663
|
+
rssUdre: u(136, 1) === 1,
|
|
13664
|
+
rssIono: u(137, 1) === 1
|
|
13665
|
+
};
|
|
13666
|
+
return true;
|
|
13667
|
+
}
|
|
13628
13668
|
decodeMixed(msg, week, tow) {
|
|
13629
13669
|
if (this.iodp !== getBitU(msg, 110, 2)) return false;
|
|
13630
13670
|
const blk = getBitU(msg, 112, 2);
|
|
@@ -13671,7 +13711,8 @@ var SbasProcessor = class {
|
|
|
13671
13711
|
dvel: [0, 0, 0],
|
|
13672
13712
|
daf0: getBitS(msg, p + 41, 10) * P2_31,
|
|
13673
13713
|
daf1: 0,
|
|
13674
|
-
t0s: gpsSeconds(week, tow)
|
|
13714
|
+
t0s: gpsSeconds(week, tow),
|
|
13715
|
+
vel: false
|
|
13675
13716
|
};
|
|
13676
13717
|
return true;
|
|
13677
13718
|
}
|
|
@@ -13695,7 +13736,8 @@ var SbasProcessor = class {
|
|
|
13695
13736
|
],
|
|
13696
13737
|
daf0: getBitS(msg, p + 47, 11) * P2_31,
|
|
13697
13738
|
daf1: getBitS(msg, p + 82, 8) * P2_39,
|
|
13698
|
-
t0s: gpsSeconds(week, tow + t)
|
|
13739
|
+
t0s: gpsSeconds(week, tow + t),
|
|
13740
|
+
vel: true
|
|
13699
13741
|
};
|
|
13700
13742
|
return true;
|
|
13701
13743
|
}
|
|
@@ -13816,9 +13858,16 @@ var SbasProcessor = class {
|
|
|
13816
13858
|
const tf = now - s.fcorr.t0s + this.tlat;
|
|
13817
13859
|
if (Math.abs(tf) > MAXSBSAGEF || s.fcorr.udre >= 15) return null;
|
|
13818
13860
|
const prc = s.fcorr.prc;
|
|
13819
|
-
const
|
|
13861
|
+
const sigUdre = Math.sqrt(varfcorr(s.fcorr.udre));
|
|
13862
|
+
const efc = degfcorr(s.fcorr.ai) * tf * tf / 2;
|
|
13863
|
+
const eltc = this.degr && s.lcorr && s.lcorr.t0s !== 0 ? sbasLongTermDeg(this.degr, s.lcorr.vel, now - s.lcorr.t0s) : 0;
|
|
13864
|
+
const varM2 = this.degr?.rssUdre ? sigUdre * sigUdre + efc * efc + eltc * eltc : (sigUdre + efc + eltc) ** 2;
|
|
13820
13865
|
return { dPos: drs, dClkS: dclk + prc / C_LIGHT, prcM: prc, varM2, iode };
|
|
13821
13866
|
}
|
|
13867
|
+
/** The last-decoded MT10 degradation factors, or null if none seen. */
|
|
13868
|
+
get degradation() {
|
|
13869
|
+
return this.degr;
|
|
13870
|
+
}
|
|
13822
13871
|
/**
|
|
13823
13872
|
* Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
|
|
13824
13873
|
* position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
|
|
@@ -13867,14 +13916,18 @@ var SbasProcessor = class {
|
|
|
13867
13916
|
} else return null;
|
|
13868
13917
|
const now = gpsSeconds(week, tow);
|
|
13869
13918
|
let delay = 0;
|
|
13870
|
-
let
|
|
13919
|
+
let varVert = 0;
|
|
13871
13920
|
for (let i = 0; i < 4; i++) {
|
|
13872
13921
|
const g = pts[i];
|
|
13873
13922
|
if (!g) continue;
|
|
13874
13923
|
delay += w[i] * g.delay;
|
|
13875
|
-
|
|
13924
|
+
const sigGive = Math.sqrt(varicorr(g.give));
|
|
13925
|
+
const d = this.degr;
|
|
13926
|
+
const eiono = d ? sbasIonoDeg(d, now - g.t0s) : 0;
|
|
13927
|
+
const sig2 = d?.rssIono ? sigGive * sigGive + eiono * eiono : (sigGive + eiono) ** 2;
|
|
13928
|
+
varVert += w[i] * sig2;
|
|
13876
13929
|
}
|
|
13877
|
-
return { delayM: delay * fp, varM2:
|
|
13930
|
+
return { delayM: delay * fp, varM2: varVert * fp * fp };
|
|
13878
13931
|
}
|
|
13879
13932
|
/** Find the four IGPs bracketing a pierce point (RTKLIB `searchigp`). */
|
|
13880
13933
|
searchIgp(latP, lonP) {
|
|
@@ -15289,10 +15342,10 @@ function sagnac2(pos, travelTimeS) {
|
|
|
15289
15342
|
function sbasAirTropoVar(elRad) {
|
|
15290
15343
|
const elDeg = elRad * 180 / Math.PI;
|
|
15291
15344
|
const sigMp = 0.13 + 0.53 * Math.exp(-elDeg / 10);
|
|
15292
|
-
const
|
|
15345
|
+
const NOISE_DIVG_AADA = 0.36;
|
|
15293
15346
|
const m = 1.001 / Math.sqrt(2001e-6 + Math.sin(elRad) * Math.sin(elRad));
|
|
15294
15347
|
const sigTropo = 0.12 * m;
|
|
15295
|
-
return sigMp * sigMp +
|
|
15348
|
+
return sigMp * sigMp + NOISE_DIVG_AADA * NOISE_DIVG_AADA + sigTropo * sigTropo;
|
|
15296
15349
|
}
|
|
15297
15350
|
function invertMatrix(A) {
|
|
15298
15351
|
const n = A.length;
|
|
@@ -18122,8 +18175,10 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
|
|
|
18122
18175
|
rhumbLine,
|
|
18123
18176
|
rtcm3Constellation,
|
|
18124
18177
|
satClockCorrection,
|
|
18178
|
+
sbasIonoDeg,
|
|
18125
18179
|
sbasL5MessageName,
|
|
18126
18180
|
sbasL5MessageType,
|
|
18181
|
+
sbasLongTermDeg,
|
|
18127
18182
|
sbasProtectionLevels,
|
|
18128
18183
|
sbfCrc16,
|
|
18129
18184
|
scanSbfFrames,
|
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, 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, 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, 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, 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, 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, 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
|
@@ -168,6 +168,8 @@ import {
|
|
|
168
168
|
postProcessRtk,
|
|
169
169
|
resolvePppAmbiguities,
|
|
170
170
|
satClockCorrection,
|
|
171
|
+
sbasIonoDeg,
|
|
172
|
+
sbasLongTermDeg,
|
|
171
173
|
sbasProtectionLevels,
|
|
172
174
|
solidEarthTide,
|
|
173
175
|
solveDgnss,
|
|
@@ -176,7 +178,7 @@ import {
|
|
|
176
178
|
sunEcef,
|
|
177
179
|
toRtkEpoch,
|
|
178
180
|
wlWavelength
|
|
179
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-7NZ4SJTJ.js";
|
|
180
182
|
import "./chunk-WQX354KD.js";
|
|
181
183
|
import {
|
|
182
184
|
almanacEpochMs,
|
|
@@ -651,8 +653,10 @@ export {
|
|
|
651
653
|
rhumbLine,
|
|
652
654
|
rtcm3Constellation,
|
|
653
655
|
satClockCorrection,
|
|
656
|
+
sbasIonoDeg,
|
|
654
657
|
sbasL5MessageName,
|
|
655
658
|
sbasL5MessageType,
|
|
659
|
+
sbasLongTermDeg,
|
|
656
660
|
sbasProtectionLevels,
|
|
657
661
|
crc16 as sbfCrc16,
|
|
658
662
|
scanSbfFrames,
|
package/dist/positioning.cjs
CHANGED
|
@@ -43,6 +43,8 @@ __export(positioning_exports, {
|
|
|
43
43
|
postProcessRtk: () => postProcessRtk,
|
|
44
44
|
resolvePppAmbiguities: () => resolvePppAmbiguities,
|
|
45
45
|
satClockCorrection: () => satClockCorrection,
|
|
46
|
+
sbasIonoDeg: () => sbasIonoDeg,
|
|
47
|
+
sbasLongTermDeg: () => sbasLongTermDeg,
|
|
46
48
|
sbasProtectionLevels: () => sbasProtectionLevels,
|
|
47
49
|
solidEarthTide: () => solidEarthTide,
|
|
48
50
|
solveDgnss: () => solveDgnss,
|
|
@@ -1687,7 +1689,7 @@ var D2R = Math.PI / 180;
|
|
|
1687
1689
|
var R2D = 180 / Math.PI;
|
|
1688
1690
|
var SEC_PER_WEEK2 = 604800;
|
|
1689
1691
|
var MAXSBSAGEF = 30;
|
|
1690
|
-
var MAXSBSAGEL =
|
|
1692
|
+
var MAXSBSAGEL = 360;
|
|
1691
1693
|
var MAXBAND = 10;
|
|
1692
1694
|
var two = (n) => String(n).padStart(2, "0");
|
|
1693
1695
|
var VAR_FCORR = [
|
|
@@ -1744,6 +1746,17 @@ var DEGF = [
|
|
|
1744
1746
|
58e-4
|
|
1745
1747
|
];
|
|
1746
1748
|
var degfcorr = (ai) => ai > 0 && ai <= 15 ? DEGF[ai] : 58e-4;
|
|
1749
|
+
function sbasLongTermDeg(d, vel, ageSec) {
|
|
1750
|
+
if (vel) {
|
|
1751
|
+
if (ageSec > 0 && ageSec < d.iltcV1) return 0;
|
|
1752
|
+
return d.cltcLsb + d.cltcV1 * Math.max(0, -ageSec, ageSec - d.iltcV1);
|
|
1753
|
+
}
|
|
1754
|
+
return d.cltcV0 * Math.floor(Math.abs(ageSec) / d.iltcV0);
|
|
1755
|
+
}
|
|
1756
|
+
function sbasIonoDeg(d, ageSec) {
|
|
1757
|
+
const dt = Math.abs(ageSec);
|
|
1758
|
+
return d.cionoStep * Math.floor(dt / d.iiono) + d.cionoRamp * dt;
|
|
1759
|
+
}
|
|
1747
1760
|
var x1 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75, 85];
|
|
1748
1761
|
var x2 = [-55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55];
|
|
1749
1762
|
var x3 = [-75, -65, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 65, 75];
|
|
@@ -1797,6 +1810,7 @@ var SbasProcessor = class {
|
|
|
1797
1810
|
satIdx = /* @__PURE__ */ new Map();
|
|
1798
1811
|
iodp = -1;
|
|
1799
1812
|
tlat = 0;
|
|
1813
|
+
degr = null;
|
|
1800
1814
|
ion = [];
|
|
1801
1815
|
/** GEO PRN(s) whose messages have been ingested. */
|
|
1802
1816
|
geoPrns = /* @__PURE__ */ new Set();
|
|
@@ -1823,6 +1837,8 @@ var SbasProcessor = class {
|
|
|
1823
1837
|
return this.decodeIntegrity(msg) ? type : -1;
|
|
1824
1838
|
case 7:
|
|
1825
1839
|
return this.decodeDegradation(msg) ? type : -1;
|
|
1840
|
+
case 10:
|
|
1841
|
+
return this.decodeMt10(msg) ? type : -1;
|
|
1826
1842
|
case 18:
|
|
1827
1843
|
return this.decodeIgpMask(msg) ? type : -1;
|
|
1828
1844
|
case 24:
|
|
@@ -1891,6 +1907,30 @@ var SbasProcessor = class {
|
|
|
1891
1907
|
}
|
|
1892
1908
|
return true;
|
|
1893
1909
|
}
|
|
1910
|
+
/** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
|
|
1911
|
+
* preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
|
|
1912
|
+
* Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
|
|
1913
|
+
decodeMt10(msg) {
|
|
1914
|
+
const u = (p, n) => getBitU(msg, p, n);
|
|
1915
|
+
this.degr = {
|
|
1916
|
+
brrc: u(14, 10) * 2e-3,
|
|
1917
|
+
cltcLsb: u(24, 10) * 2e-3,
|
|
1918
|
+
cltcV1: u(34, 10) * 5e-5,
|
|
1919
|
+
iltcV1: u(44, 9),
|
|
1920
|
+
cltcV0: u(53, 10) * 2e-3,
|
|
1921
|
+
iltcV0: u(63, 9) || 1,
|
|
1922
|
+
cgeoLsb: u(72, 10) * 5e-4,
|
|
1923
|
+
cgeoV: u(82, 10) * 5e-5,
|
|
1924
|
+
igeo: u(92, 9),
|
|
1925
|
+
cer: u(101, 6) * 0.5,
|
|
1926
|
+
cionoStep: u(107, 10) * 1e-3,
|
|
1927
|
+
iiono: u(117, 9) || 1,
|
|
1928
|
+
cionoRamp: u(126, 10) * 5e-6,
|
|
1929
|
+
rssUdre: u(136, 1) === 1,
|
|
1930
|
+
rssIono: u(137, 1) === 1
|
|
1931
|
+
};
|
|
1932
|
+
return true;
|
|
1933
|
+
}
|
|
1894
1934
|
decodeMixed(msg, week, tow) {
|
|
1895
1935
|
if (this.iodp !== getBitU(msg, 110, 2)) return false;
|
|
1896
1936
|
const blk = getBitU(msg, 112, 2);
|
|
@@ -1937,7 +1977,8 @@ var SbasProcessor = class {
|
|
|
1937
1977
|
dvel: [0, 0, 0],
|
|
1938
1978
|
daf0: getBitS(msg, p + 41, 10) * P2_31,
|
|
1939
1979
|
daf1: 0,
|
|
1940
|
-
t0s: gpsSeconds(week, tow)
|
|
1980
|
+
t0s: gpsSeconds(week, tow),
|
|
1981
|
+
vel: false
|
|
1941
1982
|
};
|
|
1942
1983
|
return true;
|
|
1943
1984
|
}
|
|
@@ -1961,7 +2002,8 @@ var SbasProcessor = class {
|
|
|
1961
2002
|
],
|
|
1962
2003
|
daf0: getBitS(msg, p + 47, 11) * P2_31,
|
|
1963
2004
|
daf1: getBitS(msg, p + 82, 8) * P2_39,
|
|
1964
|
-
t0s: gpsSeconds(week, tow + t)
|
|
2005
|
+
t0s: gpsSeconds(week, tow + t),
|
|
2006
|
+
vel: true
|
|
1965
2007
|
};
|
|
1966
2008
|
return true;
|
|
1967
2009
|
}
|
|
@@ -2082,9 +2124,16 @@ var SbasProcessor = class {
|
|
|
2082
2124
|
const tf = now - s.fcorr.t0s + this.tlat;
|
|
2083
2125
|
if (Math.abs(tf) > MAXSBSAGEF || s.fcorr.udre >= 15) return null;
|
|
2084
2126
|
const prc = s.fcorr.prc;
|
|
2085
|
-
const
|
|
2127
|
+
const sigUdre = Math.sqrt(varfcorr(s.fcorr.udre));
|
|
2128
|
+
const efc = degfcorr(s.fcorr.ai) * tf * tf / 2;
|
|
2129
|
+
const eltc = this.degr && s.lcorr && s.lcorr.t0s !== 0 ? sbasLongTermDeg(this.degr, s.lcorr.vel, now - s.lcorr.t0s) : 0;
|
|
2130
|
+
const varM2 = this.degr?.rssUdre ? sigUdre * sigUdre + efc * efc + eltc * eltc : (sigUdre + efc + eltc) ** 2;
|
|
2086
2131
|
return { dPos: drs, dClkS: dclk + prc / C_LIGHT, prcM: prc, varM2, iode };
|
|
2087
2132
|
}
|
|
2133
|
+
/** The last-decoded MT10 degradation factors, or null if none seen. */
|
|
2134
|
+
get degradation() {
|
|
2135
|
+
return this.degr;
|
|
2136
|
+
}
|
|
2088
2137
|
/**
|
|
2089
2138
|
* Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
|
|
2090
2139
|
* position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
|
|
@@ -2133,14 +2182,18 @@ var SbasProcessor = class {
|
|
|
2133
2182
|
} else return null;
|
|
2134
2183
|
const now = gpsSeconds(week, tow);
|
|
2135
2184
|
let delay = 0;
|
|
2136
|
-
let
|
|
2185
|
+
let varVert = 0;
|
|
2137
2186
|
for (let i = 0; i < 4; i++) {
|
|
2138
2187
|
const g = pts[i];
|
|
2139
2188
|
if (!g) continue;
|
|
2140
2189
|
delay += w[i] * g.delay;
|
|
2141
|
-
|
|
2190
|
+
const sigGive = Math.sqrt(varicorr(g.give));
|
|
2191
|
+
const d = this.degr;
|
|
2192
|
+
const eiono = d ? sbasIonoDeg(d, now - g.t0s) : 0;
|
|
2193
|
+
const sig2 = d?.rssIono ? sigGive * sigGive + eiono * eiono : (sigGive + eiono) ** 2;
|
|
2194
|
+
varVert += w[i] * sig2;
|
|
2142
2195
|
}
|
|
2143
|
-
return { delayM: delay * fp, varM2:
|
|
2196
|
+
return { delayM: delay * fp, varM2: varVert * fp * fp };
|
|
2144
2197
|
}
|
|
2145
2198
|
/** Find the four IGPs bracketing a pierce point (RTKLIB `searchigp`). */
|
|
2146
2199
|
searchIgp(latP, lonP) {
|
|
@@ -3627,10 +3680,10 @@ function sagnac2(pos, travelTimeS) {
|
|
|
3627
3680
|
function sbasAirTropoVar(elRad) {
|
|
3628
3681
|
const elDeg = elRad * 180 / Math.PI;
|
|
3629
3682
|
const sigMp = 0.13 + 0.53 * Math.exp(-elDeg / 10);
|
|
3630
|
-
const
|
|
3683
|
+
const NOISE_DIVG_AADA = 0.36;
|
|
3631
3684
|
const m = 1.001 / Math.sqrt(2001e-6 + Math.sin(elRad) * Math.sin(elRad));
|
|
3632
3685
|
const sigTropo = 0.12 * m;
|
|
3633
|
-
return sigMp * sigMp +
|
|
3686
|
+
return sigMp * sigMp + NOISE_DIVG_AADA * NOISE_DIVG_AADA + sigTropo * sigTropo;
|
|
3634
3687
|
}
|
|
3635
3688
|
function invertMatrix(A) {
|
|
3636
3689
|
const n = A.length;
|
|
@@ -3939,6 +3992,8 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
|
|
|
3939
3992
|
postProcessRtk,
|
|
3940
3993
|
resolvePppAmbiguities,
|
|
3941
3994
|
satClockCorrection,
|
|
3995
|
+
sbasIonoDeg,
|
|
3996
|
+
sbasLongTermDeg,
|
|
3942
3997
|
sbasProtectionLevels,
|
|
3943
3998
|
solidEarthTide,
|
|
3944
3999
|
solveDgnss,
|
package/dist/positioning.d.cts
CHANGED
|
@@ -550,6 +550,35 @@ declare function lambdaSearch(a: Float64Array, Q: Float64Array, n: number, m?: n
|
|
|
550
550
|
*/
|
|
551
551
|
declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | null;
|
|
552
552
|
|
|
553
|
+
/**
|
|
554
|
+
* Long-term correction degradation ε_ltc (m) — DO-229D §A.4.5.1.3, eqs A-54
|
|
555
|
+
* (velocity code 1) and A-55 (velocity code 0). `ageSec` = t − t₀ (s).
|
|
556
|
+
*/
|
|
557
|
+
declare function sbasLongTermDeg(d: Degradation, vel: boolean, ageSec: number): number;
|
|
558
|
+
/**
|
|
559
|
+
* Ionospheric-correction degradation ε_iono (m) — DO-229D §A.4.5.2, eq A-59.
|
|
560
|
+
* `ageSec` = t − t_iono (s) of the grid point.
|
|
561
|
+
*/
|
|
562
|
+
declare function sbasIonoDeg(d: Degradation, ageSec: number): number;
|
|
563
|
+
/** MT10 degradation parameters (DO-229D Table A-9), needed for the residual
|
|
564
|
+
* variances σ²_flt / σ²_ionogrid (§A.4.5, §J.2.2). */
|
|
565
|
+
interface Degradation {
|
|
566
|
+
brrc: number;
|
|
567
|
+
cltcLsb: number;
|
|
568
|
+
cltcV1: number;
|
|
569
|
+
iltcV1: number;
|
|
570
|
+
cltcV0: number;
|
|
571
|
+
iltcV0: number;
|
|
572
|
+
cgeoLsb: number;
|
|
573
|
+
cgeoV: number;
|
|
574
|
+
igeo: number;
|
|
575
|
+
cer: number;
|
|
576
|
+
cionoStep: number;
|
|
577
|
+
iiono: number;
|
|
578
|
+
cionoRamp: number;
|
|
579
|
+
rssUdre: boolean;
|
|
580
|
+
rssIono: boolean;
|
|
581
|
+
}
|
|
553
582
|
/** A per-satellite SBAS correction, ready to apply in an SPP solve. */
|
|
554
583
|
interface SbasSatCorrection {
|
|
555
584
|
/** Long-term ECEF position correction to add to the satellite position (m). */
|
|
@@ -575,6 +604,7 @@ declare class SbasProcessor {
|
|
|
575
604
|
private satIdx;
|
|
576
605
|
private iodp;
|
|
577
606
|
private tlat;
|
|
607
|
+
private degr;
|
|
578
608
|
private ion;
|
|
579
609
|
/** GEO PRN(s) whose messages have been ingested. */
|
|
580
610
|
readonly geoPrns: Set<string>;
|
|
@@ -588,6 +618,10 @@ declare class SbasProcessor {
|
|
|
588
618
|
private decodeFast;
|
|
589
619
|
private decodeIntegrity;
|
|
590
620
|
private decodeDegradation;
|
|
621
|
+
/** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
|
|
622
|
+
* preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
|
|
623
|
+
* Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
|
|
624
|
+
private decodeMt10;
|
|
591
625
|
private decodeMixed;
|
|
592
626
|
private decodeLongCorrHalf;
|
|
593
627
|
private decodeLong0;
|
|
@@ -624,6 +658,8 @@ declare class SbasProcessor {
|
|
|
624
658
|
* to the satellite ECEF position and `dClkS` to its clock bias.
|
|
625
659
|
*/
|
|
626
660
|
satCorrection(prn: string, week: number, tow: number): SbasSatCorrection | null;
|
|
661
|
+
/** The last-decoded MT10 degradation factors, or null if none seen. */
|
|
662
|
+
get degradation(): Readonly<Degradation> | null;
|
|
627
663
|
/**
|
|
628
664
|
* Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
|
|
629
665
|
* position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
|
|
@@ -1334,4 +1370,4 @@ declare function sbasProtectionLevels(sats: readonly {
|
|
|
1334
1370
|
*/
|
|
1335
1371
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
1336
1372
|
|
|
1337
|
-
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, 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, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
|
1373
|
+
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 };
|
package/dist/positioning.d.ts
CHANGED
|
@@ -550,6 +550,35 @@ declare function lambdaSearch(a: Float64Array, Q: Float64Array, n: number, m?: n
|
|
|
550
550
|
*/
|
|
551
551
|
declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | null;
|
|
552
552
|
|
|
553
|
+
/**
|
|
554
|
+
* Long-term correction degradation ε_ltc (m) — DO-229D §A.4.5.1.3, eqs A-54
|
|
555
|
+
* (velocity code 1) and A-55 (velocity code 0). `ageSec` = t − t₀ (s).
|
|
556
|
+
*/
|
|
557
|
+
declare function sbasLongTermDeg(d: Degradation, vel: boolean, ageSec: number): number;
|
|
558
|
+
/**
|
|
559
|
+
* Ionospheric-correction degradation ε_iono (m) — DO-229D §A.4.5.2, eq A-59.
|
|
560
|
+
* `ageSec` = t − t_iono (s) of the grid point.
|
|
561
|
+
*/
|
|
562
|
+
declare function sbasIonoDeg(d: Degradation, ageSec: number): number;
|
|
563
|
+
/** MT10 degradation parameters (DO-229D Table A-9), needed for the residual
|
|
564
|
+
* variances σ²_flt / σ²_ionogrid (§A.4.5, §J.2.2). */
|
|
565
|
+
interface Degradation {
|
|
566
|
+
brrc: number;
|
|
567
|
+
cltcLsb: number;
|
|
568
|
+
cltcV1: number;
|
|
569
|
+
iltcV1: number;
|
|
570
|
+
cltcV0: number;
|
|
571
|
+
iltcV0: number;
|
|
572
|
+
cgeoLsb: number;
|
|
573
|
+
cgeoV: number;
|
|
574
|
+
igeo: number;
|
|
575
|
+
cer: number;
|
|
576
|
+
cionoStep: number;
|
|
577
|
+
iiono: number;
|
|
578
|
+
cionoRamp: number;
|
|
579
|
+
rssUdre: boolean;
|
|
580
|
+
rssIono: boolean;
|
|
581
|
+
}
|
|
553
582
|
/** A per-satellite SBAS correction, ready to apply in an SPP solve. */
|
|
554
583
|
interface SbasSatCorrection {
|
|
555
584
|
/** Long-term ECEF position correction to add to the satellite position (m). */
|
|
@@ -575,6 +604,7 @@ declare class SbasProcessor {
|
|
|
575
604
|
private satIdx;
|
|
576
605
|
private iodp;
|
|
577
606
|
private tlat;
|
|
607
|
+
private degr;
|
|
578
608
|
private ion;
|
|
579
609
|
/** GEO PRN(s) whose messages have been ingested. */
|
|
580
610
|
readonly geoPrns: Set<string>;
|
|
@@ -588,6 +618,10 @@ declare class SbasProcessor {
|
|
|
588
618
|
private decodeFast;
|
|
589
619
|
private decodeIntegrity;
|
|
590
620
|
private decodeDegradation;
|
|
621
|
+
/** MT10 degradation factors (DO-229D Table A-9). Fields follow the 8-bit
|
|
622
|
+
* preamble + 6-bit type (start bit 14), MSB-first, with the listed LSBs.
|
|
623
|
+
* Iiono / Iltc_v0 of 0 must be read as 1 (Table A-9, Note 3). */
|
|
624
|
+
private decodeMt10;
|
|
591
625
|
private decodeMixed;
|
|
592
626
|
private decodeLongCorrHalf;
|
|
593
627
|
private decodeLong0;
|
|
@@ -624,6 +658,8 @@ declare class SbasProcessor {
|
|
|
624
658
|
* to the satellite ECEF position and `dClkS` to its clock bias.
|
|
625
659
|
*/
|
|
626
660
|
satCorrection(prn: string, week: number, tow: number): SbasSatCorrection | null;
|
|
661
|
+
/** The last-decoded MT10 degradation factors, or null if none seen. */
|
|
662
|
+
get degradation(): Readonly<Degradation> | null;
|
|
627
663
|
/**
|
|
628
664
|
* Slant L1 ionospheric delay (m) at the pierce point for a receiver geodetic
|
|
629
665
|
* position (lat/lon rad, height m) and a satellite az/el (rad), interpolated
|
|
@@ -1334,4 +1370,4 @@ declare function sbasProtectionLevels(sats: readonly {
|
|
|
1334
1370
|
*/
|
|
1335
1371
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
1336
1372
|
|
|
1337
|
-
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, 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, sbasProtectionLevels, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
|
1373
|
+
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 };
|
package/dist/positioning.js
CHANGED
|
@@ -22,6 +22,8 @@ import {
|
|
|
22
22
|
postProcessRtk,
|
|
23
23
|
resolvePppAmbiguities,
|
|
24
24
|
satClockCorrection,
|
|
25
|
+
sbasIonoDeg,
|
|
26
|
+
sbasLongTermDeg,
|
|
25
27
|
sbasProtectionLevels,
|
|
26
28
|
solidEarthTide,
|
|
27
29
|
solveDgnss,
|
|
@@ -30,7 +32,7 @@ import {
|
|
|
30
32
|
sunEcef,
|
|
31
33
|
toRtkEpoch,
|
|
32
34
|
wlWavelength
|
|
33
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-7NZ4SJTJ.js";
|
|
34
36
|
import "./chunk-WQX354KD.js";
|
|
35
37
|
import "./chunk-MHGNKSSH.js";
|
|
36
38
|
import "./chunk-MIIM4LDY.js";
|
|
@@ -66,6 +68,8 @@ export {
|
|
|
66
68
|
postProcessRtk,
|
|
67
69
|
resolvePppAmbiguities,
|
|
68
70
|
satClockCorrection,
|
|
71
|
+
sbasIonoDeg,
|
|
72
|
+
sbasLongTermDeg,
|
|
69
73
|
sbasProtectionLevels,
|
|
70
74
|
solidEarthTide,
|
|
71
75
|
solveDgnss,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gnss-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.59.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,
|