gnss-js 1.24.0 → 1.26.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/index.d.cts CHANGED
@@ -4,17 +4,20 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
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';
7
- export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, IonexGrid, Nav4Input, RinexWarning, RinexWarnings, Sp3File, Sp3Sample, WarningAccumulator, WarningSeverity, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, parseIonex, parseSp3, sp3Position, stationHeaderLines, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
7
+ export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, Sp3File, Sp3Sample, WarningAccumulator, WarningSeverity, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, parseSp3, sp3Position, stationHeaderLines, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
8
8
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.cjs';
9
9
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.cjs';
10
+ export { I as IonexGrid, p as parseIonex } from './ionex-DaW5x9nq.cjs';
10
11
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-Ohl6NAfw.cjs';
11
12
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.cjs';
12
13
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.cjs';
13
14
  export { HasMessage, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGloNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfParseResult, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGloNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, sbfCrc16, scanSbfFrames } from './sbf.cjs';
14
15
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelRange } from './novatel.cjs';
16
+ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.cjs';
17
+ export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
15
18
  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';
16
19
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
17
- export { DgnssOptions, DgnssSolution, EphemerisSource, KlobucharCoeffs, LambdaResult, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SppOptions, SppSolution, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch } from './positioning.cjs';
20
+ export { DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SppOptions, SppSolution, gimSlantIonoDelayL1, gimVerticalTec, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch } from './positioning.cjs';
18
21
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
19
22
  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';
20
23
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
package/dist/index.d.ts CHANGED
@@ -4,17 +4,20 @@ export { A as ARC_GAP_FACTOR, B as BAND_LABELS, a as BDS_SATELLITES, b as BdsSat
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';
7
- export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, IonexGrid, Nav4Input, RinexWarning, RinexWarnings, Sp3File, Sp3Sample, WarningAccumulator, WarningSeverity, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, parseIonex, parseSp3, sp3Position, stationHeaderLines, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
7
+ export { CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, Sp3File, Sp3Sample, WarningAccumulator, WarningSeverity, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, parseSp3, sp3Position, stationHeaderLines, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
8
8
  export { E as EpochSummary, P as ParseOptions, R as RinexHeader, a as RinexResult, b as RinexStats, S as SYSTEM_ORDER, c as SatObsCallback, p as parseRinexStream, s as systemCmp, d as systemName } from './parser-JPjjFgeP.js';
9
9
  export { C as CnavEphemeris, E as Ephemeris, G as GlonassEphemeris, K as KeplerEphemeris, N as NavHeader, a as NavResult, R as RinexCnavEphemeris, p as parseNavFile } from './nav-DImXUdbp.js';
10
+ export { I as IonexGrid, p as parseIonex } from './ionex-DaW5x9nq.js';
10
11
  export { B as BitReader, E as EphemerisInfo, R as Rtcm3DebugHandler, a as Rtcm3Decoder, b as Rtcm3Frame, d as decodeEphemeris, r as readString, c as reportDecodeError, s as setRtcm3DebugHandler } from './ephemeris-Ohl6NAfw.js';
11
12
  export { MessageTypeStats, MsmEpoch, MsmSatObs, MsmSignal, RTCM3_MESSAGE_NAMES, SatCn0, SignalCn0, StationMeta, StreamStats, createStationMeta, createStreamStats, decodeMsmFull, msmEpochToDate, resetGloFreqCache, rtcm3Constellation, setGloFreqNumber, updateStationMeta, updateStreamStats } from './rtcm3.js';
12
13
  export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.js';
13
14
  export { HasMessage, SbfBdsNavResult, SbfCnavEphemeris, SbfCnavResult, SbfGalEphemeris, SbfGalNavResult, SbfGloNavResult, SbfHasMessage, SbfHasResult, SbfIonoUtcResult, SbfMeasEpoch, SbfMeasurement, SbfParseResult, parseSbfBdsNav, parseSbfCnav, parseSbfGalNav, parseSbfGloNav, parseSbfHas, parseSbfIonoUtc, parseSbfMeas, sbfCrc16, scanSbfFrames } from './sbf.js';
14
15
  export { NovatelEpoch, NovatelMeasurement, NovatelNavResult, NovatelParseResult, OEM4_HLEN, Oem4Frame, crc32, oem4Frames, parseNovatelNav, parseNovatelRange } from './novatel.js';
16
+ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, TrimbleParseResult, parseTrimble, parseTrimbleNav, trimbleFrames } from './trimble.js';
17
+ export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
15
18
  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';
16
19
  export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
17
- export { DgnssOptions, DgnssSolution, EphemerisSource, KlobucharCoeffs, LambdaResult, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SppOptions, SppSolution, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch } from './positioning.js';
20
+ export { DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SppOptions, SppSolution, gimSlantIonoDelayL1, gimVerticalTec, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch } from './positioning.js';
18
21
  export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
19
22
  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';
20
23
  export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
package/dist/index.js CHANGED
@@ -1,3 +1,13 @@
1
+ import {
2
+ frequencyLabel,
3
+ parseAntex
4
+ } from "./chunk-5CMSYIYM.js";
5
+ import {
6
+ computeStats,
7
+ nmeaCoordToDecimal,
8
+ parseNmeaFile,
9
+ verifyChecksum
10
+ } from "./chunk-YDMYO3YK.js";
1
11
  import {
2
12
  BAND_PRESETS,
3
13
  CONSTELLATIONS,
@@ -40,7 +50,7 @@ import {
40
50
  parseUbxRawNav,
41
51
  parseUbxRawx,
42
52
  ubxFrames
43
- } from "./chunk-MCAVU3XL.js";
53
+ } from "./chunk-FEOMYZEU.js";
44
54
  import {
45
55
  crc16,
46
56
  parseSbfAlmanac,
@@ -53,15 +63,29 @@ import {
53
63
  parseSbfMeas,
54
64
  parseSbfNav,
55
65
  scanSbfFrames
56
- } from "./chunk-PZNVFCKJ.js";
57
- import "./chunk-VTX3VCL4.js";
66
+ } from "./chunk-AFEDNWXI.js";
67
+ import "./chunk-5AUK42AL.js";
58
68
  import {
59
69
  OEM4_HLEN,
60
70
  crc32,
61
71
  oem4Frames,
62
72
  parseNovatelNav,
63
73
  parseNovatelRange
64
- } from "./chunk-7RKLWE6R.js";
74
+ } from "./chunk-F4CM6Q4F.js";
75
+ import {
76
+ parseTrimble,
77
+ parseTrimbleNav,
78
+ trimbleFrames
79
+ } from "./chunk-CKRNXZHT.js";
80
+ import {
81
+ binexCrc16,
82
+ binexCrc32,
83
+ binexCsum8,
84
+ binexRecords,
85
+ decodeBinexEph,
86
+ getBnxi,
87
+ parseBinex
88
+ } from "./chunk-OK4GGNOO.js";
65
89
  import {
66
90
  connectToMountpoint,
67
91
  fetchSourcetable,
@@ -78,16 +102,6 @@ import {
78
102
  detrendIonoArcs,
79
103
  parseSinexBiasDcb
80
104
  } from "./chunk-Z5UZUNCB.js";
81
- import {
82
- frequencyLabel,
83
- parseAntex
84
- } from "./chunk-5CMSYIYM.js";
85
- import {
86
- computeStats,
87
- nmeaCoordToDecimal,
88
- parseNmeaFile,
89
- verifyChecksum
90
- } from "./chunk-YDMYO3YK.js";
91
105
  import {
92
106
  Scale,
93
107
  getDateFromDayOfWeek,
@@ -128,7 +142,10 @@ import {
128
142
  transformFrame
129
143
  } from "./chunk-4KOXMHUW.js";
130
144
  import {
145
+ IONO_L1_M_PER_TECU,
131
146
  RtkFloatEngine,
147
+ gimSlantIonoDelayL1,
148
+ gimVerticalTec,
132
149
  ionoFree,
133
150
  klobucharDelay,
134
151
  lambdaReduction,
@@ -137,7 +154,7 @@ import {
137
154
  solveDgnss,
138
155
  solveSpp,
139
156
  toRtkEpoch
140
- } from "./chunk-T2ZMNRCY.js";
157
+ } from "./chunk-4XGKCVE3.js";
141
158
  import {
142
159
  almanacEpochMs,
143
160
  almanacSatPosition,
@@ -193,8 +210,9 @@ import {
193
210
  writeRinexNav,
194
211
  writeRinexNav4,
195
212
  writeRinexObsBlob
196
- } from "./chunk-NOQAAUGY.js";
197
- import "./chunk-WZDFZ76K.js";
213
+ } from "./chunk-WDUN4BWL.js";
214
+ import "./chunk-726LQBGM.js";
215
+ import "./chunk-IQ5OIMQD.js";
198
216
  import {
199
217
  SYSTEM_ORDER,
200
218
  crxDecompress,
@@ -353,6 +371,7 @@ export {
353
371
  GLO_F2_BASE,
354
372
  GLO_F2_STEP,
355
373
  GLO_F3,
374
+ IONO_L1_M_PER_TECU,
356
375
  IonoAccumulator,
357
376
  MILLISECONDS_GPS_TAI,
358
377
  MILLISECONDS_IN_DAY,
@@ -396,6 +415,10 @@ export {
396
415
  analyzeQuality,
397
416
  applyHelmert,
398
417
  applyIonoDcb,
418
+ binexCrc16,
419
+ binexCrc32,
420
+ binexCsum8,
421
+ binexRecords,
399
422
  buildGloChannelMap,
400
423
  buildObsIndices,
401
424
  clampUnit,
@@ -416,6 +439,7 @@ export {
416
439
  crxDecompress,
417
440
  crxRepair,
418
441
  dateToEpoch,
442
+ decodeBinexEph,
419
443
  decodeEphemeris,
420
444
  decodeMsmFull,
421
445
  deg2dms,
@@ -437,6 +461,7 @@ export {
437
461
  geodeticToUtm,
438
462
  getAer,
439
463
  getBdsTime,
464
+ getBnxi,
440
465
  getDateFromBdsTime,
441
466
  getDateFromDayOfWeek,
442
467
  getDateFromDayOfYear,
@@ -488,6 +513,8 @@ export {
488
513
  getUtcDate,
489
514
  getWeekNumber,
490
515
  getWeekOfYear,
516
+ gimSlantIonoDelayL1,
517
+ gimVerticalTec,
491
518
  gloFreq,
492
519
  glonassAlmanacEpochMs,
493
520
  glonassAlmanacPosition,
@@ -508,6 +535,7 @@ export {
508
535
  padL,
509
536
  padR,
510
537
  parseAntex,
538
+ parseBinex,
511
539
  parseCrxDataLine,
512
540
  parseIonex,
513
541
  parseNavFile,
@@ -527,6 +555,8 @@ export {
527
555
  parseSinexBiasDcb,
528
556
  parseSourcetable,
529
557
  parseSp3,
558
+ parseTrimble,
559
+ parseTrimbleNav,
530
560
  parseUbxCnav,
531
561
  parseUbxIonoUtc,
532
562
  parseUbxNav,
@@ -557,6 +587,7 @@ export {
557
587
  systemName,
558
588
  toRtkEpoch,
559
589
  transformFrame,
590
+ trimbleFrames,
560
591
  ubxFrames,
561
592
  updateStationMeta,
562
593
  updateStreamStats,
@@ -0,0 +1,23 @@
1
+ /**
2
+ * IONEX 1.0 parser — global ionosphere maps (GIMs) as published by
3
+ * the IGS analysis centres (e.g. ESA0OPSRAP_*_GIM.INX).
4
+ *
5
+ * Returns the TEC maps in TECU on a regular lat/lon grid, one map per
6
+ * epoch. RMS maps and the DCB auxiliary block are skipped.
7
+ */
8
+ interface IonexGrid {
9
+ /** Map epochs (Unix ms, UTC). */
10
+ epochs: number[];
11
+ /** Grid latitudes (degrees), in file order (typically 87.5 → −87.5). */
12
+ lats: number[];
13
+ /** Grid longitudes (degrees), in file order (typically −180 → 180). */
14
+ lons: number[];
15
+ /**
16
+ * TEC maps in TECU: maps[epochIdx][latIdx * lons.length + lonIdx].
17
+ * NaN where the file marks no value (9999).
18
+ */
19
+ maps: Float32Array[];
20
+ }
21
+ declare function parseIonex(text: string): IonexGrid;
22
+
23
+ export { type IonexGrid as I, parseIonex as p };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * IONEX 1.0 parser — global ionosphere maps (GIMs) as published by
3
+ * the IGS analysis centres (e.g. ESA0OPSRAP_*_GIM.INX).
4
+ *
5
+ * Returns the TEC maps in TECU on a regular lat/lon grid, one map per
6
+ * epoch. RMS maps and the DCB auxiliary block are skipped.
7
+ */
8
+ interface IonexGrid {
9
+ /** Map epochs (Unix ms, UTC). */
10
+ epochs: number[];
11
+ /** Grid latitudes (degrees), in file order (typically 87.5 → −87.5). */
12
+ lats: number[];
13
+ /** Grid longitudes (degrees), in file order (typically −180 → 180). */
14
+ lons: number[];
15
+ /**
16
+ * TEC maps in TECU: maps[epochIdx][latIdx * lons.length + lonIdx].
17
+ * NaN where the file marks no value (9999).
18
+ */
19
+ maps: Float32Array[];
20
+ }
21
+ declare function parseIonex(text: string): IonexGrid;
22
+
23
+ export { type IonexGrid as I, parseIonex as p };
package/dist/novatel.js CHANGED
@@ -4,8 +4,9 @@ import {
4
4
  oem4Frames,
5
5
  parseNovatelNav,
6
6
  parseNovatelRange
7
- } from "./chunk-7RKLWE6R.js";
8
- import "./chunk-WZDFZ76K.js";
7
+ } from "./chunk-F4CM6Q4F.js";
8
+ import "./chunk-726LQBGM.js";
9
+ import "./chunk-IQ5OIMQD.js";
9
10
  import "./chunk-HVXYFUCB.js";
10
11
  import "./chunk-LEEU5OIO.js";
11
12
  export {
@@ -20,7 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/positioning/index.ts
21
21
  var positioning_exports = {};
22
22
  __export(positioning_exports, {
23
+ IONO_L1_M_PER_TECU: () => IONO_L1_M_PER_TECU,
23
24
  RtkFloatEngine: () => RtkFloatEngine,
25
+ gimSlantIonoDelayL1: () => gimSlantIonoDelayL1,
26
+ gimVerticalTec: () => gimVerticalTec,
24
27
  ionoFree: () => ionoFree,
25
28
  klobucharDelay: () => klobucharDelay,
26
29
  lambdaReduction: () => lambdaReduction,
@@ -464,6 +467,51 @@ function klobucharDelay(coeffs, latRad, lonRad, azRad, elRad, gpsTowSec) {
464
467
  return F * (5e-9 + amp * (1 - x2 / 2 + x2 * x2 / 24));
465
468
  }
466
469
 
470
+ // src/positioning/gim.ts
471
+ var R_E = 6371e3;
472
+ var H_ION = 45e4;
473
+ var F_L1 = 157542e4;
474
+ var IONO_L1_M_PER_TECU = 403e15 / (F_L1 * F_L1);
475
+ function tecAtMap(grid, mapIdx, latDeg, lonDeg) {
476
+ const m = grid.maps[mapIdx];
477
+ const { lats, lons } = grid;
478
+ const w = lons.length;
479
+ const fi = (latDeg - lats[0]) / (lats[lats.length - 1] - lats[0]) * (lats.length - 1);
480
+ const fj = (lonDeg - lons[0]) / (lons[w - 1] - lons[0]) * (w - 1);
481
+ const i0 = Math.max(0, Math.min(lats.length - 2, Math.floor(fi)));
482
+ const j0 = Math.max(0, Math.min(w - 2, Math.floor(fj)));
483
+ const di = Math.max(0, Math.min(1, fi - i0));
484
+ const dj = Math.max(0, Math.min(1, fj - j0));
485
+ return m[i0 * w + j0] * (1 - di) * (1 - dj) + m[i0 * w + j0 + 1] * (1 - di) * dj + m[(i0 + 1) * w + j0] * di * (1 - dj) + m[(i0 + 1) * w + j0 + 1] * di * dj;
486
+ }
487
+ function gimVerticalTec(grid, timeMs, latDeg, lonDeg) {
488
+ const e = grid.epochs;
489
+ if (e.length === 0 || timeMs < e[0] || timeMs > e[e.length - 1]) return null;
490
+ let i = 0;
491
+ while (i < e.length - 2 && e[i + 1] <= timeMs) i++;
492
+ const span = e[i + 1] - e[i];
493
+ const f = span > 0 ? (timeMs - e[i]) / span : 0;
494
+ const a = tecAtMap(grid, i, latDeg, lonDeg);
495
+ const b = tecAtMap(grid, i + 1, latDeg, lonDeg);
496
+ if (!Number.isFinite(a) || !Number.isFinite(b)) return null;
497
+ return a * (1 - f) + b * f;
498
+ }
499
+ function gimSlantIonoDelayL1(grid, latRad, lonRad, azRad, elRad, timeMs) {
500
+ if (elRad <= 0) return null;
501
+ const sinZp = R_E / (R_E + H_ION) * Math.cos(elRad);
502
+ const mapping = 1 / Math.sqrt(1 - sinZp * sinZp);
503
+ const psi = Math.PI / 2 - elRad - Math.asin(sinZp);
504
+ const latI = Math.asin(
505
+ Math.sin(latRad) * Math.cos(psi) + Math.cos(latRad) * Math.sin(psi) * Math.cos(azRad)
506
+ );
507
+ const lonI = lonRad + Math.asin(Math.sin(psi) * Math.sin(azRad) / Math.cos(latI));
508
+ const latDeg = latI * 180 / Math.PI;
509
+ const lonDeg = ((lonI * 180 / Math.PI + 540) % 360 + 360) % 360 - 180;
510
+ const vtec = gimVerticalTec(grid, timeMs, latDeg, lonDeg);
511
+ if (vtec === null) return null;
512
+ return IONO_L1_M_PER_TECU * vtec * mapping;
513
+ }
514
+
467
515
  // src/positioning/lambda.ts
468
516
  var LOOPMAX = 1e4;
469
517
  var ROUND = (x) => Math.floor(x + 0.5);
@@ -1505,10 +1553,17 @@ var PRIMARY_FREQ_HZ = {
1505
1553
  C: 1561098e3,
1506
1554
  R: 1602e6
1507
1555
  };
1508
- var F_L1 = 157542e4;
1509
- function tropoDelay2(elevationRad) {
1510
- const sinEl = Math.sin(elevationRad);
1511
- return 2.47 / (sinEl + 0.0121);
1556
+ var F_L12 = 157542e4;
1557
+ function tropoDelay2(elevationRad, latRad, heightM) {
1558
+ if (elevationRad <= 0) return 0;
1559
+ const h = heightM < 0 ? 0 : heightM > 1e4 ? 1e4 : heightM;
1560
+ const humi = 0.7;
1561
+ const pres = 1013.25 * Math.pow(1 - 22557e-9 * h, 5.2568);
1562
+ const temp = 15 - 65e-4 * h + 273.16;
1563
+ const e = 6.108 * humi * Math.exp((17.15 * temp - 4684) / (temp - 38.45));
1564
+ const zhd = 22768e-7 * pres / (1 - 266e-5 * Math.cos(2 * latRad) - 28e-5 * (h / 1e3));
1565
+ const zwd = 2277e-6 * (1255 / temp + 0.05) * e;
1566
+ return (zhd + zwd) / Math.sin(elevationRad);
1512
1567
  }
1513
1568
  function sagnac2(pos, travelTimeS) {
1514
1569
  const theta = OMEGA_E * travelTimeS;
@@ -1541,7 +1596,8 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
1541
1596
  maxIterations = 15,
1542
1597
  convergenceM = 1e-4,
1543
1598
  tgd = true,
1544
- iono
1599
+ iono,
1600
+ gim
1545
1601
  } = opts;
1546
1602
  const gpsTow = (timeMs - GPS_EPOCH_MS_SPP) / 1e3 % 604800;
1547
1603
  const all = [...pseudoranges.keys()].filter((p) => ephemerides.has(p));
@@ -1568,7 +1624,7 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
1568
1624
  let rows = 0;
1569
1625
  for (const k of Object.keys(residuals2)) delete residuals2[k];
1570
1626
  const positionSaneIter = x2 * x2 + y2 * y2 + z2 * z2 > 1e12;
1571
- const [rxLat, rxLon] = positionSaneIter ? ecefToGeodetic(x2, y2, z2) : [0, 0];
1627
+ const [rxLat, rxLon, rxHgt] = positionSaneIter ? ecefToGeodetic(x2, y2, z2) : [0, 0, 0];
1572
1628
  for (const prn of prns) {
1573
1629
  const psr = pseudoranges.get(prn);
1574
1630
  const eph = ephemerides.get(prn);
@@ -1598,11 +1654,18 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
1598
1654
  const sinEl = Math.max(Math.sin(elev), 0.1);
1599
1655
  weight = sinEl * sinEl;
1600
1656
  }
1601
- const tropo = troposphere && positionSane ? tropoDelay2(elev) : 0;
1657
+ const tropo = troposphere && positionSane ? tropoDelay2(elev, rxLat, rxHgt) : 0;
1602
1658
  let ionoM = 0;
1603
- if (iono && positionSane) {
1604
- const f = PRIMARY_FREQ_HZ[sys] ?? F_L1;
1605
- ionoM = C_LIGHT * klobucharDelay(iono, rxLat, rxLon, azim, elev, gpsTow) * (F_L1 / f * (F_L1 / f));
1659
+ if ((gim || iono) && positionSane) {
1660
+ let l1M = null;
1661
+ if (gim) l1M = gimSlantIonoDelayL1(gim, rxLat, rxLon, azim, elev, timeMs);
1662
+ if (l1M === null && iono) {
1663
+ l1M = C_LIGHT * klobucharDelay(iono, rxLat, rxLon, azim, elev, gpsTow);
1664
+ }
1665
+ if (l1M !== null) {
1666
+ const f = PRIMARY_FREQ_HZ[sys] ?? F_L12;
1667
+ ionoM = l1M * (F_L12 / f * (F_L12 / f));
1668
+ }
1606
1669
  }
1607
1670
  const predicted = rho + clk - C_LIGHT * dts + tropo + ionoM;
1608
1671
  const v = psr - predicted;
@@ -1683,7 +1746,10 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
1683
1746
  }
1684
1747
  // Annotate the CommonJS export names for ESM import in node:
1685
1748
  0 && (module.exports = {
1749
+ IONO_L1_M_PER_TECU,
1686
1750
  RtkFloatEngine,
1751
+ gimSlantIonoDelayL1,
1752
+ gimVerticalTec,
1687
1753
  ionoFree,
1688
1754
  klobucharDelay,
1689
1755
  lambdaReduction,
@@ -1,5 +1,6 @@
1
1
  import { E as Ephemeris } from './nav-DImXUdbp.cjs';
2
2
  import { DopValues } from './orbit.cjs';
3
+ import { I as IonexGrid } from './ionex-DaW5x9nq.cjs';
3
4
  import './ephemeris-Ohl6NAfw.cjs';
4
5
  import './ecef-CF0uAysr.cjs';
5
6
  import './nav-BYmYoh9A.cjs';
@@ -34,6 +35,52 @@ interface KlobucharCoeffs {
34
35
  */
35
36
  declare function klobucharDelay(coeffs: KlobucharCoeffs, latRad: number, lonRad: number, azRad: number, elRad: number, gpsTowSec: number): number;
36
37
 
38
+ /**
39
+ * Slant ionospheric delay from a Global Ionosphere Map (IONEX/GIM).
40
+ *
41
+ * A GIM gives vertical TEC on an hourly lat/lon grid (see
42
+ * {@link parseIonex}). For single-frequency positioning this is a much
43
+ * stronger correction than the broadcast Klobuchar model — GIMs capture
44
+ * ~80–90% of the true ionosphere versus Klobuchar's ~50% — so feeding
45
+ * `solveSpp` a GIM (the `gim` option) collapses most of the residual
46
+ * height bias a single-frequency solution otherwise carries.
47
+ *
48
+ * The evaluation is the standard thin-shell recipe: pierce the shell at
49
+ * {@link H_ION}, interpolate vertical TEC there (bilinear in space,
50
+ * linear in time), map to slant with the obliquity factor, and convert
51
+ * TEC → L1 group delay. The result is the delay on GPS L1; `solveSpp`
52
+ * scales it to each system's primary frequency by (f_L1/f)².
53
+ */
54
+
55
+ /**
56
+ * L1 group delay per unit slant TEC: 40.3 · 10¹⁶ / f_L1² (m per TECU).
57
+ * 40.3 m·Hz²/(el/m²), one TECU = 10¹⁶ el/m². ≈ 0.1624 m/TECU.
58
+ */
59
+ declare const IONO_L1_M_PER_TECU: number;
60
+ /**
61
+ * Space- and time-interpolated vertical TEC (TECU) at `timeMs`, or null
62
+ * outside the map's time span or where the grid marks no value.
63
+ *
64
+ * IGS GIMs are global, so spatial coverage is total; a pierce point is
65
+ * bilinearly interpolated and clamped to the nearest edge cell rather
66
+ * than rejected. Null therefore signals a time gap or a no-value cell,
67
+ * not an out-of-area position.
68
+ */
69
+ declare function gimVerticalTec(grid: IonexGrid, timeMs: number, latDeg: number, lonDeg: number): number | null;
70
+ /**
71
+ * Slant ionospheric group delay on GPS L1 (m) from a GIM, or null when
72
+ * the pierce point falls outside the map's coverage in space or time.
73
+ *
74
+ * @param grid Parsed IONEX grid ({@link parseIonex}).
75
+ * @param latRad Receiver geodetic latitude (radians).
76
+ * @param lonRad Receiver geodetic longitude (radians).
77
+ * @param azRad Satellite azimuth (radians).
78
+ * @param elRad Satellite elevation (radians).
79
+ * @param timeMs Epoch (ms). GIM epochs are UTC; a GPS-scale time differs
80
+ * by leap seconds (~18 s), negligible against hourly maps.
81
+ */
82
+ declare function gimSlantIonoDelayL1(grid: IonexGrid, latRad: number, lonRad: number, azRad: number, elRad: number, timeMs: number): number | null;
83
+
37
84
  /**
38
85
  * RTK positioning, stage 1: epoch-wise double-differenced (DD)
39
86
  * processing of a base/rover receiver pair.
@@ -441,7 +488,7 @@ declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | nul
441
488
  * constellation (absorbing inter-system time offsets), satellite clock
442
489
  * polynomial + relativistic correction, broadcast group delay
443
490
  * (TGD/BGD), Sagnac (Earth-rotation) correction, elevation
444
- * masking/weighting, and a simple tropospheric model. Ionospheric
491
+ * masking/weighting, and a Saastamoinen tropospheric model. Ionospheric
445
492
  * delay can be modelled from the broadcast Klobuchar coefficients
446
493
  * (`iono` option) for single-frequency measurements; for metre-level
447
494
  * results prefer the iono-free combination (ionoFree helper) with
@@ -451,7 +498,7 @@ declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | nul
451
498
  interface SppOptions {
452
499
  /** Elevation mask in degrees (applied after the first pass). Default 10. */
453
500
  elevationMaskDeg?: number;
454
- /** Apply the simple tropospheric model. Default true. */
501
+ /** Apply the Saastamoinen tropospheric model. Default true. */
455
502
  troposphere?: boolean;
456
503
  /** Maximum Gauss-Newton iterations. Default 15. */
457
504
  maxIterations?: number;
@@ -465,6 +512,15 @@ interface SppOptions {
465
512
  * iono-free combinations.
466
513
  */
467
514
  iono?: KlobucharCoeffs;
515
+ /**
516
+ * Global Ionosphere Map (IONEX/GIM, from `parseIonex`). When given it
517
+ * takes precedence over `iono`: the slant delay is read from the map
518
+ * (~80–90% of the true ionosphere vs Klobuchar's ~50%), falling back
519
+ * to `iono` — if also supplied — only where the map has no value for
520
+ * an epoch/cell (a time gap; global maps always cover space). Omit for
521
+ * iono-free input.
522
+ */
523
+ gim?: IonexGrid;
468
524
  /**
469
525
  * Apply the broadcast group-delay correction (GPS TGD, Galileo
470
526
  * BGD E5a/E1, BeiDou TGD1) to the satellite clock. Correct for
@@ -513,4 +569,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
513
569
  */
514
570
  declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
515
571
 
516
- export { type DgnssOptions, type DgnssSolution, type EphemerisSource, type KlobucharCoeffs, type LambdaResult, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SppOptions, type SppSolution, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch };
572
+ export { type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SppOptions, type SppSolution, gimSlantIonoDelayL1, gimVerticalTec, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch };
@@ -1,5 +1,6 @@
1
1
  import { E as Ephemeris } from './nav-DImXUdbp.js';
2
2
  import { DopValues } from './orbit.js';
3
+ import { I as IonexGrid } from './ionex-DaW5x9nq.js';
3
4
  import './ephemeris-Ohl6NAfw.js';
4
5
  import './ecef-CF0uAysr.js';
5
6
  import './nav-CN8rxL4h.js';
@@ -34,6 +35,52 @@ interface KlobucharCoeffs {
34
35
  */
35
36
  declare function klobucharDelay(coeffs: KlobucharCoeffs, latRad: number, lonRad: number, azRad: number, elRad: number, gpsTowSec: number): number;
36
37
 
38
+ /**
39
+ * Slant ionospheric delay from a Global Ionosphere Map (IONEX/GIM).
40
+ *
41
+ * A GIM gives vertical TEC on an hourly lat/lon grid (see
42
+ * {@link parseIonex}). For single-frequency positioning this is a much
43
+ * stronger correction than the broadcast Klobuchar model — GIMs capture
44
+ * ~80–90% of the true ionosphere versus Klobuchar's ~50% — so feeding
45
+ * `solveSpp` a GIM (the `gim` option) collapses most of the residual
46
+ * height bias a single-frequency solution otherwise carries.
47
+ *
48
+ * The evaluation is the standard thin-shell recipe: pierce the shell at
49
+ * {@link H_ION}, interpolate vertical TEC there (bilinear in space,
50
+ * linear in time), map to slant with the obliquity factor, and convert
51
+ * TEC → L1 group delay. The result is the delay on GPS L1; `solveSpp`
52
+ * scales it to each system's primary frequency by (f_L1/f)².
53
+ */
54
+
55
+ /**
56
+ * L1 group delay per unit slant TEC: 40.3 · 10¹⁶ / f_L1² (m per TECU).
57
+ * 40.3 m·Hz²/(el/m²), one TECU = 10¹⁶ el/m². ≈ 0.1624 m/TECU.
58
+ */
59
+ declare const IONO_L1_M_PER_TECU: number;
60
+ /**
61
+ * Space- and time-interpolated vertical TEC (TECU) at `timeMs`, or null
62
+ * outside the map's time span or where the grid marks no value.
63
+ *
64
+ * IGS GIMs are global, so spatial coverage is total; a pierce point is
65
+ * bilinearly interpolated and clamped to the nearest edge cell rather
66
+ * than rejected. Null therefore signals a time gap or a no-value cell,
67
+ * not an out-of-area position.
68
+ */
69
+ declare function gimVerticalTec(grid: IonexGrid, timeMs: number, latDeg: number, lonDeg: number): number | null;
70
+ /**
71
+ * Slant ionospheric group delay on GPS L1 (m) from a GIM, or null when
72
+ * the pierce point falls outside the map's coverage in space or time.
73
+ *
74
+ * @param grid Parsed IONEX grid ({@link parseIonex}).
75
+ * @param latRad Receiver geodetic latitude (radians).
76
+ * @param lonRad Receiver geodetic longitude (radians).
77
+ * @param azRad Satellite azimuth (radians).
78
+ * @param elRad Satellite elevation (radians).
79
+ * @param timeMs Epoch (ms). GIM epochs are UTC; a GPS-scale time differs
80
+ * by leap seconds (~18 s), negligible against hourly maps.
81
+ */
82
+ declare function gimSlantIonoDelayL1(grid: IonexGrid, latRad: number, lonRad: number, azRad: number, elRad: number, timeMs: number): number | null;
83
+
37
84
  /**
38
85
  * RTK positioning, stage 1: epoch-wise double-differenced (DD)
39
86
  * processing of a base/rover receiver pair.
@@ -441,7 +488,7 @@ declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | nul
441
488
  * constellation (absorbing inter-system time offsets), satellite clock
442
489
  * polynomial + relativistic correction, broadcast group delay
443
490
  * (TGD/BGD), Sagnac (Earth-rotation) correction, elevation
444
- * masking/weighting, and a simple tropospheric model. Ionospheric
491
+ * masking/weighting, and a Saastamoinen tropospheric model. Ionospheric
445
492
  * delay can be modelled from the broadcast Klobuchar coefficients
446
493
  * (`iono` option) for single-frequency measurements; for metre-level
447
494
  * results prefer the iono-free combination (ionoFree helper) with
@@ -451,7 +498,7 @@ declare function lambdaReduction(Q: Float64Array, n: number): Float64Array | nul
451
498
  interface SppOptions {
452
499
  /** Elevation mask in degrees (applied after the first pass). Default 10. */
453
500
  elevationMaskDeg?: number;
454
- /** Apply the simple tropospheric model. Default true. */
501
+ /** Apply the Saastamoinen tropospheric model. Default true. */
455
502
  troposphere?: boolean;
456
503
  /** Maximum Gauss-Newton iterations. Default 15. */
457
504
  maxIterations?: number;
@@ -465,6 +512,15 @@ interface SppOptions {
465
512
  * iono-free combinations.
466
513
  */
467
514
  iono?: KlobucharCoeffs;
515
+ /**
516
+ * Global Ionosphere Map (IONEX/GIM, from `parseIonex`). When given it
517
+ * takes precedence over `iono`: the slant delay is read from the map
518
+ * (~80–90% of the true ionosphere vs Klobuchar's ~50%), falling back
519
+ * to `iono` — if also supplied — only where the map has no value for
520
+ * an epoch/cell (a time gap; global maps always cover space). Omit for
521
+ * iono-free input.
522
+ */
523
+ gim?: IonexGrid;
468
524
  /**
469
525
  * Apply the broadcast group-delay correction (GPS TGD, Galileo
470
526
  * BGD E5a/E1, BeiDou TGD1) to the satellite clock. Correct for
@@ -513,4 +569,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
513
569
  */
514
570
  declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
515
571
 
516
- export { type DgnssOptions, type DgnssSolution, type EphemerisSource, type KlobucharCoeffs, type LambdaResult, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SppOptions, type SppSolution, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch };
572
+ export { type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SppOptions, type SppSolution, gimSlantIonoDelayL1, gimVerticalTec, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, satClockCorrection, solveDgnss, solveSpp, toRtkEpoch };
@@ -1,5 +1,8 @@
1
1
  import {
2
+ IONO_L1_M_PER_TECU,
2
3
  RtkFloatEngine,
4
+ gimSlantIonoDelayL1,
5
+ gimVerticalTec,
3
6
  ionoFree,
4
7
  klobucharDelay,
5
8
  lambdaReduction,
@@ -8,7 +11,7 @@ import {
8
11
  solveDgnss,
9
12
  solveSpp,
10
13
  toRtkEpoch
11
- } from "./chunk-T2ZMNRCY.js";
14
+ } from "./chunk-4XGKCVE3.js";
12
15
  import "./chunk-MHGNKSSH.js";
13
16
  import "./chunk-37QNKGTC.js";
14
17
  import "./chunk-6FAL6P4G.js";
@@ -16,7 +19,10 @@ import "./chunk-HVXYFUCB.js";
16
19
  import "./chunk-LEEU5OIO.js";
17
20
  import "./chunk-FIEWO4J4.js";
18
21
  export {
22
+ IONO_L1_M_PER_TECU,
19
23
  RtkFloatEngine,
24
+ gimSlantIonoDelayL1,
25
+ gimVerticalTec,
20
26
  ionoFree,
21
27
  klobucharDelay,
22
28
  lambdaReduction,