gnss-js 1.3.1 → 1.3.2
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/analysis.cjs +29 -4
- package/dist/analysis.d.cts +1 -1
- package/dist/analysis.d.ts +1 -1
- package/dist/analysis.js +3 -3
- package/dist/{chunk-5SPJH4MG.js → chunk-2K3FCJBX.js} +1 -1
- package/dist/{chunk-OZCYOM5D.js → chunk-3U5AX7PY.js} +1 -1
- package/dist/{chunk-7EEWQ5DU.js → chunk-65CQINSB.js} +6 -1
- package/dist/{chunk-G3N4S3DM.js → chunk-AW6BORTZ.js} +31 -6
- package/dist/{chunk-W5WKEV7U.js → chunk-FIEWO4J4.js} +2 -0
- package/dist/{chunk-CC2R4JGS.js → chunk-PQYBTE42.js} +3 -1
- package/dist/{chunk-USHP4IND.js → chunk-PX7TPPTQ.js} +4 -4
- package/dist/constants.cjs +3 -0
- package/dist/constants.d.cts +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +3 -1
- package/dist/{gnss-BT6ulR17.d.cts → gnss-BtXrG3zH.d.cts} +3 -1
- package/dist/{gnss-C-tgoYNa.d.ts → gnss-DhnEr0Dy.d.ts} +3 -1
- package/dist/index.cjs +38 -7
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +9 -7
- package/dist/orbit.cjs +3 -1
- package/dist/orbit.js +2 -1
- package/dist/positioning.cjs +5 -6
- package/dist/positioning.js +3 -3
- package/dist/rinex.js +2 -2
- package/dist/rtcm3.cjs +5 -0
- package/dist/rtcm3.js +2 -2
- package/dist/signals.js +2 -2
- package/package.json +1 -1
package/dist/analysis.cjs
CHANGED
|
@@ -215,6 +215,14 @@ var ARC_GAP_FACTOR = 5;
|
|
|
215
215
|
|
|
216
216
|
// src/analysis/multipath.ts
|
|
217
217
|
var MIN_ARC_LENGTH = 10;
|
|
218
|
+
var MP_JUMP_M = 1.25;
|
|
219
|
+
var MP_JUMP_WINDOW = 5;
|
|
220
|
+
var MP_EDIT_SIGMA = 3;
|
|
221
|
+
function median(values) {
|
|
222
|
+
const s = [...values].sort((a, b) => a - b);
|
|
223
|
+
const m = s.length >> 1;
|
|
224
|
+
return s.length % 2 ? s[m] : (s[m - 1] + s[m]) / 2;
|
|
225
|
+
}
|
|
218
226
|
var MultipathAccumulator = class {
|
|
219
227
|
state = /* @__PURE__ */ new Map();
|
|
220
228
|
results = [];
|
|
@@ -271,6 +279,11 @@ var MultipathAccumulator = class {
|
|
|
271
279
|
const gap = bandState.lastTime > 0 ? (time - bandState.lastTime) / 1e3 : 0;
|
|
272
280
|
if (bandState.lastTime > 0 && gap > this.interval * ARC_GAP_FACTOR) {
|
|
273
281
|
this.closeArc(prn, band, refBand, bandState);
|
|
282
|
+
} else if (bandState.arc.rawMp.length > 0) {
|
|
283
|
+
const recent = bandState.arc.rawMp.slice(-MP_JUMP_WINDOW);
|
|
284
|
+
if (Math.abs(mp - median(recent)) > MP_JUMP_M) {
|
|
285
|
+
this.closeArc(prn, band, refBand, bandState);
|
|
286
|
+
}
|
|
274
287
|
}
|
|
275
288
|
bandState.arc.times.push(time);
|
|
276
289
|
bandState.arc.rawMp.push(mp);
|
|
@@ -290,13 +303,25 @@ var MultipathAccumulator = class {
|
|
|
290
303
|
closeArc(prn, band, refBand, state) {
|
|
291
304
|
const arc = state.arc;
|
|
292
305
|
if (arc.times.length >= MIN_ARC_LENGTH) {
|
|
293
|
-
|
|
306
|
+
let keep = arc.times.map((_, i) => i);
|
|
307
|
+
let mean = 0;
|
|
308
|
+
for (let pass = 0; pass < 3; pass++) {
|
|
309
|
+
mean = keep.reduce((s, i) => s + arc.rawMp[i], 0) / keep.length;
|
|
310
|
+
const sigma = Math.sqrt(
|
|
311
|
+
keep.reduce((s, i) => s + (arc.rawMp[i] - mean) ** 2, 0) / keep.length
|
|
312
|
+
);
|
|
313
|
+
const kept = keep.filter(
|
|
314
|
+
(i) => Math.abs(arc.rawMp[i] - mean) <= MP_EDIT_SIGMA * sigma
|
|
315
|
+
);
|
|
316
|
+
if (kept.length === keep.length || kept.length < MIN_ARC_LENGTH) break;
|
|
317
|
+
keep = kept;
|
|
318
|
+
}
|
|
294
319
|
const sys = prn[0];
|
|
295
320
|
const bLabel = BAND_LABELS[sys]?.[band] ?? band;
|
|
296
321
|
const rLabel = BAND_LABELS[sys]?.[refBand] ?? refBand;
|
|
297
322
|
const label = `${prn} MP ${bLabel}-${rLabel}`;
|
|
298
|
-
const points =
|
|
299
|
-
time:
|
|
323
|
+
const points = keep.map((i) => ({
|
|
324
|
+
time: arc.times[i],
|
|
300
325
|
mp: arc.rawMp[i] - mean
|
|
301
326
|
}));
|
|
302
327
|
const rms = Math.sqrt(
|
|
@@ -350,7 +375,7 @@ var MultipathAccumulator = class {
|
|
|
350
375
|
refBand,
|
|
351
376
|
rms,
|
|
352
377
|
count,
|
|
353
|
-
satellites: seriesList.
|
|
378
|
+
satellites: new Set(seriesList.map((s) => s.prn)).size
|
|
354
379
|
});
|
|
355
380
|
}
|
|
356
381
|
const sysOrder = "GRECIJS";
|
package/dist/analysis.d.cts
CHANGED
package/dist/analysis.d.ts
CHANGED
package/dist/analysis.js
CHANGED
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
CycleSlipAccumulator,
|
|
4
4
|
MultipathAccumulator,
|
|
5
5
|
analyzeQuality
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-AW6BORTZ.js";
|
|
7
|
+
import "./chunk-3U5AX7PY.js";
|
|
8
|
+
import "./chunk-FIEWO4J4.js";
|
|
9
9
|
export {
|
|
10
10
|
CompletenessAccumulator,
|
|
11
11
|
CycleSlipAccumulator,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
GLO_F1_STEP,
|
|
11
11
|
GLO_F2_BASE,
|
|
12
12
|
GLO_F2_STEP
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-FIEWO4J4.js";
|
|
14
14
|
|
|
15
15
|
// src/rtcm3/decoder.ts
|
|
16
16
|
var debugHandler = null;
|
|
@@ -1258,6 +1258,7 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
1258
1258
|
1031: "GLONASS Network RTK Residual",
|
|
1259
1259
|
1032: "Physical Reference Station",
|
|
1260
1260
|
1033: "Receiver+Antenna Descriptor",
|
|
1261
|
+
1041: "NavIC Ephemeris",
|
|
1261
1262
|
1042: "BeiDou Ephemeris",
|
|
1262
1263
|
1043: "SBAS Ephemeris",
|
|
1263
1264
|
1044: "QZSS Ephemeris",
|
|
@@ -1322,6 +1323,8 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
1322
1323
|
1064: "GLONASS SSR Clock",
|
|
1323
1324
|
1065: "GLONASS SSR Code Bias",
|
|
1324
1325
|
1066: "GLONASS SSR Orbit+Clock",
|
|
1326
|
+
// Biases
|
|
1327
|
+
1230: "GLONASS Code-Phase Biases",
|
|
1325
1328
|
// IGS SSR
|
|
1326
1329
|
4076: "IGS SSR"
|
|
1327
1330
|
};
|
|
@@ -1330,6 +1333,7 @@ function rtcm3Constellation(msgType) {
|
|
|
1330
1333
|
if (msgType >= 1009 && msgType <= 1012) return "GLONASS";
|
|
1331
1334
|
if (msgType === 1019) return "GPS";
|
|
1332
1335
|
if (msgType === 1020) return "GLONASS";
|
|
1336
|
+
if (msgType === 1041) return "NavIC";
|
|
1333
1337
|
if (msgType === 1042) return "BeiDou";
|
|
1334
1338
|
if (msgType === 1043) return "SBAS";
|
|
1335
1339
|
if (msgType === 1044) return "QZSS";
|
|
@@ -1341,6 +1345,7 @@ function rtcm3Constellation(msgType) {
|
|
|
1341
1345
|
if (msgType >= 1111 && msgType <= 1117) return "QZSS";
|
|
1342
1346
|
if (msgType >= 1121 && msgType <= 1127) return "BeiDou";
|
|
1343
1347
|
if (msgType >= 1131 && msgType <= 1137) return "NavIC";
|
|
1348
|
+
if (msgType === 1230) return "GLONASS";
|
|
1344
1349
|
return null;
|
|
1345
1350
|
}
|
|
1346
1351
|
function createStreamStats() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseRinexStream
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3U5AX7PY.js";
|
|
4
4
|
import {
|
|
5
5
|
ARC_GAP_FACTOR,
|
|
6
6
|
BAND_LABELS,
|
|
@@ -11,10 +11,18 @@ import {
|
|
|
11
11
|
buildGloChannelMap,
|
|
12
12
|
buildObsIndices,
|
|
13
13
|
getFreq
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FIEWO4J4.js";
|
|
15
15
|
|
|
16
16
|
// src/analysis/multipath.ts
|
|
17
17
|
var MIN_ARC_LENGTH = 10;
|
|
18
|
+
var MP_JUMP_M = 1.25;
|
|
19
|
+
var MP_JUMP_WINDOW = 5;
|
|
20
|
+
var MP_EDIT_SIGMA = 3;
|
|
21
|
+
function median(values) {
|
|
22
|
+
const s = [...values].sort((a, b) => a - b);
|
|
23
|
+
const m = s.length >> 1;
|
|
24
|
+
return s.length % 2 ? s[m] : (s[m - 1] + s[m]) / 2;
|
|
25
|
+
}
|
|
18
26
|
var MultipathAccumulator = class {
|
|
19
27
|
state = /* @__PURE__ */ new Map();
|
|
20
28
|
results = [];
|
|
@@ -71,6 +79,11 @@ var MultipathAccumulator = class {
|
|
|
71
79
|
const gap = bandState.lastTime > 0 ? (time - bandState.lastTime) / 1e3 : 0;
|
|
72
80
|
if (bandState.lastTime > 0 && gap > this.interval * ARC_GAP_FACTOR) {
|
|
73
81
|
this.closeArc(prn, band, refBand, bandState);
|
|
82
|
+
} else if (bandState.arc.rawMp.length > 0) {
|
|
83
|
+
const recent = bandState.arc.rawMp.slice(-MP_JUMP_WINDOW);
|
|
84
|
+
if (Math.abs(mp - median(recent)) > MP_JUMP_M) {
|
|
85
|
+
this.closeArc(prn, band, refBand, bandState);
|
|
86
|
+
}
|
|
74
87
|
}
|
|
75
88
|
bandState.arc.times.push(time);
|
|
76
89
|
bandState.arc.rawMp.push(mp);
|
|
@@ -90,13 +103,25 @@ var MultipathAccumulator = class {
|
|
|
90
103
|
closeArc(prn, band, refBand, state) {
|
|
91
104
|
const arc = state.arc;
|
|
92
105
|
if (arc.times.length >= MIN_ARC_LENGTH) {
|
|
93
|
-
|
|
106
|
+
let keep = arc.times.map((_, i) => i);
|
|
107
|
+
let mean = 0;
|
|
108
|
+
for (let pass = 0; pass < 3; pass++) {
|
|
109
|
+
mean = keep.reduce((s, i) => s + arc.rawMp[i], 0) / keep.length;
|
|
110
|
+
const sigma = Math.sqrt(
|
|
111
|
+
keep.reduce((s, i) => s + (arc.rawMp[i] - mean) ** 2, 0) / keep.length
|
|
112
|
+
);
|
|
113
|
+
const kept = keep.filter(
|
|
114
|
+
(i) => Math.abs(arc.rawMp[i] - mean) <= MP_EDIT_SIGMA * sigma
|
|
115
|
+
);
|
|
116
|
+
if (kept.length === keep.length || kept.length < MIN_ARC_LENGTH) break;
|
|
117
|
+
keep = kept;
|
|
118
|
+
}
|
|
94
119
|
const sys = prn[0];
|
|
95
120
|
const bLabel = BAND_LABELS[sys]?.[band] ?? band;
|
|
96
121
|
const rLabel = BAND_LABELS[sys]?.[refBand] ?? refBand;
|
|
97
122
|
const label = `${prn} MP ${bLabel}-${rLabel}`;
|
|
98
|
-
const points =
|
|
99
|
-
time:
|
|
123
|
+
const points = keep.map((i) => ({
|
|
124
|
+
time: arc.times[i],
|
|
100
125
|
mp: arc.rawMp[i] - mean
|
|
101
126
|
}));
|
|
102
127
|
const rms = Math.sqrt(
|
|
@@ -150,7 +175,7 @@ var MultipathAccumulator = class {
|
|
|
150
175
|
refBand,
|
|
151
176
|
rms,
|
|
152
177
|
count,
|
|
153
|
-
satellites: seriesList.
|
|
178
|
+
satellites: new Set(seriesList.map((s) => s.prn)).size
|
|
154
179
|
});
|
|
155
180
|
}
|
|
156
181
|
const sysOrder = "GRECIJS";
|
|
@@ -18,6 +18,7 @@ var SYS_SHORT = {
|
|
|
18
18
|
S: "SBS"
|
|
19
19
|
};
|
|
20
20
|
var C_LIGHT = 299792458;
|
|
21
|
+
var OMEGA_E = 72921151467e-15;
|
|
21
22
|
var FREQ = {
|
|
22
23
|
G: { "1": 157542e4, "2": 12276e5, "5": 117645e4 },
|
|
23
24
|
// R bands 4/6 are the CDMA L1OC/L2OC center frequencies
|
|
@@ -249,6 +250,7 @@ export {
|
|
|
249
250
|
SYSTEM_NAMES,
|
|
250
251
|
SYS_SHORT,
|
|
251
252
|
C_LIGHT,
|
|
253
|
+
OMEGA_E,
|
|
252
254
|
FREQ,
|
|
253
255
|
BAND_LABELS,
|
|
254
256
|
DUAL_FREQ_PAIRS,
|
|
@@ -8,13 +8,15 @@ import {
|
|
|
8
8
|
START_BDS_TIME,
|
|
9
9
|
START_GPS_TIME
|
|
10
10
|
} from "./chunk-LEEU5OIO.js";
|
|
11
|
+
import {
|
|
12
|
+
OMEGA_E
|
|
13
|
+
} from "./chunk-FIEWO4J4.js";
|
|
11
14
|
|
|
12
15
|
// src/orbit/index.ts
|
|
13
16
|
var GM_GPS = 3986005e8;
|
|
14
17
|
var GM_GAL = 3986004418e5;
|
|
15
18
|
var GM_BDS = 3986004418e5;
|
|
16
19
|
var GM_GLO = 39860044e7;
|
|
17
|
-
var OMEGA_E = 72921151467e-15;
|
|
18
20
|
var BDS_GEO_MAX_INCLINATION_RAD = 0.1;
|
|
19
21
|
var BDS_GEO_MIN_SEMIMAJOR_AXIS_M = 4e7;
|
|
20
22
|
var AE_GLO = 6378136;
|
|
@@ -2,10 +2,11 @@ import {
|
|
|
2
2
|
computeDop,
|
|
3
3
|
computeSatPosition,
|
|
4
4
|
ecefToAzEl
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PQYBTE42.js";
|
|
6
6
|
import {
|
|
7
|
-
C_LIGHT
|
|
8
|
-
|
|
7
|
+
C_LIGHT,
|
|
8
|
+
OMEGA_E
|
|
9
|
+
} from "./chunk-FIEWO4J4.js";
|
|
9
10
|
|
|
10
11
|
// src/positioning/index.ts
|
|
11
12
|
var GM_GPS = 3986005e8;
|
|
@@ -38,7 +39,6 @@ function tropoDelay(elevationRad) {
|
|
|
38
39
|
return 2.47 / (sinEl + 0.0121);
|
|
39
40
|
}
|
|
40
41
|
function sagnac(pos, travelTimeS) {
|
|
41
|
-
const OMEGA_E = 72921151467e-15;
|
|
42
42
|
const theta = OMEGA_E * travelTimeS;
|
|
43
43
|
const c = Math.cos(theta);
|
|
44
44
|
const s = Math.sin(theta);
|
package/dist/constants.cjs
CHANGED
|
@@ -42,6 +42,7 @@ __export(constants_exports, {
|
|
|
42
42
|
MILLISECONDS_IN_SECOND: () => MILLISECONDS_IN_SECOND,
|
|
43
43
|
MILLISECONDS_IN_WEEK: () => MILLISECONDS_IN_WEEK,
|
|
44
44
|
MILLISECONDS_TT_TAI: () => MILLISECONDS_TT_TAI,
|
|
45
|
+
OMEGA_E: () => OMEGA_E,
|
|
45
46
|
RINEX_CODES: () => RINEX_CODES,
|
|
46
47
|
SECONDS_IN_DAY: () => SECONDS_IN_DAY,
|
|
47
48
|
SECONDS_IN_HOUR: () => SECONDS_IN_HOUR,
|
|
@@ -146,6 +147,7 @@ var SYS_SHORT = {
|
|
|
146
147
|
S: "SBS"
|
|
147
148
|
};
|
|
148
149
|
var C_LIGHT = 299792458;
|
|
150
|
+
var OMEGA_E = 72921151467e-15;
|
|
149
151
|
var FREQ = {
|
|
150
152
|
G: { "1": 157542e4, "2": 12276e5, "5": 117645e4 },
|
|
151
153
|
// R bands 4/6 are the CDMA L1OC/L2OC center frequencies
|
|
@@ -396,6 +398,7 @@ function formatUTCTime(d) {
|
|
|
396
398
|
MILLISECONDS_IN_SECOND,
|
|
397
399
|
MILLISECONDS_IN_WEEK,
|
|
398
400
|
MILLISECONDS_TT_TAI,
|
|
401
|
+
OMEGA_E,
|
|
399
402
|
RINEX_CODES,
|
|
400
403
|
SECONDS_IN_DAY,
|
|
401
404
|
SECONDS_IN_HOUR,
|
package/dist/constants.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { D as DAYS_MJD2000_MJD, a as DAYS_MJD_JULIAN, M as MILLISECONDS_GPS_TAI, b as MILLISECONDS_IN_DAY, c as MILLISECONDS_IN_HOUR, d as MILLISECONDS_IN_MINUTE, e as MILLISECONDS_IN_SECOND, f as MILLISECONDS_IN_WEEK, g as MILLISECONDS_TT_TAI, R as RINEX_CODES, S as SECONDS_IN_DAY, h as SECONDS_IN_HOUR, i as SECONDS_IN_MINUTE, j as SECONDS_IN_WEEK, k as START_BDS_TIME, l as START_GAL_TIME, m as START_GLO_LEAP, n as START_GPS_TIME, o as START_JULIAN_TAI, p as START_MJD_UNIX_SECONDS, q as START_NTP_TIME, r as START_TAI_TIME, s as START_UNIX_TIME } from './time-DnI1VpE8.cjs';
|
|
2
|
-
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OnSlipDetected, S as SYSTEM_NAMES,
|
|
2
|
+
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OMEGA_E, i as OnSlipDetected, S as SYSTEM_NAMES, j as SYS_SHORT, k as buildGloChannelMap, l as buildObsIndices, m as formatUTCTime, n as getFreq, o as gloFreq } from './gnss-BtXrG3zH.cjs';
|
|
3
3
|
import './parser-JPjjFgeP.cjs';
|
|
4
4
|
|
|
5
5
|
/** WGS84 semi-major axis in meters. */
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { D as DAYS_MJD2000_MJD, a as DAYS_MJD_JULIAN, M as MILLISECONDS_GPS_TAI, b as MILLISECONDS_IN_DAY, c as MILLISECONDS_IN_HOUR, d as MILLISECONDS_IN_MINUTE, e as MILLISECONDS_IN_SECOND, f as MILLISECONDS_IN_WEEK, g as MILLISECONDS_TT_TAI, R as RINEX_CODES, S as SECONDS_IN_DAY, h as SECONDS_IN_HOUR, i as SECONDS_IN_MINUTE, j as SECONDS_IN_WEEK, k as START_BDS_TIME, l as START_GAL_TIME, m as START_GLO_LEAP, n as START_GPS_TIME, o as START_JULIAN_TAI, p as START_MJD_UNIX_SECONDS, q as START_NTP_TIME, r as START_TAI_TIME, s as START_UNIX_TIME } from './time-DnI1VpE8.js';
|
|
2
|
-
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OnSlipDetected, S as SYSTEM_NAMES,
|
|
2
|
+
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OMEGA_E, i as OnSlipDetected, S as SYSTEM_NAMES, j as SYS_SHORT, k as buildGloChannelMap, l as buildObsIndices, m as formatUTCTime, n as getFreq, o as gloFreq } from './gnss-DhnEr0Dy.js';
|
|
3
3
|
import './parser-JPjjFgeP.js';
|
|
4
4
|
|
|
5
5
|
/** WGS84 semi-major axis in meters. */
|
package/dist/constants.js
CHANGED
|
@@ -44,6 +44,7 @@ import {
|
|
|
44
44
|
GLO_F2_BASE,
|
|
45
45
|
GLO_F2_STEP,
|
|
46
46
|
GLO_F3,
|
|
47
|
+
OMEGA_E,
|
|
47
48
|
SYSTEM_NAMES,
|
|
48
49
|
SYS_SHORT,
|
|
49
50
|
buildGloChannelMap,
|
|
@@ -51,7 +52,7 @@ import {
|
|
|
51
52
|
formatUTCTime,
|
|
52
53
|
getFreq,
|
|
53
54
|
gloFreq
|
|
54
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-FIEWO4J4.js";
|
|
55
56
|
export {
|
|
56
57
|
ARC_GAP_FACTOR,
|
|
57
58
|
BAND_LABELS,
|
|
@@ -75,6 +76,7 @@ export {
|
|
|
75
76
|
MILLISECONDS_IN_SECOND,
|
|
76
77
|
MILLISECONDS_IN_WEEK,
|
|
77
78
|
MILLISECONDS_TT_TAI,
|
|
79
|
+
OMEGA_E,
|
|
78
80
|
RINEX_CODES,
|
|
79
81
|
SECONDS_IN_DAY,
|
|
80
82
|
SECONDS_IN_HOUR,
|
|
@@ -9,6 +9,8 @@ declare const SYSTEM_NAMES: Record<string, string>;
|
|
|
9
9
|
declare const SYS_SHORT: Record<string, string>;
|
|
10
10
|
/** Speed of light in m/s. */
|
|
11
11
|
declare const C_LIGHT = 299792458;
|
|
12
|
+
/** Earth rotation rate in rad/s (WGS84/PZ-90 value). */
|
|
13
|
+
declare const OMEGA_E = 0.000072921151467;
|
|
12
14
|
/** Carrier frequencies (Hz) per system letter, per RINEX band digit. GLONASS FDMA bands 1/2 use gloFreq(). */
|
|
13
15
|
declare const FREQ: Record<string, Record<string, number>>;
|
|
14
16
|
declare const BAND_LABELS: Record<string, Record<string, string>>;
|
|
@@ -53,4 +55,4 @@ declare const DEFAULT_ELEV_MASK_DEG = 5;
|
|
|
53
55
|
/** Format a Date as HH:MM:SS UTC string. */
|
|
54
56
|
declare function formatUTCTime(d: Date): string;
|
|
55
57
|
|
|
56
|
-
export { ARC_GAP_FACTOR as A, BAND_LABELS as B, C_LIGHT as C, DEFAULT_ELEV_MASK_DEG as D, FREQ as F, GLO_CHANNEL_FALLBACK as G,
|
|
58
|
+
export { ARC_GAP_FACTOR as A, BAND_LABELS as B, C_LIGHT as C, DEFAULT_ELEV_MASK_DEG as D, FREQ as F, GLO_CHANNEL_FALLBACK as G, OMEGA_E as O, SYSTEM_NAMES as S, BDS_SATELLITES as a, type BdsSatellite as b, DUAL_FREQ_PAIRS as c, GLO_F1_BASE as d, GLO_F1_STEP as e, GLO_F2_BASE as f, GLO_F2_STEP as g, GLO_F3 as h, type OnSlipDetected as i, SYS_SHORT as j, buildGloChannelMap as k, buildObsIndices as l, formatUTCTime as m, getFreq as n, gloFreq as o };
|
|
@@ -9,6 +9,8 @@ declare const SYSTEM_NAMES: Record<string, string>;
|
|
|
9
9
|
declare const SYS_SHORT: Record<string, string>;
|
|
10
10
|
/** Speed of light in m/s. */
|
|
11
11
|
declare const C_LIGHT = 299792458;
|
|
12
|
+
/** Earth rotation rate in rad/s (WGS84/PZ-90 value). */
|
|
13
|
+
declare const OMEGA_E = 0.000072921151467;
|
|
12
14
|
/** Carrier frequencies (Hz) per system letter, per RINEX band digit. GLONASS FDMA bands 1/2 use gloFreq(). */
|
|
13
15
|
declare const FREQ: Record<string, Record<string, number>>;
|
|
14
16
|
declare const BAND_LABELS: Record<string, Record<string, string>>;
|
|
@@ -53,4 +55,4 @@ declare const DEFAULT_ELEV_MASK_DEG = 5;
|
|
|
53
55
|
/** Format a Date as HH:MM:SS UTC string. */
|
|
54
56
|
declare function formatUTCTime(d: Date): string;
|
|
55
57
|
|
|
56
|
-
export { ARC_GAP_FACTOR as A, BAND_LABELS as B, C_LIGHT as C, DEFAULT_ELEV_MASK_DEG as D, FREQ as F, GLO_CHANNEL_FALLBACK as G,
|
|
58
|
+
export { ARC_GAP_FACTOR as A, BAND_LABELS as B, C_LIGHT as C, DEFAULT_ELEV_MASK_DEG as D, FREQ as F, GLO_CHANNEL_FALLBACK as G, OMEGA_E as O, SYSTEM_NAMES as S, BDS_SATELLITES as a, type BdsSatellite as b, DUAL_FREQ_PAIRS as c, GLO_F1_BASE as d, GLO_F1_STEP as e, GLO_F2_BASE as f, GLO_F2_STEP as g, GLO_F3 as h, type OnSlipDetected as i, SYS_SHORT as j, buildGloChannelMap as k, buildObsIndices as l, formatUTCTime as m, getFreq as n, gloFreq as o };
|
package/dist/index.cjs
CHANGED
|
@@ -75,6 +75,7 @@ __export(src_exports, {
|
|
|
75
75
|
MILLISECONDS_IN_WEEK: () => MILLISECONDS_IN_WEEK,
|
|
76
76
|
MILLISECONDS_TT_TAI: () => MILLISECONDS_TT_TAI,
|
|
77
77
|
MultipathAccumulator: () => MultipathAccumulator,
|
|
78
|
+
OMEGA_E: () => OMEGA_E,
|
|
78
79
|
REFERENCE_FRAMES: () => REFERENCE_FRAMES,
|
|
79
80
|
RINEX_CODES: () => RINEX_CODES,
|
|
80
81
|
RTCM3_MESSAGE_NAMES: () => RTCM3_MESSAGE_NAMES,
|
|
@@ -308,6 +309,7 @@ var SYS_SHORT = {
|
|
|
308
309
|
S: "SBS"
|
|
309
310
|
};
|
|
310
311
|
var C_LIGHT = 299792458;
|
|
312
|
+
var OMEGA_E = 72921151467e-15;
|
|
311
313
|
var FREQ = {
|
|
312
314
|
G: { "1": 157542e4, "2": 12276e5, "5": 117645e4 },
|
|
313
315
|
// R bands 4/6 are the CDMA L1OC/L2OC center frequencies
|
|
@@ -3814,6 +3816,7 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
3814
3816
|
1031: "GLONASS Network RTK Residual",
|
|
3815
3817
|
1032: "Physical Reference Station",
|
|
3816
3818
|
1033: "Receiver+Antenna Descriptor",
|
|
3819
|
+
1041: "NavIC Ephemeris",
|
|
3817
3820
|
1042: "BeiDou Ephemeris",
|
|
3818
3821
|
1043: "SBAS Ephemeris",
|
|
3819
3822
|
1044: "QZSS Ephemeris",
|
|
@@ -3878,6 +3881,8 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
3878
3881
|
1064: "GLONASS SSR Clock",
|
|
3879
3882
|
1065: "GLONASS SSR Code Bias",
|
|
3880
3883
|
1066: "GLONASS SSR Orbit+Clock",
|
|
3884
|
+
// Biases
|
|
3885
|
+
1230: "GLONASS Code-Phase Biases",
|
|
3881
3886
|
// IGS SSR
|
|
3882
3887
|
4076: "IGS SSR"
|
|
3883
3888
|
};
|
|
@@ -3886,6 +3891,7 @@ function rtcm3Constellation(msgType) {
|
|
|
3886
3891
|
if (msgType >= 1009 && msgType <= 1012) return "GLONASS";
|
|
3887
3892
|
if (msgType === 1019) return "GPS";
|
|
3888
3893
|
if (msgType === 1020) return "GLONASS";
|
|
3894
|
+
if (msgType === 1041) return "NavIC";
|
|
3889
3895
|
if (msgType === 1042) return "BeiDou";
|
|
3890
3896
|
if (msgType === 1043) return "SBAS";
|
|
3891
3897
|
if (msgType === 1044) return "QZSS";
|
|
@@ -3897,6 +3903,7 @@ function rtcm3Constellation(msgType) {
|
|
|
3897
3903
|
if (msgType >= 1111 && msgType <= 1117) return "QZSS";
|
|
3898
3904
|
if (msgType >= 1121 && msgType <= 1127) return "BeiDou";
|
|
3899
3905
|
if (msgType >= 1131 && msgType <= 1137) return "NavIC";
|
|
3906
|
+
if (msgType === 1230) return "GLONASS";
|
|
3900
3907
|
return null;
|
|
3901
3908
|
}
|
|
3902
3909
|
function createStreamStats() {
|
|
@@ -3991,7 +3998,6 @@ var GM_GPS = 3986005e8;
|
|
|
3991
3998
|
var GM_GAL = 3986004418e5;
|
|
3992
3999
|
var GM_BDS = 3986004418e5;
|
|
3993
4000
|
var GM_GLO = 39860044e7;
|
|
3994
|
-
var OMEGA_E = 72921151467e-15;
|
|
3995
4001
|
var BDS_GEO_MAX_INCLINATION_RAD = 0.1;
|
|
3996
4002
|
var BDS_GEO_MIN_SEMIMAJOR_AXIS_M = 4e7;
|
|
3997
4003
|
var AE_GLO = 6378136;
|
|
@@ -4726,8 +4732,7 @@ function tropoDelay(elevationRad) {
|
|
|
4726
4732
|
return 2.47 / (sinEl + 0.0121);
|
|
4727
4733
|
}
|
|
4728
4734
|
function sagnac(pos, travelTimeS) {
|
|
4729
|
-
const
|
|
4730
|
-
const theta = OMEGA_E2 * travelTimeS;
|
|
4735
|
+
const theta = OMEGA_E * travelTimeS;
|
|
4731
4736
|
const c = Math.cos(theta);
|
|
4732
4737
|
const s = Math.sin(theta);
|
|
4733
4738
|
return [pos.x * c + pos.y * s, -pos.x * s + pos.y * c, pos.z];
|
|
@@ -5038,6 +5043,14 @@ async function connectToMountpoint(proxyUrl, info, signal) {
|
|
|
5038
5043
|
|
|
5039
5044
|
// src/analysis/multipath.ts
|
|
5040
5045
|
var MIN_ARC_LENGTH = 10;
|
|
5046
|
+
var MP_JUMP_M = 1.25;
|
|
5047
|
+
var MP_JUMP_WINDOW = 5;
|
|
5048
|
+
var MP_EDIT_SIGMA = 3;
|
|
5049
|
+
function median(values) {
|
|
5050
|
+
const s = [...values].sort((a, b) => a - b);
|
|
5051
|
+
const m = s.length >> 1;
|
|
5052
|
+
return s.length % 2 ? s[m] : (s[m - 1] + s[m]) / 2;
|
|
5053
|
+
}
|
|
5041
5054
|
var MultipathAccumulator = class {
|
|
5042
5055
|
state = /* @__PURE__ */ new Map();
|
|
5043
5056
|
results = [];
|
|
@@ -5094,6 +5107,11 @@ var MultipathAccumulator = class {
|
|
|
5094
5107
|
const gap = bandState.lastTime > 0 ? (time - bandState.lastTime) / 1e3 : 0;
|
|
5095
5108
|
if (bandState.lastTime > 0 && gap > this.interval * ARC_GAP_FACTOR) {
|
|
5096
5109
|
this.closeArc(prn, band, refBand, bandState);
|
|
5110
|
+
} else if (bandState.arc.rawMp.length > 0) {
|
|
5111
|
+
const recent = bandState.arc.rawMp.slice(-MP_JUMP_WINDOW);
|
|
5112
|
+
if (Math.abs(mp - median(recent)) > MP_JUMP_M) {
|
|
5113
|
+
this.closeArc(prn, band, refBand, bandState);
|
|
5114
|
+
}
|
|
5097
5115
|
}
|
|
5098
5116
|
bandState.arc.times.push(time);
|
|
5099
5117
|
bandState.arc.rawMp.push(mp);
|
|
@@ -5113,13 +5131,25 @@ var MultipathAccumulator = class {
|
|
|
5113
5131
|
closeArc(prn, band, refBand, state) {
|
|
5114
5132
|
const arc = state.arc;
|
|
5115
5133
|
if (arc.times.length >= MIN_ARC_LENGTH) {
|
|
5116
|
-
|
|
5134
|
+
let keep = arc.times.map((_, i) => i);
|
|
5135
|
+
let mean = 0;
|
|
5136
|
+
for (let pass = 0; pass < 3; pass++) {
|
|
5137
|
+
mean = keep.reduce((s, i) => s + arc.rawMp[i], 0) / keep.length;
|
|
5138
|
+
const sigma = Math.sqrt(
|
|
5139
|
+
keep.reduce((s, i) => s + (arc.rawMp[i] - mean) ** 2, 0) / keep.length
|
|
5140
|
+
);
|
|
5141
|
+
const kept = keep.filter(
|
|
5142
|
+
(i) => Math.abs(arc.rawMp[i] - mean) <= MP_EDIT_SIGMA * sigma
|
|
5143
|
+
);
|
|
5144
|
+
if (kept.length === keep.length || kept.length < MIN_ARC_LENGTH) break;
|
|
5145
|
+
keep = kept;
|
|
5146
|
+
}
|
|
5117
5147
|
const sys = prn[0];
|
|
5118
5148
|
const bLabel = BAND_LABELS[sys]?.[band] ?? band;
|
|
5119
5149
|
const rLabel = BAND_LABELS[sys]?.[refBand] ?? refBand;
|
|
5120
5150
|
const label2 = `${prn} MP ${bLabel}-${rLabel}`;
|
|
5121
|
-
const points =
|
|
5122
|
-
time:
|
|
5151
|
+
const points = keep.map((i) => ({
|
|
5152
|
+
time: arc.times[i],
|
|
5123
5153
|
mp: arc.rawMp[i] - mean
|
|
5124
5154
|
}));
|
|
5125
5155
|
const rms = Math.sqrt(
|
|
@@ -5173,7 +5203,7 @@ var MultipathAccumulator = class {
|
|
|
5173
5203
|
refBand,
|
|
5174
5204
|
rms,
|
|
5175
5205
|
count,
|
|
5176
|
-
satellites: seriesList.
|
|
5206
|
+
satellites: new Set(seriesList.map((s) => s.prn)).size
|
|
5177
5207
|
});
|
|
5178
5208
|
}
|
|
5179
5209
|
const sysOrder = "GRECIJS";
|
|
@@ -6763,6 +6793,7 @@ function computePsdDb(centerMHz, halfSpanChips, numPoints, psdFn, f0 = 1023e3, f
|
|
|
6763
6793
|
MILLISECONDS_IN_WEEK,
|
|
6764
6794
|
MILLISECONDS_TT_TAI,
|
|
6765
6795
|
MultipathAccumulator,
|
|
6796
|
+
OMEGA_E,
|
|
6766
6797
|
REFERENCE_FRAMES,
|
|
6767
6798
|
RINEX_CODES,
|
|
6768
6799
|
RTCM3_MESSAGE_NAMES,
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { D as DAYS_MJD2000_MJD, a as DAYS_MJD_JULIAN, H as HourCode, M as MILLISECONDS_GPS_TAI, b as MILLISECONDS_IN_DAY, c as MILLISECONDS_IN_HOUR, d as MILLISECONDS_IN_MINUTE, e as MILLISECONDS_IN_SECOND, f as MILLISECONDS_IN_WEEK, g as MILLISECONDS_TT_TAI, R as RINEX_CODES, S as SECONDS_IN_DAY, h as SECONDS_IN_HOUR, i as SECONDS_IN_MINUTE, j as SECONDS_IN_WEEK, k as START_BDS_TIME, l as START_GAL_TIME, m as START_GLO_LEAP, n as START_GPS_TIME, o as START_JULIAN_TAI, p as START_MJD_UNIX_SECONDS, q as START_NTP_TIME, r as START_TAI_TIME, s as START_UNIX_TIME, T as TimeDifference } from './time-DnI1VpE8.cjs';
|
|
2
2
|
export { WGS84_ECCENTRICITY_SQUARED, WGS84_FLATTENING, WGS84_SEMI_MAJOR_AXIS, WGS84_SEMI_MINOR_AXIS } from './constants.cjs';
|
|
3
|
-
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OnSlipDetected, S as SYSTEM_NAMES,
|
|
3
|
+
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OMEGA_E, i as OnSlipDetected, S as SYSTEM_NAMES, j as SYS_SHORT, k as buildGloChannelMap, l as buildObsIndices, m as formatUTCTime, n as getFreq, o as gloFreq } from './gnss-BtXrG3zH.cjs';
|
|
4
4
|
export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.cjs';
|
|
5
5
|
export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, rad2deg, rhumbLine, vincenty } from './coordinates.cjs';
|
|
6
6
|
export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { D as DAYS_MJD2000_MJD, a as DAYS_MJD_JULIAN, H as HourCode, M as MILLISECONDS_GPS_TAI, b as MILLISECONDS_IN_DAY, c as MILLISECONDS_IN_HOUR, d as MILLISECONDS_IN_MINUTE, e as MILLISECONDS_IN_SECOND, f as MILLISECONDS_IN_WEEK, g as MILLISECONDS_TT_TAI, R as RINEX_CODES, S as SECONDS_IN_DAY, h as SECONDS_IN_HOUR, i as SECONDS_IN_MINUTE, j as SECONDS_IN_WEEK, k as START_BDS_TIME, l as START_GAL_TIME, m as START_GLO_LEAP, n as START_GPS_TIME, o as START_JULIAN_TAI, p as START_MJD_UNIX_SECONDS, q as START_NTP_TIME, r as START_TAI_TIME, s as START_UNIX_TIME, T as TimeDifference } from './time-DnI1VpE8.js';
|
|
2
2
|
export { WGS84_ECCENTRICITY_SQUARED, WGS84_FLATTENING, WGS84_SEMI_MAJOR_AXIS, WGS84_SEMI_MINOR_AXIS } from './constants.js';
|
|
3
|
-
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OnSlipDetected, S as SYSTEM_NAMES,
|
|
3
|
+
export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSatellite, C as C_LIGHT, D as DEFAULT_ELEV_MASK_DEG, c as DUAL_FREQ_PAIRS, F as FREQ, G as GLO_CHANNEL_FALLBACK, d as GLO_F1_BASE, e as GLO_F1_STEP, f as GLO_F2_BASE, g as GLO_F2_STEP, h as GLO_F3, O as OMEGA_E, i as OnSlipDetected, S as SYSTEM_NAMES, j as SYS_SHORT, k as buildGloChannelMap, l as buildObsIndices, m as formatUTCTime, n as getFreq, o as gloFreq } from './gnss-DhnEr0Dy.js';
|
|
4
4
|
export { Scale, getBdsTime, getDateFromBdsTime, getDateFromDayOfWeek, getDateFromDayOfYear, getDateFromGalTime, getDateFromGloN, getDateFromGpsData, getDateFromGpsTime, getDateFromHourCode, getDateFromJulianDate, getDateFromMJD, getDateFromMJD2000, getDateFromRINEX, getDateFromTai, getDateFromTimeOfDay, getDateFromTt, getDateFromUnixTime, getDateFromUtc, getDayOfWeek, getDayOfYear, getGalTime, getGloN4, getGloNA, getGpsLeap, getGpsTime, getHourCode, getHoursFromTimeDifference, getJulianDate, getLeap, getMJD, getMJD2000, getMinutesFromTimeDifference, getNtpTime, getRINEX, getSecondsFromTimeDifference, getTaiDate, getTimeDifference, getTimeDifferenceFromDays, getTimeDifferenceFromHours, getTimeDifferenceFromMinutes, getTimeDifferenceFromObject, getTimeDifferenceFromSeconds, getTimeOfDay, getTimeOfWeek, getTotalDaysFromTimeDifference, getTtDate, getUnixTime, getUtcDate, getWeekNumber, getWeekOfYear } from './time.js';
|
|
5
5
|
export { deg2dms, deg2rad, euclidean3D, geodeticToGeohash, geodeticToMaidenhead, geodeticToUtm, greatCircleMidpoint, horizonDistance, rad2deg, rhumbLine, vincenty } from './coordinates.js';
|
|
6
6
|
export { c as clampUnit, e as ecefToGeodetic, g as geodeticToEcef, a as getAer, b as getEnuDifference } from './ecef-CF0uAysr.js';
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
CycleSlipAccumulator,
|
|
9
9
|
MultipathAccumulator,
|
|
10
10
|
analyzeQuality
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-AW6BORTZ.js";
|
|
12
12
|
import {
|
|
13
13
|
frequencyLabel,
|
|
14
14
|
parseAntex
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
phiBOCc,
|
|
54
54
|
phiBOCs,
|
|
55
55
|
phiBPSK
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-2K3FCJBX.js";
|
|
57
57
|
import {
|
|
58
58
|
Scale,
|
|
59
59
|
getDateFromDayOfWeek,
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
ionoFree,
|
|
98
98
|
satClockCorrection,
|
|
99
99
|
solveSpp
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-PX7TPPTQ.js";
|
|
101
101
|
import {
|
|
102
102
|
computeAllPositions,
|
|
103
103
|
computeDop,
|
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
keplerPosition,
|
|
111
111
|
navTimesFromEph,
|
|
112
112
|
selectEphemeris
|
|
113
|
-
} from "./chunk-
|
|
113
|
+
} from "./chunk-PQYBTE42.js";
|
|
114
114
|
import {
|
|
115
115
|
getBdsTime,
|
|
116
116
|
getDateFromBdsTime,
|
|
@@ -178,7 +178,7 @@ import {
|
|
|
178
178
|
parseRinexStream,
|
|
179
179
|
systemCmp,
|
|
180
180
|
systemName
|
|
181
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-3U5AX7PY.js";
|
|
182
182
|
import {
|
|
183
183
|
BitReader,
|
|
184
184
|
RTCM3_MESSAGE_NAMES,
|
|
@@ -196,7 +196,7 @@ import {
|
|
|
196
196
|
setRtcm3DebugHandler,
|
|
197
197
|
updateStationMeta,
|
|
198
198
|
updateStreamStats
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-65CQINSB.js";
|
|
200
200
|
import {
|
|
201
201
|
DAYS_MJD2000_MJD,
|
|
202
202
|
DAYS_MJD_JULIAN,
|
|
@@ -236,6 +236,7 @@ import {
|
|
|
236
236
|
GLO_F2_BASE,
|
|
237
237
|
GLO_F2_STEP,
|
|
238
238
|
GLO_F3,
|
|
239
|
+
OMEGA_E,
|
|
239
240
|
SYSTEM_NAMES,
|
|
240
241
|
SYS_SHORT,
|
|
241
242
|
buildGloChannelMap,
|
|
@@ -243,7 +244,7 @@ import {
|
|
|
243
244
|
formatUTCTime,
|
|
244
245
|
getFreq,
|
|
245
246
|
gloFreq
|
|
246
|
-
} from "./chunk-
|
|
247
|
+
} from "./chunk-FIEWO4J4.js";
|
|
247
248
|
export {
|
|
248
249
|
ARC_GAP_FACTOR,
|
|
249
250
|
BAND_LABELS,
|
|
@@ -300,6 +301,7 @@ export {
|
|
|
300
301
|
MILLISECONDS_IN_WEEK,
|
|
301
302
|
MILLISECONDS_TT_TAI,
|
|
302
303
|
MultipathAccumulator,
|
|
304
|
+
OMEGA_E,
|
|
303
305
|
REFERENCE_FRAMES,
|
|
304
306
|
RINEX_CODES,
|
|
305
307
|
RTCM3_MESSAGE_NAMES,
|
package/dist/orbit.cjs
CHANGED
|
@@ -80,6 +80,9 @@ var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
|
|
|
80
80
|
var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:14Z");
|
|
81
81
|
var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
|
|
82
82
|
|
|
83
|
+
// src/constants/gnss.ts
|
|
84
|
+
var OMEGA_E = 72921151467e-15;
|
|
85
|
+
|
|
83
86
|
// src/time/gnss.ts
|
|
84
87
|
function getTaiDate(date) {
|
|
85
88
|
return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
|
|
@@ -167,7 +170,6 @@ var GM_GPS = 3986005e8;
|
|
|
167
170
|
var GM_GAL = 3986004418e5;
|
|
168
171
|
var GM_BDS = 3986004418e5;
|
|
169
172
|
var GM_GLO = 39860044e7;
|
|
170
|
-
var OMEGA_E = 72921151467e-15;
|
|
171
173
|
var BDS_GEO_MAX_INCLINATION_RAD = 0.1;
|
|
172
174
|
var BDS_GEO_MIN_SEMIMAJOR_AXIS_M = 4e7;
|
|
173
175
|
var AE_GLO = 6378136;
|
package/dist/orbit.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
keplerPosition,
|
|
11
11
|
navTimesFromEph,
|
|
12
12
|
selectEphemeris
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PQYBTE42.js";
|
|
14
14
|
import "./chunk-HVXYFUCB.js";
|
|
15
15
|
import {
|
|
16
16
|
ecefToGeodetic,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-37QNKGTC.js";
|
|
19
19
|
import "./chunk-6FAL6P4G.js";
|
|
20
20
|
import "./chunk-LEEU5OIO.js";
|
|
21
|
+
import "./chunk-FIEWO4J4.js";
|
|
21
22
|
export {
|
|
22
23
|
computeAllPositions,
|
|
23
24
|
computeDop,
|
package/dist/positioning.cjs
CHANGED
|
@@ -63,6 +63,10 @@ var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
|
|
|
63
63
|
var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:14Z");
|
|
64
64
|
var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
|
|
65
65
|
|
|
66
|
+
// src/constants/gnss.ts
|
|
67
|
+
var C_LIGHT = 299792458;
|
|
68
|
+
var OMEGA_E = 72921151467e-15;
|
|
69
|
+
|
|
66
70
|
// src/time/gnss.ts
|
|
67
71
|
function getTaiDate(date) {
|
|
68
72
|
return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
|
|
@@ -150,7 +154,6 @@ var GM_GPS = 3986005e8;
|
|
|
150
154
|
var GM_GAL = 3986004418e5;
|
|
151
155
|
var GM_BDS = 3986004418e5;
|
|
152
156
|
var GM_GLO = 39860044e7;
|
|
153
|
-
var OMEGA_E = 72921151467e-15;
|
|
154
157
|
var BDS_GEO_MAX_INCLINATION_RAD = 0.1;
|
|
155
158
|
var BDS_GEO_MIN_SEMIMAJOR_AXIS_M = 4e7;
|
|
156
159
|
var AE_GLO = 6378136;
|
|
@@ -366,9 +369,6 @@ function computeSatPosition(eph, timeMs) {
|
|
|
366
369
|
var GPS_EPOCH_MS = START_GPS_TIME.getTime();
|
|
367
370
|
var BDS_EPOCH_MS = START_BDS_TIME.getTime();
|
|
368
371
|
|
|
369
|
-
// src/constants/gnss.ts
|
|
370
|
-
var C_LIGHT = 299792458;
|
|
371
|
-
|
|
372
372
|
// src/positioning/index.ts
|
|
373
373
|
var GM_GPS2 = 3986005e8;
|
|
374
374
|
var F_REL = -4442807633e-19;
|
|
@@ -400,8 +400,7 @@ function tropoDelay(elevationRad) {
|
|
|
400
400
|
return 2.47 / (sinEl + 0.0121);
|
|
401
401
|
}
|
|
402
402
|
function sagnac(pos, travelTimeS) {
|
|
403
|
-
const
|
|
404
|
-
const theta = OMEGA_E2 * travelTimeS;
|
|
403
|
+
const theta = OMEGA_E * travelTimeS;
|
|
405
404
|
const c = Math.cos(theta);
|
|
406
405
|
const s = Math.sin(theta);
|
|
407
406
|
return [pos.x * c + pos.y * s, -pos.x * s + pos.y * c, pos.z];
|
package/dist/positioning.js
CHANGED
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
ionoFree,
|
|
3
3
|
satClockCorrection,
|
|
4
4
|
solveSpp
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-PX7TPPTQ.js";
|
|
6
|
+
import "./chunk-PQYBTE42.js";
|
|
7
7
|
import "./chunk-HVXYFUCB.js";
|
|
8
8
|
import "./chunk-37QNKGTC.js";
|
|
9
9
|
import "./chunk-6FAL6P4G.js";
|
|
10
10
|
import "./chunk-LEEU5OIO.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-FIEWO4J4.js";
|
|
12
12
|
export {
|
|
13
13
|
ionoFree,
|
|
14
14
|
satClockCorrection,
|
package/dist/rinex.js
CHANGED
package/dist/rtcm3.cjs
CHANGED
|
@@ -1319,6 +1319,7 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
1319
1319
|
1031: "GLONASS Network RTK Residual",
|
|
1320
1320
|
1032: "Physical Reference Station",
|
|
1321
1321
|
1033: "Receiver+Antenna Descriptor",
|
|
1322
|
+
1041: "NavIC Ephemeris",
|
|
1322
1323
|
1042: "BeiDou Ephemeris",
|
|
1323
1324
|
1043: "SBAS Ephemeris",
|
|
1324
1325
|
1044: "QZSS Ephemeris",
|
|
@@ -1383,6 +1384,8 @@ var RTCM3_MESSAGE_NAMES = {
|
|
|
1383
1384
|
1064: "GLONASS SSR Clock",
|
|
1384
1385
|
1065: "GLONASS SSR Code Bias",
|
|
1385
1386
|
1066: "GLONASS SSR Orbit+Clock",
|
|
1387
|
+
// Biases
|
|
1388
|
+
1230: "GLONASS Code-Phase Biases",
|
|
1386
1389
|
// IGS SSR
|
|
1387
1390
|
4076: "IGS SSR"
|
|
1388
1391
|
};
|
|
@@ -1391,6 +1394,7 @@ function rtcm3Constellation(msgType) {
|
|
|
1391
1394
|
if (msgType >= 1009 && msgType <= 1012) return "GLONASS";
|
|
1392
1395
|
if (msgType === 1019) return "GPS";
|
|
1393
1396
|
if (msgType === 1020) return "GLONASS";
|
|
1397
|
+
if (msgType === 1041) return "NavIC";
|
|
1394
1398
|
if (msgType === 1042) return "BeiDou";
|
|
1395
1399
|
if (msgType === 1043) return "SBAS";
|
|
1396
1400
|
if (msgType === 1044) return "QZSS";
|
|
@@ -1402,6 +1406,7 @@ function rtcm3Constellation(msgType) {
|
|
|
1402
1406
|
if (msgType >= 1111 && msgType <= 1117) return "QZSS";
|
|
1403
1407
|
if (msgType >= 1121 && msgType <= 1127) return "BeiDou";
|
|
1404
1408
|
if (msgType >= 1131 && msgType <= 1137) return "NavIC";
|
|
1409
|
+
if (msgType === 1230) return "GLONASS";
|
|
1405
1410
|
return null;
|
|
1406
1411
|
}
|
|
1407
1412
|
function createStreamStats() {
|
package/dist/rtcm3.js
CHANGED
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
setRtcm3DebugHandler,
|
|
16
16
|
updateStationMeta,
|
|
17
17
|
updateStreamStats
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-65CQINSB.js";
|
|
19
19
|
import "./chunk-LEEU5OIO.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-FIEWO4J4.js";
|
|
21
21
|
export {
|
|
22
22
|
BitReader,
|
|
23
23
|
RTCM3_MESSAGE_NAMES,
|
package/dist/signals.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gnss-js",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
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,
|