gnss-js 1.1.0 → 1.2.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/README.md +28 -0
- package/dist/{chunk-7NOFXKET.js → chunk-HVXYFUCB.js} +72 -257
- package/dist/chunk-L5OUUNLT.js +198 -0
- package/dist/{chunk-PGHDJFQK.js → chunk-VANVV4F7.js} +6 -2
- package/dist/constants.js +22 -22
- package/dist/frames.cjs +250 -0
- package/dist/frames.d.cts +56 -0
- package/dist/frames.d.ts +56 -0
- package/dist/frames.js +222 -0
- package/dist/index.cjs +3 -2
- package/dist/index.js +83 -81
- package/dist/orbit.cjs +88 -2
- package/dist/orbit.js +2 -1
- package/dist/positioning.cjs +565 -0
- package/dist/positioning.d.cts +68 -0
- package/dist/positioning.d.ts +68 -0
- package/dist/positioning.js +206 -0
- package/dist/rtcm3.js +2 -2
- package/dist/time.js +20 -18
- package/package.json +11 -1
- package/dist/{chunk-JDO3LEPC.js → chunk-7EEWQ5DU.js} +5 -5
package/dist/index.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
connectToMountpoint,
|
|
3
|
+
fetchSourcetable,
|
|
4
|
+
parseSourcetable
|
|
5
|
+
} from "./chunk-BJHTBYNG.js";
|
|
1
6
|
import {
|
|
2
7
|
CompletenessAccumulator,
|
|
3
8
|
CycleSlipAccumulator,
|
|
@@ -51,40 +56,68 @@ import {
|
|
|
51
56
|
} from "./chunk-5SPJH4MG.js";
|
|
52
57
|
import {
|
|
53
58
|
Scale,
|
|
54
|
-
getBdsTime,
|
|
55
|
-
getDateFromBdsTime,
|
|
56
59
|
getDateFromDayOfWeek,
|
|
57
60
|
getDateFromDayOfYear,
|
|
58
|
-
getDateFromGalTime,
|
|
59
|
-
getDateFromGloN,
|
|
60
|
-
getDateFromGpsData,
|
|
61
|
-
getDateFromGpsTime,
|
|
62
61
|
getDateFromHourCode,
|
|
63
62
|
getDateFromJulianDate,
|
|
64
63
|
getDateFromMJD,
|
|
65
64
|
getDateFromMJD2000,
|
|
66
65
|
getDateFromRINEX,
|
|
67
|
-
getDateFromTai,
|
|
68
66
|
getDateFromTimeOfDay,
|
|
67
|
+
getDayOfWeek,
|
|
68
|
+
getDayOfYear,
|
|
69
|
+
getHourCode,
|
|
70
|
+
getJulianDate,
|
|
71
|
+
getMJD,
|
|
72
|
+
getMJD2000,
|
|
73
|
+
getRINEX,
|
|
74
|
+
getTimeOfDay,
|
|
75
|
+
getWeekOfYear
|
|
76
|
+
} from "./chunk-L5OUUNLT.js";
|
|
77
|
+
import {
|
|
78
|
+
deg2dms,
|
|
79
|
+
deg2rad,
|
|
80
|
+
euclidean3D,
|
|
81
|
+
geodeticToGeohash,
|
|
82
|
+
geodeticToMaidenhead,
|
|
83
|
+
geodeticToUtm,
|
|
84
|
+
greatCircleMidpoint,
|
|
85
|
+
horizonDistance,
|
|
86
|
+
rad2deg,
|
|
87
|
+
rhumbLine,
|
|
88
|
+
vincenty
|
|
89
|
+
} from "./chunk-MIIM4LDY.js";
|
|
90
|
+
import {
|
|
91
|
+
computeAllPositions,
|
|
92
|
+
computeDop,
|
|
93
|
+
computeLiveSkyPositions,
|
|
94
|
+
computeSatPosition,
|
|
95
|
+
ecefToAzEl,
|
|
96
|
+
glonassPosition,
|
|
97
|
+
keplerPosition,
|
|
98
|
+
navTimesFromEph,
|
|
99
|
+
selectEphemeris
|
|
100
|
+
} from "./chunk-VANVV4F7.js";
|
|
101
|
+
import {
|
|
102
|
+
getBdsTime,
|
|
103
|
+
getDateFromBdsTime,
|
|
104
|
+
getDateFromGalTime,
|
|
105
|
+
getDateFromGloN,
|
|
106
|
+
getDateFromGpsData,
|
|
107
|
+
getDateFromGpsTime,
|
|
108
|
+
getDateFromTai,
|
|
69
109
|
getDateFromTt,
|
|
70
110
|
getDateFromUnixTime,
|
|
71
111
|
getDateFromUtc,
|
|
72
|
-
getDayOfWeek,
|
|
73
|
-
getDayOfYear,
|
|
74
112
|
getGalTime,
|
|
75
113
|
getGloN4,
|
|
76
114
|
getGloNA,
|
|
77
115
|
getGpsLeap,
|
|
78
116
|
getGpsTime,
|
|
79
|
-
getHourCode,
|
|
80
117
|
getHoursFromTimeDifference,
|
|
81
|
-
getJulianDate,
|
|
82
118
|
getLeap,
|
|
83
|
-
getMJD,
|
|
84
|
-
getMJD2000,
|
|
85
119
|
getMinutesFromTimeDifference,
|
|
86
120
|
getNtpTime,
|
|
87
|
-
getRINEX,
|
|
88
121
|
getSecondsFromTimeDifference,
|
|
89
122
|
getTaiDate,
|
|
90
123
|
getTimeDifference,
|
|
@@ -93,29 +126,27 @@ import {
|
|
|
93
126
|
getTimeDifferenceFromMinutes,
|
|
94
127
|
getTimeDifferenceFromObject,
|
|
95
128
|
getTimeDifferenceFromSeconds,
|
|
96
|
-
getTimeOfDay,
|
|
97
129
|
getTimeOfWeek,
|
|
98
130
|
getTotalDaysFromTimeDifference,
|
|
99
131
|
getTtDate,
|
|
100
132
|
getUnixTime,
|
|
101
133
|
getUtcDate,
|
|
102
|
-
getWeekNumber
|
|
103
|
-
|
|
104
|
-
} from "./chunk-7NOFXKET.js";
|
|
134
|
+
getWeekNumber
|
|
135
|
+
} from "./chunk-HVXYFUCB.js";
|
|
105
136
|
import {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
greatCircleMidpoint,
|
|
113
|
-
horizonDistance,
|
|
114
|
-
rad2deg,
|
|
115
|
-
rhumbLine,
|
|
116
|
-
vincenty
|
|
117
|
-
} from "./chunk-MIIM4LDY.js";
|
|
137
|
+
clampUnit,
|
|
138
|
+
ecefToGeodetic,
|
|
139
|
+
geodeticToEcef,
|
|
140
|
+
getAer,
|
|
141
|
+
getEnuDifference
|
|
142
|
+
} from "./chunk-37QNKGTC.js";
|
|
118
143
|
import "./chunk-5S5MONFK.js";
|
|
144
|
+
import {
|
|
145
|
+
WGS84_ECCENTRICITY_SQUARED,
|
|
146
|
+
WGS84_FLATTENING,
|
|
147
|
+
WGS84_SEMI_MAJOR_AXIS,
|
|
148
|
+
WGS84_SEMI_MINOR_AXIS
|
|
149
|
+
} from "./chunk-6FAL6P4G.js";
|
|
119
150
|
import {
|
|
120
151
|
EMPTY_WARNINGS,
|
|
121
152
|
WarningAccumulator,
|
|
@@ -152,53 +183,7 @@ import {
|
|
|
152
183
|
setRtcm3DebugHandler,
|
|
153
184
|
updateStationMeta,
|
|
154
185
|
updateStreamStats
|
|
155
|
-
} from "./chunk-
|
|
156
|
-
import {
|
|
157
|
-
ARC_GAP_FACTOR,
|
|
158
|
-
BAND_LABELS,
|
|
159
|
-
BDS_SATELLITES,
|
|
160
|
-
C_LIGHT,
|
|
161
|
-
DEFAULT_ELEV_MASK_DEG,
|
|
162
|
-
DUAL_FREQ_PAIRS,
|
|
163
|
-
FREQ,
|
|
164
|
-
GLO_CHANNEL_FALLBACK,
|
|
165
|
-
GLO_F1_BASE,
|
|
166
|
-
GLO_F1_STEP,
|
|
167
|
-
GLO_F2_BASE,
|
|
168
|
-
GLO_F2_STEP,
|
|
169
|
-
GLO_F3,
|
|
170
|
-
SYSTEM_NAMES,
|
|
171
|
-
SYS_SHORT,
|
|
172
|
-
buildGloChannelMap,
|
|
173
|
-
buildObsIndices,
|
|
174
|
-
formatUTCTime,
|
|
175
|
-
getFreq,
|
|
176
|
-
gloFreq
|
|
177
|
-
} from "./chunk-W5WKEV7U.js";
|
|
178
|
-
import {
|
|
179
|
-
computeAllPositions,
|
|
180
|
-
computeDop,
|
|
181
|
-
computeLiveSkyPositions,
|
|
182
|
-
computeSatPosition,
|
|
183
|
-
ecefToAzEl,
|
|
184
|
-
glonassPosition,
|
|
185
|
-
keplerPosition,
|
|
186
|
-
navTimesFromEph,
|
|
187
|
-
selectEphemeris
|
|
188
|
-
} from "./chunk-PGHDJFQK.js";
|
|
189
|
-
import {
|
|
190
|
-
clampUnit,
|
|
191
|
-
ecefToGeodetic,
|
|
192
|
-
geodeticToEcef,
|
|
193
|
-
getAer,
|
|
194
|
-
getEnuDifference
|
|
195
|
-
} from "./chunk-37QNKGTC.js";
|
|
196
|
-
import {
|
|
197
|
-
WGS84_ECCENTRICITY_SQUARED,
|
|
198
|
-
WGS84_FLATTENING,
|
|
199
|
-
WGS84_SEMI_MAJOR_AXIS,
|
|
200
|
-
WGS84_SEMI_MINOR_AXIS
|
|
201
|
-
} from "./chunk-6FAL6P4G.js";
|
|
186
|
+
} from "./chunk-7EEWQ5DU.js";
|
|
202
187
|
import {
|
|
203
188
|
DAYS_MJD2000_MJD,
|
|
204
189
|
DAYS_MJD_JULIAN,
|
|
@@ -225,10 +210,27 @@ import {
|
|
|
225
210
|
START_UNIX_TIME
|
|
226
211
|
} from "./chunk-LEEU5OIO.js";
|
|
227
212
|
import {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
213
|
+
ARC_GAP_FACTOR,
|
|
214
|
+
BAND_LABELS,
|
|
215
|
+
BDS_SATELLITES,
|
|
216
|
+
C_LIGHT,
|
|
217
|
+
DEFAULT_ELEV_MASK_DEG,
|
|
218
|
+
DUAL_FREQ_PAIRS,
|
|
219
|
+
FREQ,
|
|
220
|
+
GLO_CHANNEL_FALLBACK,
|
|
221
|
+
GLO_F1_BASE,
|
|
222
|
+
GLO_F1_STEP,
|
|
223
|
+
GLO_F2_BASE,
|
|
224
|
+
GLO_F2_STEP,
|
|
225
|
+
GLO_F3,
|
|
226
|
+
SYSTEM_NAMES,
|
|
227
|
+
SYS_SHORT,
|
|
228
|
+
buildGloChannelMap,
|
|
229
|
+
buildObsIndices,
|
|
230
|
+
formatUTCTime,
|
|
231
|
+
getFreq,
|
|
232
|
+
gloFreq
|
|
233
|
+
} from "./chunk-W5WKEV7U.js";
|
|
232
234
|
export {
|
|
233
235
|
ARC_GAP_FACTOR,
|
|
234
236
|
BAND_LABELS,
|
package/dist/orbit.cjs
CHANGED
|
@@ -72,8 +72,93 @@ function ecefToGeodetic(x, y, z) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// src/constants/time.ts
|
|
75
|
+
var MILLISECONDS_IN_SECOND = 1e3;
|
|
76
|
+
var MILLISECONDS_GPS_TAI = 19e3;
|
|
75
77
|
var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
|
|
76
78
|
var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:14Z");
|
|
79
|
+
var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
|
|
80
|
+
|
|
81
|
+
// src/time/gnss.ts
|
|
82
|
+
function getTaiDate(date) {
|
|
83
|
+
return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
|
|
84
|
+
}
|
|
85
|
+
function getNtpTime(date) {
|
|
86
|
+
return getTaiDate(date).getTime() - START_NTP_TIME.getTime();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// src/time/utc.ts
|
|
90
|
+
var LEAP_SECONDS_TABLE = [
|
|
91
|
+
[3692217600, 37],
|
|
92
|
+
// 1 Jan 2017
|
|
93
|
+
[3644697600, 36],
|
|
94
|
+
// 1 Jul 2015
|
|
95
|
+
[3550089600, 35],
|
|
96
|
+
// 1 Jul 2012
|
|
97
|
+
[3439756800, 34],
|
|
98
|
+
// 1 Jan 2009
|
|
99
|
+
[3345062400, 33],
|
|
100
|
+
// 1 Jan 2006
|
|
101
|
+
[3124137600, 32],
|
|
102
|
+
// 1 Jan 1999
|
|
103
|
+
[3076704e3, 31],
|
|
104
|
+
// 1 Jul 1997
|
|
105
|
+
[3029443200, 30],
|
|
106
|
+
// 1 Jan 1996
|
|
107
|
+
[2982009600, 29],
|
|
108
|
+
// 1 Jul 1994
|
|
109
|
+
[2950473600, 28],
|
|
110
|
+
// 1 Jul 1993
|
|
111
|
+
[2918937600, 27],
|
|
112
|
+
// 1 Jul 1992
|
|
113
|
+
[2871676800, 26],
|
|
114
|
+
// 1 Jan 1991
|
|
115
|
+
[2840140800, 25],
|
|
116
|
+
// 1 Jan 1990
|
|
117
|
+
[2776982400, 24],
|
|
118
|
+
// 1 Jan 1988
|
|
119
|
+
[2698012800, 23],
|
|
120
|
+
// 1 Jul 1985
|
|
121
|
+
[2634854400, 22],
|
|
122
|
+
// 1 Jul 1983
|
|
123
|
+
[2603318400, 21],
|
|
124
|
+
// 1 Jul 1982
|
|
125
|
+
[2571782400, 20],
|
|
126
|
+
// 1 Jul 1981
|
|
127
|
+
[2524521600, 19],
|
|
128
|
+
// 1 Jan 1980
|
|
129
|
+
[2492985600, 18],
|
|
130
|
+
// 1 Jan 1979
|
|
131
|
+
[2461449600, 17],
|
|
132
|
+
// 1 Jan 1978
|
|
133
|
+
[2429913600, 16],
|
|
134
|
+
// 1 Jan 1977
|
|
135
|
+
[2398291200, 15],
|
|
136
|
+
// 1 Jan 1976
|
|
137
|
+
[2366755200, 14],
|
|
138
|
+
// 1 Jan 1975
|
|
139
|
+
[2335219200, 13],
|
|
140
|
+
// 1 Jan 1974
|
|
141
|
+
[2303683200, 12],
|
|
142
|
+
// 1 Jan 1973
|
|
143
|
+
[2287785600, 11],
|
|
144
|
+
// 1 Jul 1972
|
|
145
|
+
[2272060800, 10]
|
|
146
|
+
// 1 Jan 1972
|
|
147
|
+
];
|
|
148
|
+
function getLeap(date) {
|
|
149
|
+
const ntp_time = getNtpTime(date);
|
|
150
|
+
for (const [timestamp, leapSeconds] of LEAP_SECONDS_TABLE) {
|
|
151
|
+
if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= timestamp) {
|
|
152
|
+
return leapSeconds;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return 8;
|
|
156
|
+
}
|
|
157
|
+
function getGpsLeap(date) {
|
|
158
|
+
const leap_seconds = getLeap(date);
|
|
159
|
+
if (leap_seconds < 0) return 0;
|
|
160
|
+
return leap_seconds - 19;
|
|
161
|
+
}
|
|
77
162
|
|
|
78
163
|
// src/orbit/index.ts
|
|
79
164
|
var GM_GPS = 3986005e8;
|
|
@@ -299,7 +384,8 @@ function selectEphemeris(ephemerides, prn, timeMs) {
|
|
|
299
384
|
}
|
|
300
385
|
function computeSatPosition(eph, timeMs) {
|
|
301
386
|
if (eph.system === "R" || eph.system === "S") {
|
|
302
|
-
|
|
387
|
+
const leapMs = getGpsLeap(new Date(timeMs)) * 1e3;
|
|
388
|
+
return glonassPosition(eph, (timeMs - leapMs) / 1e3);
|
|
303
389
|
}
|
|
304
390
|
const GPS_EPOCH = START_GPS_TIME.getTime();
|
|
305
391
|
const gpsSeconds = (timeMs - GPS_EPOCH) / 1e3;
|
|
@@ -472,7 +558,7 @@ function ephInfoToEphemeris(info) {
|
|
|
472
558
|
};
|
|
473
559
|
}
|
|
474
560
|
function computeLiveSkyPositions(ephemerides, rxPos, cn0Map) {
|
|
475
|
-
const now = Date.now();
|
|
561
|
+
const now = Date.now() + getGpsLeap(/* @__PURE__ */ new Date()) * 1e3;
|
|
476
562
|
const result = [];
|
|
477
563
|
const [rxX, rxY, rxZ] = rxPos;
|
|
478
564
|
const [rxLat, rxLon] = ecefToGeodetic(rxX, rxY, rxZ);
|