gnss-js 1.29.0 → 1.31.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-6GTS5MVI.js → chunk-5RNDQQ6J.js} +81 -0
- package/dist/{chunk-5WHKMKIB.js → chunk-EVFD4UNZ.js} +98 -4
- package/dist/{chunk-4KMWWCUR.js → chunk-GPEP67TG.js} +63 -1
- package/dist/{sp3-BAq8l39b.d.ts → clk-DGVBGRzA.d.cts} +27 -1
- package/dist/{sp3-BAq8l39b.d.cts → clk-DGVBGRzA.d.ts} +27 -1
- package/dist/index.cjs +284 -43
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +20 -4
- package/dist/positioning.cjs +123 -5
- package/dist/positioning.d.cts +86 -2
- package/dist/positioning.d.ts +86 -2
- package/dist/positioning.js +10 -4
- package/dist/rinex.cjs +146 -0
- package/dist/rinex.d.cts +50 -2
- package/dist/rinex.d.ts +50 -2
- package/dist/rinex.js +12 -2
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -4,10 +4,10 @@ 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, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.cjs';
|
|
7
|
+
export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, 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, S as Sp3File, a as Sp3Sample, p as
|
|
10
|
+
export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.cjs';
|
|
11
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';
|
|
12
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';
|
|
13
13
|
export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.cjs';
|
|
@@ -17,7 +17,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
|
|
|
17
17
|
export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.cjs';
|
|
18
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';
|
|
19
19
|
export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.cjs';
|
|
20
|
-
export { AntennaOffset, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch } from './positioning.cjs';
|
|
20
|
+
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.cjs';
|
|
21
21
|
export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.cjs';
|
|
22
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';
|
|
23
23
|
export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -4,10 +4,10 @@ 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, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, createGzipLineSink, crxDecompress, crxRepair, fmtD, fmtF, hdrLine, padL, padR, parseCrxDataLine, stationHeaderLines, writeCrx, writeModernObsBlob, writeRinex2ObsBlob, writeRinex4ObsBlob, writeRinexNav, writeRinexNav4, writeRinexObsBlob } from './rinex.js';
|
|
7
|
+
export { BiasRecord, BiasSinex, CompactEpoch, CrxField, DiffState, EMPTY_WARNINGS, Nav4Input, RinexWarning, RinexWarnings, WarningAccumulator, WarningSeverity, WriteCrxOptions, biasMetres, createGzipLineSink, crxDecompress, crxRepair, findSatBias, fmtD, fmtF, hdrLine, padL, padR, parseBiasSinex, parseCrxDataLine, stationHeaderLines, writeCrx, 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, S as Sp3File, a as Sp3Sample, p as
|
|
10
|
+
export { C as ClkFile, I as IonexGrid, S as Sp3File, a as Sp3Sample, c as clkBias, p as parseClk, b as parseIonex, d as parseSp3, s as sp3Position } from './clk-DGVBGRzA.js';
|
|
11
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';
|
|
12
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';
|
|
13
13
|
export { UbxCnavResult, UbxFrame, UbxIonoUtcResult, UbxMeasurement, UbxNavOptions, UbxNavResult, UbxParseResult, UbxRawNavOptions, UbxRawNavResult, UbxRawxEpoch, parseUbxCnav, parseUbxIonoUtc, parseUbxNav, parseUbxRawNav, parseUbxRawx, ubxFrames } from './ubx.js';
|
|
@@ -17,7 +17,7 @@ export { TrimbleEpoch, TrimbleFrame, TrimbleMeasurement, TrimbleNavResult, Trimb
|
|
|
17
17
|
export { BinexEpoch, BinexMeasurement, BinexParseResult, BinexRecord, binexCrc16, binexCrc32, binexCsum8, binexRecords, decodeBinexEph, getBnxi, parseBinex } from './binex.js';
|
|
18
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';
|
|
19
19
|
export { Helmert14, REFERENCE_FRAMES, ReferenceFrame, applyHelmert, dateToEpoch, transformFrame } from './frames.js';
|
|
20
|
-
export { AntennaOffset, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch } from './positioning.js';
|
|
20
|
+
export { AntennaOffset, ArFixedSat, ArOptions, ArResult, ArSat, CorrectionResult, DgnssOptions, DgnssSolution, EphemerisSource, IONO_L1_M_PER_TECU, KlobucharCoeffs, LambdaResult, PppAntennaModel, PppCorrectionConfig, PppCorrections, PppEpoch, PppEpochContext, PppEpochResult, PppOptions, PppSatObs, PppSolution, RawObservation, RtkEpochMeasurements, RtkFloatEngine, RtkFloatOptions, RtkFloatSolution, RtkMeasurement, SatGeom, SppOptions, SppSolution, TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength } from './positioning.js';
|
|
21
21
|
export { NtripCaster, NtripConnectionInfo, NtripNetwork, NtripStream, NtripStreamConnection, NtripVersion, Sourcetable, SourcetableEntry, connectToMountpoint, fetchSourcetable, parseSourcetable } from './ntrip.js';
|
|
22
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';
|
|
23
23
|
export { AntennaEntry, AntexFile, FrequencyData, frequencyLabel, parseAntex } from './antex.js';
|
package/dist/index.js
CHANGED
|
@@ -155,14 +155,17 @@ import {
|
|
|
155
155
|
lambdaSearch,
|
|
156
156
|
moonEcef,
|
|
157
157
|
niellMapping,
|
|
158
|
+
nlWavelength,
|
|
159
|
+
resolvePppAmbiguities,
|
|
158
160
|
satClockCorrection,
|
|
159
161
|
solidEarthTide,
|
|
160
162
|
solveDgnss,
|
|
161
163
|
solvePpp,
|
|
162
164
|
solveSpp,
|
|
163
165
|
sunEcef,
|
|
164
|
-
toRtkEpoch
|
|
165
|
-
|
|
166
|
+
toRtkEpoch,
|
|
167
|
+
wlWavelength
|
|
168
|
+
} from "./chunk-EVFD4UNZ.js";
|
|
166
169
|
import {
|
|
167
170
|
almanacEpochMs,
|
|
168
171
|
almanacSatPosition,
|
|
@@ -201,12 +204,15 @@ import {
|
|
|
201
204
|
import {
|
|
202
205
|
EMPTY_WARNINGS,
|
|
203
206
|
WarningAccumulator,
|
|
207
|
+
biasMetres,
|
|
204
208
|
createGzipLineSink,
|
|
209
|
+
findSatBias,
|
|
205
210
|
fmtD,
|
|
206
211
|
fmtF,
|
|
207
212
|
hdrLine,
|
|
208
213
|
padL,
|
|
209
214
|
padR,
|
|
215
|
+
parseBiasSinex,
|
|
210
216
|
parseIonex,
|
|
211
217
|
parseNavFile,
|
|
212
218
|
stationHeaderLines,
|
|
@@ -217,7 +223,7 @@ import {
|
|
|
217
223
|
writeRinexNav,
|
|
218
224
|
writeRinexNav4,
|
|
219
225
|
writeRinexObsBlob
|
|
220
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-5RNDQQ6J.js";
|
|
221
227
|
import "./chunk-726LQBGM.js";
|
|
222
228
|
import "./chunk-IQ5OIMQD.js";
|
|
223
229
|
import {
|
|
@@ -230,9 +236,11 @@ import {
|
|
|
230
236
|
systemName
|
|
231
237
|
} from "./chunk-3U5AX7PY.js";
|
|
232
238
|
import {
|
|
239
|
+
clkBias,
|
|
240
|
+
parseClk,
|
|
233
241
|
parseSp3,
|
|
234
242
|
sp3Position
|
|
235
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-GPEP67TG.js";
|
|
236
244
|
import {
|
|
237
245
|
BitReader,
|
|
238
246
|
RTCM3_MESSAGE_NAMES,
|
|
@@ -426,6 +434,7 @@ export {
|
|
|
426
434
|
analyzeQuality,
|
|
427
435
|
applyHelmert,
|
|
428
436
|
applyIonoDcb,
|
|
437
|
+
biasMetres,
|
|
429
438
|
binexCrc16,
|
|
430
439
|
binexCrc32,
|
|
431
440
|
binexCsum8,
|
|
@@ -434,6 +443,7 @@ export {
|
|
|
434
443
|
buildObsIndices,
|
|
435
444
|
buildPppAntenna,
|
|
436
445
|
clampUnit,
|
|
446
|
+
clkBias,
|
|
437
447
|
computeAllPositions,
|
|
438
448
|
computeDop,
|
|
439
449
|
computeIonoRate,
|
|
@@ -464,6 +474,7 @@ export {
|
|
|
464
474
|
ephInfoToEphemeris,
|
|
465
475
|
euclidean3D,
|
|
466
476
|
fetchSourcetable,
|
|
477
|
+
findSatBias,
|
|
467
478
|
fmtD,
|
|
468
479
|
fmtF,
|
|
469
480
|
formatUTCTime,
|
|
@@ -546,12 +557,15 @@ export {
|
|
|
546
557
|
msmEpochToDate,
|
|
547
558
|
navTimesFromEph,
|
|
548
559
|
niellMapping,
|
|
560
|
+
nlWavelength,
|
|
549
561
|
nmeaCoordToDecimal,
|
|
550
562
|
oem4Frames,
|
|
551
563
|
padL,
|
|
552
564
|
padR,
|
|
553
565
|
parseAntex,
|
|
566
|
+
parseBiasSinex,
|
|
554
567
|
parseBinex,
|
|
568
|
+
parseClk,
|
|
555
569
|
parseCrxDataLine,
|
|
556
570
|
parseIonex,
|
|
557
571
|
parseNavFile,
|
|
@@ -587,6 +601,7 @@ export {
|
|
|
587
601
|
readString,
|
|
588
602
|
reportDecodeError,
|
|
589
603
|
resetGloFreqCache,
|
|
604
|
+
resolvePppAmbiguities,
|
|
590
605
|
rhumbLine,
|
|
591
606
|
rtcm3Constellation,
|
|
592
607
|
satClockCorrection,
|
|
@@ -612,6 +627,7 @@ export {
|
|
|
612
627
|
updateStreamStats,
|
|
613
628
|
verifyChecksum,
|
|
614
629
|
vincenty,
|
|
630
|
+
wlWavelength,
|
|
615
631
|
writeCrx,
|
|
616
632
|
writeModernObsBlob,
|
|
617
633
|
writeRinex2ObsBlob,
|
package/dist/positioning.cjs
CHANGED
|
@@ -33,13 +33,16 @@ __export(positioning_exports, {
|
|
|
33
33
|
lambdaSearch: () => lambdaSearch,
|
|
34
34
|
moonEcef: () => moonEcef,
|
|
35
35
|
niellMapping: () => niellMapping,
|
|
36
|
+
nlWavelength: () => nlWavelength,
|
|
37
|
+
resolvePppAmbiguities: () => resolvePppAmbiguities,
|
|
36
38
|
satClockCorrection: () => satClockCorrection,
|
|
37
39
|
solidEarthTide: () => solidEarthTide,
|
|
38
40
|
solveDgnss: () => solveDgnss,
|
|
39
41
|
solvePpp: () => solvePpp,
|
|
40
42
|
solveSpp: () => solveSpp,
|
|
41
43
|
sunEcef: () => sunEcef,
|
|
42
|
-
toRtkEpoch: () => toRtkEpoch
|
|
44
|
+
toRtkEpoch: () => toRtkEpoch,
|
|
45
|
+
wlWavelength: () => wlWavelength
|
|
43
46
|
});
|
|
44
47
|
module.exports = __toCommonJS(positioning_exports);
|
|
45
48
|
|
|
@@ -1597,6 +1600,28 @@ function sp3Position(sp3, prn, tMs, order = 9) {
|
|
|
1597
1600
|
return { x, y, z, clk };
|
|
1598
1601
|
}
|
|
1599
1602
|
|
|
1603
|
+
// src/rinex/clk.ts
|
|
1604
|
+
var GPS_EPOCH_MS2 = Date.UTC(1980, 0, 6);
|
|
1605
|
+
function clkBias(clk, prn, tMs) {
|
|
1606
|
+
const e = clk.sats[prn];
|
|
1607
|
+
if (!e || e.t.length === 0) return null;
|
|
1608
|
+
const { t, c } = e;
|
|
1609
|
+
let lo = 0;
|
|
1610
|
+
let hi = t.length - 1;
|
|
1611
|
+
if (tMs < t[0] || tMs > t[hi]) return null;
|
|
1612
|
+
while (lo < hi) {
|
|
1613
|
+
const mid = lo + hi + 1 >> 1;
|
|
1614
|
+
if (t[mid] <= tMs) lo = mid;
|
|
1615
|
+
else hi = mid - 1;
|
|
1616
|
+
}
|
|
1617
|
+
if (t[lo] === tMs || lo === t.length - 1) return c[lo];
|
|
1618
|
+
const t0 = t[lo];
|
|
1619
|
+
const t1 = t[lo + 1];
|
|
1620
|
+
if (t1 - t0 > clk.intervalSec * 1e3 * 4) return null;
|
|
1621
|
+
const f = (tMs - t0) / (t1 - t0);
|
|
1622
|
+
return c[lo] + f * (c[lo + 1] - c[lo]);
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1600
1625
|
// src/positioning/ppp-tropo.ts
|
|
1601
1626
|
var HYD_AVG_A = [
|
|
1602
1627
|
0.0012769934,
|
|
@@ -2080,7 +2105,7 @@ function sagnacRotate(x, y, z, travelS) {
|
|
|
2080
2105
|
const s = Math.sin(theta);
|
|
2081
2106
|
return [x * c + y * s, -x * s + y * c, z];
|
|
2082
2107
|
}
|
|
2083
|
-
function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
|
|
2108
|
+
function satStateAtEmission(sp3, prn, recvTimeMs, rcv, clk) {
|
|
2084
2109
|
let travelS = 0.075;
|
|
2085
2110
|
let sx = 0;
|
|
2086
2111
|
let sy = 0;
|
|
@@ -2099,7 +2124,7 @@ function satStateAtEmission(sp3, prn, recvTimeMs, rcv) {
|
|
|
2099
2124
|
const vz = (pPlus.z - pMinus.z) / 1;
|
|
2100
2125
|
velDotPos = p.x * vx + p.y * vy + p.z * vz;
|
|
2101
2126
|
}
|
|
2102
|
-
clkS = p.clk;
|
|
2127
|
+
clkS = (clk && clkBias(clk, prn, tEmit)) ?? p.clk;
|
|
2103
2128
|
const [rx, ry, rz] = sagnacRotate(p.x, p.y, p.z, travelS);
|
|
2104
2129
|
sx = rx;
|
|
2105
2130
|
sy = ry;
|
|
@@ -2213,7 +2238,7 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2213
2238
|
for (const o of epoch.obs) {
|
|
2214
2239
|
if (o.c1 === 0 || o.c2 === 0 || o.l1 === 0 || o.l2 === 0) continue;
|
|
2215
2240
|
const slip = detectSlip(o, ei);
|
|
2216
|
-
const sat = satStateAtEmission(sp3, o.prn, epoch.timeMs, rcv);
|
|
2241
|
+
const sat = satStateAtEmission(sp3, o.prn, epoch.timeMs, rcv, opts.clk);
|
|
2217
2242
|
if (!sat) continue;
|
|
2218
2243
|
const [elRad, azRad] = getAer(
|
|
2219
2244
|
sat.state.x,
|
|
@@ -2408,6 +2433,96 @@ function solvePpp(epochs, sp3, opts) {
|
|
|
2408
2433
|
};
|
|
2409
2434
|
}
|
|
2410
2435
|
|
|
2436
|
+
// src/positioning/ppp-ar.ts
|
|
2437
|
+
function wlWavelength(f1, f2) {
|
|
2438
|
+
return C_LIGHT / (f1 - f2);
|
|
2439
|
+
}
|
|
2440
|
+
function nlWavelength(f1, f2) {
|
|
2441
|
+
return C_LIGHT / (f1 + f2);
|
|
2442
|
+
}
|
|
2443
|
+
function resolvePppAmbiguities(sats, Qaif, opts = {}) {
|
|
2444
|
+
const wlThreshold = opts.wlThreshold ?? 0.25;
|
|
2445
|
+
const ratioThreshold = opts.ratioThreshold ?? 3;
|
|
2446
|
+
const kept = [];
|
|
2447
|
+
const nWl = [];
|
|
2448
|
+
const rejectedWl = [];
|
|
2449
|
+
for (let i = 0; i < sats.length; i++) {
|
|
2450
|
+
const s = sats[i];
|
|
2451
|
+
const wlFloat = s.mwCyc - (s.wlBiasCyc ?? 0);
|
|
2452
|
+
const r = Math.round(wlFloat);
|
|
2453
|
+
if (Math.abs(wlFloat - r) <= wlThreshold) {
|
|
2454
|
+
kept.push(i);
|
|
2455
|
+
nWl.push(r);
|
|
2456
|
+
} else {
|
|
2457
|
+
rejectedWl.push(s.prn);
|
|
2458
|
+
}
|
|
2459
|
+
}
|
|
2460
|
+
if (kept.length < 2) {
|
|
2461
|
+
return {
|
|
2462
|
+
fixed: false,
|
|
2463
|
+
ratio: 0,
|
|
2464
|
+
refPrn: null,
|
|
2465
|
+
sats: [],
|
|
2466
|
+
rejectedWl
|
|
2467
|
+
};
|
|
2468
|
+
}
|
|
2469
|
+
const n1Float = [];
|
|
2470
|
+
const lamNl = [];
|
|
2471
|
+
for (let k = 0; k < kept.length; k++) {
|
|
2472
|
+
const s = sats[kept[k]];
|
|
2473
|
+
const lNl = nlWavelength(s.f1, s.f2);
|
|
2474
|
+
lamNl.push(lNl);
|
|
2475
|
+
const n1 = s.aIF / lNl - s.f2 / (s.f1 - s.f2) * nWl[k] - (s.nlBiasCyc ?? 0);
|
|
2476
|
+
n1Float.push(n1);
|
|
2477
|
+
}
|
|
2478
|
+
let ref = 0;
|
|
2479
|
+
for (let k = 1; k < kept.length; k++) {
|
|
2480
|
+
const e = sats[kept[k]].elevDeg ?? -1;
|
|
2481
|
+
if (e > (sats[kept[ref]].elevDeg ?? -1)) ref = k;
|
|
2482
|
+
}
|
|
2483
|
+
const m = kept.length - 1;
|
|
2484
|
+
const sd = new Float64Array(m);
|
|
2485
|
+
const Qsd = new Float64Array(m * m);
|
|
2486
|
+
const others = [];
|
|
2487
|
+
for (let k = 0; k < kept.length; k++) if (k !== ref) others.push(k);
|
|
2488
|
+
const n = sats.length;
|
|
2489
|
+
const qN1 = (ka, kb) => Qaif[kept[ka] * n + kept[kb]] / (lamNl[ka] * lamNl[kb]);
|
|
2490
|
+
for (let a = 0; a < m; a++) {
|
|
2491
|
+
const ka = others[a];
|
|
2492
|
+
sd[a] = n1Float[ka] - n1Float[ref];
|
|
2493
|
+
for (let b = 0; b < m; b++) {
|
|
2494
|
+
const kb = others[b];
|
|
2495
|
+
Qsd[a * m + b] = qN1(ka, kb) - qN1(ka, ref) - qN1(ref, kb) + qN1(ref, ref);
|
|
2496
|
+
}
|
|
2497
|
+
}
|
|
2498
|
+
const res = lambdaSearch(sd, Qsd, m, 2);
|
|
2499
|
+
const ratio = res ? Math.min(res.ratio, 999.9) : 0;
|
|
2500
|
+
const fixed = !!res && ratio >= ratioThreshold;
|
|
2501
|
+
const refN1 = Math.round(n1Float[ref]);
|
|
2502
|
+
const sdFix = res?.candidates[0];
|
|
2503
|
+
const outSats = [];
|
|
2504
|
+
for (let k = 0; k < kept.length; k++) {
|
|
2505
|
+
const s = sats[kept[k]];
|
|
2506
|
+
let n1;
|
|
2507
|
+
if (k === ref) {
|
|
2508
|
+
n1 = refN1;
|
|
2509
|
+
} else {
|
|
2510
|
+
const a = others.indexOf(k);
|
|
2511
|
+
n1 = fixed && sdFix ? refN1 + Math.round(sdFix[a]) : Math.round(n1Float[k]);
|
|
2512
|
+
}
|
|
2513
|
+
const lNl = lamNl[k];
|
|
2514
|
+
const aIF = lNl * n1 + lNl * (s.f2 / (s.f1 - s.f2)) * nWl[k];
|
|
2515
|
+
outSats.push({ prn: s.prn, nWl: nWl[k], n1, aIF });
|
|
2516
|
+
}
|
|
2517
|
+
return {
|
|
2518
|
+
fixed,
|
|
2519
|
+
ratio,
|
|
2520
|
+
refPrn: sats[kept[ref]].prn,
|
|
2521
|
+
sats: outSats,
|
|
2522
|
+
rejectedWl
|
|
2523
|
+
};
|
|
2524
|
+
}
|
|
2525
|
+
|
|
2411
2526
|
// src/positioning/index.ts
|
|
2412
2527
|
var GM_GPS2 = 3986005e8;
|
|
2413
2528
|
var F_REL = -4442807633e-19;
|
|
@@ -2650,11 +2765,14 @@ function solveSpp(pseudoranges, ephemerides, timeMs, opts = {}) {
|
|
|
2650
2765
|
lambdaSearch,
|
|
2651
2766
|
moonEcef,
|
|
2652
2767
|
niellMapping,
|
|
2768
|
+
nlWavelength,
|
|
2769
|
+
resolvePppAmbiguities,
|
|
2653
2770
|
satClockCorrection,
|
|
2654
2771
|
solidEarthTide,
|
|
2655
2772
|
solveDgnss,
|
|
2656
2773
|
solvePpp,
|
|
2657
2774
|
solveSpp,
|
|
2658
2775
|
sunEcef,
|
|
2659
|
-
toRtkEpoch
|
|
2776
|
+
toRtkEpoch,
|
|
2777
|
+
wlWavelength
|
|
2660
2778
|
});
|
package/dist/positioning.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { E as Ephemeris } from './nav-DImXUdbp.cjs';
|
|
2
2
|
import { DopValues } from './orbit.cjs';
|
|
3
|
-
import { I as IonexGrid, S as Sp3File } from './
|
|
3
|
+
import { I as IonexGrid, C as ClkFile, S as Sp3File } from './clk-DGVBGRzA.cjs';
|
|
4
4
|
import { AntexFile } from './antex.cjs';
|
|
5
5
|
import './ephemeris-Ohl6NAfw.cjs';
|
|
6
6
|
import './ecef-CF0uAysr.cjs';
|
|
@@ -631,6 +631,11 @@ interface PppOptions {
|
|
|
631
631
|
ztdProcessNoise?: number;
|
|
632
632
|
/** Model + estimate the troposphere. Default true. */
|
|
633
633
|
troposphere?: boolean;
|
|
634
|
+
/** High-rate precise satellite clocks (RINEX CLOCK, typically 30 s). When
|
|
635
|
+
* given, satellite clock offsets come from this by linear interpolation
|
|
636
|
+
* instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
|
|
637
|
+
* Satellites/epochs absent from the CLK fall back to the SP3 clock. */
|
|
638
|
+
clk?: ClkFile;
|
|
634
639
|
}
|
|
635
640
|
interface PppEpochResult {
|
|
636
641
|
timeMs: number;
|
|
@@ -709,6 +714,85 @@ declare function moonEcef(timeMs: number): [number, number, number];
|
|
|
709
714
|
*/
|
|
710
715
|
declare function solidEarthTide(rcv: [number, number, number], sun: [number, number, number], moon: [number, number, number]): [number, number, number];
|
|
711
716
|
|
|
717
|
+
/**
|
|
718
|
+
* PPP-AR — integer ambiguity resolution for Precise Point Positioning.
|
|
719
|
+
*
|
|
720
|
+
* Float PPP estimates one *ionosphere-free* ambiguity per satellite arc, a
|
|
721
|
+
* real number in metres. Fixing those to integers is what takes PPP from the
|
|
722
|
+
* decimetre to the centimetre level. The classic two-step decomposition is
|
|
723
|
+
* used here:
|
|
724
|
+
*
|
|
725
|
+
* 1. **Wide-lane** N_WL = N1 − N2 from the Melbourne–Wübbena combination.
|
|
726
|
+
* The WL wavelength is ~86 cm (GPS), so the arc-averaged MW rounds to an
|
|
727
|
+
* integer reliably once the satellite WL fractional-cycle bias is removed.
|
|
728
|
+
* 2. **Narrow-lane** N1, recovered from the float IF ambiguity with N_WL
|
|
729
|
+
* fixed, then resolved with LAMBDA on *between-satellite single
|
|
730
|
+
* differences* (which cancel the receiver phase bias) after removing the
|
|
731
|
+
* satellite NL fractional-cycle bias.
|
|
732
|
+
*
|
|
733
|
+
* The satellite WL/NL fractional-cycle biases come from a phase-bias product
|
|
734
|
+
* (Bias-SINEX OSB from an AR-capable analysis centre such as CNES or CODE).
|
|
735
|
+
* Without them, a single receiver cannot separate the satellite bias from the
|
|
736
|
+
* integer, so those biases are required inputs — pass 0 only for a network
|
|
737
|
+
* datum where they have already been removed.
|
|
738
|
+
*
|
|
739
|
+
* The relation between the IF ambiguity (metres) and the integers is
|
|
740
|
+
* A_IF = λ_NL·N1 + λ_NL·(f2/(f1−f2))·N_WL, λ_NL = c/(f1+f2).
|
|
741
|
+
*/
|
|
742
|
+
/** Wide-lane wavelength c/(f1−f2) (m). */
|
|
743
|
+
declare function wlWavelength(f1: number, f2: number): number;
|
|
744
|
+
/** Narrow-lane wavelength c/(f1+f2) (m). */
|
|
745
|
+
declare function nlWavelength(f1: number, f2: number): number;
|
|
746
|
+
/** One satellite's float ambiguity inputs for AR. */
|
|
747
|
+
interface ArSat {
|
|
748
|
+
prn: string;
|
|
749
|
+
/** Float ionosphere-free ambiguity (m) from the PPP EKF. */
|
|
750
|
+
aIF: number;
|
|
751
|
+
/** Arc-averaged Melbourne–Wübbena wide-lane estimate (cycles). */
|
|
752
|
+
mwCyc: number;
|
|
753
|
+
f1: number;
|
|
754
|
+
f2: number;
|
|
755
|
+
/** Satellite wide-lane fractional-cycle bias (cycles). Default 0. */
|
|
756
|
+
wlBiasCyc?: number;
|
|
757
|
+
/** Satellite narrow-lane fractional-cycle bias (cycles). Default 0. */
|
|
758
|
+
nlBiasCyc?: number;
|
|
759
|
+
/** Elevation (deg), used only to pick the reference satellite. */
|
|
760
|
+
elevDeg?: number;
|
|
761
|
+
}
|
|
762
|
+
interface ArOptions {
|
|
763
|
+
/** Max |MW − round| to accept a wide-lane (cycles). Default 0.25. */
|
|
764
|
+
wlThreshold?: number;
|
|
765
|
+
/** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
|
|
766
|
+
ratioThreshold?: number;
|
|
767
|
+
}
|
|
768
|
+
interface ArFixedSat {
|
|
769
|
+
prn: string;
|
|
770
|
+
nWl: number;
|
|
771
|
+
n1: number;
|
|
772
|
+
/** Fixed IF ambiguity (m). */
|
|
773
|
+
aIF: number;
|
|
774
|
+
}
|
|
775
|
+
interface ArResult {
|
|
776
|
+
/** Whether the narrow-lane fix passed the ratio test. */
|
|
777
|
+
fixed: boolean;
|
|
778
|
+
/** LAMBDA ratio statistic (second-best / best). */
|
|
779
|
+
ratio: number;
|
|
780
|
+
/** Reference PRN whose absolute N1 stays float (SD datum). */
|
|
781
|
+
refPrn: string | null;
|
|
782
|
+
/** Fixed satellites (includes the reference with its float-rounded N1). */
|
|
783
|
+
sats: ArFixedSat[];
|
|
784
|
+
/** PRNs whose wide-lane did not round confidently (excluded). */
|
|
785
|
+
rejectedWl: string[];
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Resolve PPP integer ambiguities from the float IF ambiguities and their
|
|
789
|
+
* covariance. `Qaif` is the n×n float covariance (m²) in the same order as
|
|
790
|
+
* `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
|
|
791
|
+
* test result. A `fixed: false` result means the data did not support a
|
|
792
|
+
* confident fix (keep the float solution).
|
|
793
|
+
*/
|
|
794
|
+
declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
|
|
795
|
+
|
|
712
796
|
/**
|
|
713
797
|
* Single-point positioning (SPP) from pseudoranges and broadcast
|
|
714
798
|
* ephemerides.
|
|
@@ -798,4 +882,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
|
|
|
798
882
|
*/
|
|
799
883
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
800
884
|
|
|
801
|
-
export { type AntennaOffset, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch };
|
|
885
|
+
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
package/dist/positioning.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { E as Ephemeris } from './nav-DImXUdbp.js';
|
|
2
2
|
import { DopValues } from './orbit.js';
|
|
3
|
-
import { I as IonexGrid, S as Sp3File } from './
|
|
3
|
+
import { I as IonexGrid, C as ClkFile, S as Sp3File } from './clk-DGVBGRzA.js';
|
|
4
4
|
import { AntexFile } from './antex.js';
|
|
5
5
|
import './ephemeris-Ohl6NAfw.js';
|
|
6
6
|
import './ecef-CF0uAysr.js';
|
|
@@ -631,6 +631,11 @@ interface PppOptions {
|
|
|
631
631
|
ztdProcessNoise?: number;
|
|
632
632
|
/** Model + estimate the troposphere. Default true. */
|
|
633
633
|
troposphere?: boolean;
|
|
634
|
+
/** High-rate precise satellite clocks (RINEX CLOCK, typically 30 s). When
|
|
635
|
+
* given, satellite clock offsets come from this by linear interpolation
|
|
636
|
+
* instead of the SP3 5-minute clocks — the dominant PPP accuracy term.
|
|
637
|
+
* Satellites/epochs absent from the CLK fall back to the SP3 clock. */
|
|
638
|
+
clk?: ClkFile;
|
|
634
639
|
}
|
|
635
640
|
interface PppEpochResult {
|
|
636
641
|
timeMs: number;
|
|
@@ -709,6 +714,85 @@ declare function moonEcef(timeMs: number): [number, number, number];
|
|
|
709
714
|
*/
|
|
710
715
|
declare function solidEarthTide(rcv: [number, number, number], sun: [number, number, number], moon: [number, number, number]): [number, number, number];
|
|
711
716
|
|
|
717
|
+
/**
|
|
718
|
+
* PPP-AR — integer ambiguity resolution for Precise Point Positioning.
|
|
719
|
+
*
|
|
720
|
+
* Float PPP estimates one *ionosphere-free* ambiguity per satellite arc, a
|
|
721
|
+
* real number in metres. Fixing those to integers is what takes PPP from the
|
|
722
|
+
* decimetre to the centimetre level. The classic two-step decomposition is
|
|
723
|
+
* used here:
|
|
724
|
+
*
|
|
725
|
+
* 1. **Wide-lane** N_WL = N1 − N2 from the Melbourne–Wübbena combination.
|
|
726
|
+
* The WL wavelength is ~86 cm (GPS), so the arc-averaged MW rounds to an
|
|
727
|
+
* integer reliably once the satellite WL fractional-cycle bias is removed.
|
|
728
|
+
* 2. **Narrow-lane** N1, recovered from the float IF ambiguity with N_WL
|
|
729
|
+
* fixed, then resolved with LAMBDA on *between-satellite single
|
|
730
|
+
* differences* (which cancel the receiver phase bias) after removing the
|
|
731
|
+
* satellite NL fractional-cycle bias.
|
|
732
|
+
*
|
|
733
|
+
* The satellite WL/NL fractional-cycle biases come from a phase-bias product
|
|
734
|
+
* (Bias-SINEX OSB from an AR-capable analysis centre such as CNES or CODE).
|
|
735
|
+
* Without them, a single receiver cannot separate the satellite bias from the
|
|
736
|
+
* integer, so those biases are required inputs — pass 0 only for a network
|
|
737
|
+
* datum where they have already been removed.
|
|
738
|
+
*
|
|
739
|
+
* The relation between the IF ambiguity (metres) and the integers is
|
|
740
|
+
* A_IF = λ_NL·N1 + λ_NL·(f2/(f1−f2))·N_WL, λ_NL = c/(f1+f2).
|
|
741
|
+
*/
|
|
742
|
+
/** Wide-lane wavelength c/(f1−f2) (m). */
|
|
743
|
+
declare function wlWavelength(f1: number, f2: number): number;
|
|
744
|
+
/** Narrow-lane wavelength c/(f1+f2) (m). */
|
|
745
|
+
declare function nlWavelength(f1: number, f2: number): number;
|
|
746
|
+
/** One satellite's float ambiguity inputs for AR. */
|
|
747
|
+
interface ArSat {
|
|
748
|
+
prn: string;
|
|
749
|
+
/** Float ionosphere-free ambiguity (m) from the PPP EKF. */
|
|
750
|
+
aIF: number;
|
|
751
|
+
/** Arc-averaged Melbourne–Wübbena wide-lane estimate (cycles). */
|
|
752
|
+
mwCyc: number;
|
|
753
|
+
f1: number;
|
|
754
|
+
f2: number;
|
|
755
|
+
/** Satellite wide-lane fractional-cycle bias (cycles). Default 0. */
|
|
756
|
+
wlBiasCyc?: number;
|
|
757
|
+
/** Satellite narrow-lane fractional-cycle bias (cycles). Default 0. */
|
|
758
|
+
nlBiasCyc?: number;
|
|
759
|
+
/** Elevation (deg), used only to pick the reference satellite. */
|
|
760
|
+
elevDeg?: number;
|
|
761
|
+
}
|
|
762
|
+
interface ArOptions {
|
|
763
|
+
/** Max |MW − round| to accept a wide-lane (cycles). Default 0.25. */
|
|
764
|
+
wlThreshold?: number;
|
|
765
|
+
/** Min LAMBDA ratio to accept the narrow-lane fix. Default 3. */
|
|
766
|
+
ratioThreshold?: number;
|
|
767
|
+
}
|
|
768
|
+
interface ArFixedSat {
|
|
769
|
+
prn: string;
|
|
770
|
+
nWl: number;
|
|
771
|
+
n1: number;
|
|
772
|
+
/** Fixed IF ambiguity (m). */
|
|
773
|
+
aIF: number;
|
|
774
|
+
}
|
|
775
|
+
interface ArResult {
|
|
776
|
+
/** Whether the narrow-lane fix passed the ratio test. */
|
|
777
|
+
fixed: boolean;
|
|
778
|
+
/** LAMBDA ratio statistic (second-best / best). */
|
|
779
|
+
ratio: number;
|
|
780
|
+
/** Reference PRN whose absolute N1 stays float (SD datum). */
|
|
781
|
+
refPrn: string | null;
|
|
782
|
+
/** Fixed satellites (includes the reference with its float-rounded N1). */
|
|
783
|
+
sats: ArFixedSat[];
|
|
784
|
+
/** PRNs whose wide-lane did not round confidently (excluded). */
|
|
785
|
+
rejectedWl: string[];
|
|
786
|
+
}
|
|
787
|
+
/**
|
|
788
|
+
* Resolve PPP integer ambiguities from the float IF ambiguities and their
|
|
789
|
+
* covariance. `Qaif` is the n×n float covariance (m²) in the same order as
|
|
790
|
+
* `sats`. Returns the fixed narrow-lane / wide-lane integers and the ratio
|
|
791
|
+
* test result. A `fixed: false` result means the data did not support a
|
|
792
|
+
* confident fix (keep the float solution).
|
|
793
|
+
*/
|
|
794
|
+
declare function resolvePppAmbiguities(sats: ArSat[], Qaif: Float64Array, opts?: ArOptions): ArResult;
|
|
795
|
+
|
|
712
796
|
/**
|
|
713
797
|
* Single-point positioning (SPP) from pseudoranges and broadcast
|
|
714
798
|
* ephemerides.
|
|
@@ -798,4 +882,4 @@ declare function ionoFree(p1: number, p2: number, f1: number, f2: number): numbe
|
|
|
798
882
|
*/
|
|
799
883
|
declare function solveSpp(pseudoranges: Map<string, number>, ephemerides: Map<string, Ephemeris>, timeMs: number, opts?: SppOptions): SppSolution | null;
|
|
800
884
|
|
|
801
|
-
export { type AntennaOffset, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch };
|
|
885
|
+
export { type AntennaOffset, type ArFixedSat, type ArOptions, type ArResult, type ArSat, type CorrectionResult, type DgnssOptions, type DgnssSolution, type EphemerisSource, IONO_L1_M_PER_TECU, type KlobucharCoeffs, type LambdaResult, type PppAntennaModel, type PppCorrectionConfig, type PppCorrections, type PppEpoch, type PppEpochContext, type PppEpochResult, type PppOptions, type PppSatObs, type PppSolution, type RawObservation, type RtkEpochMeasurements, RtkFloatEngine, type RtkFloatOptions, type RtkFloatSolution, type RtkMeasurement, type SatGeom, type SppOptions, type SppSolution, type TropoMapping, buildPppAntenna, createPppCorrections, gimSlantIonoDelayL1, gimVerticalTec, gmst, ionoFree, klobucharDelay, lambdaReduction, lambdaSearch, moonEcef, niellMapping, nlWavelength, resolvePppAmbiguities, satClockCorrection, solidEarthTide, solveDgnss, solvePpp, solveSpp, sunEcef, toRtkEpoch, wlWavelength };
|
package/dist/positioning.js
CHANGED
|
@@ -12,18 +12,21 @@ import {
|
|
|
12
12
|
lambdaSearch,
|
|
13
13
|
moonEcef,
|
|
14
14
|
niellMapping,
|
|
15
|
+
nlWavelength,
|
|
16
|
+
resolvePppAmbiguities,
|
|
15
17
|
satClockCorrection,
|
|
16
18
|
solidEarthTide,
|
|
17
19
|
solveDgnss,
|
|
18
20
|
solvePpp,
|
|
19
21
|
solveSpp,
|
|
20
22
|
sunEcef,
|
|
21
|
-
toRtkEpoch
|
|
22
|
-
|
|
23
|
+
toRtkEpoch,
|
|
24
|
+
wlWavelength
|
|
25
|
+
} from "./chunk-EVFD4UNZ.js";
|
|
23
26
|
import "./chunk-MHGNKSSH.js";
|
|
24
27
|
import "./chunk-37QNKGTC.js";
|
|
25
28
|
import "./chunk-6FAL6P4G.js";
|
|
26
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-GPEP67TG.js";
|
|
27
30
|
import "./chunk-HVXYFUCB.js";
|
|
28
31
|
import "./chunk-LEEU5OIO.js";
|
|
29
32
|
import "./chunk-FIEWO4J4.js";
|
|
@@ -41,11 +44,14 @@ export {
|
|
|
41
44
|
lambdaSearch,
|
|
42
45
|
moonEcef,
|
|
43
46
|
niellMapping,
|
|
47
|
+
nlWavelength,
|
|
48
|
+
resolvePppAmbiguities,
|
|
44
49
|
satClockCorrection,
|
|
45
50
|
solidEarthTide,
|
|
46
51
|
solveDgnss,
|
|
47
52
|
solvePpp,
|
|
48
53
|
solveSpp,
|
|
49
54
|
sunEcef,
|
|
50
|
-
toRtkEpoch
|
|
55
|
+
toRtkEpoch,
|
|
56
|
+
wlWavelength
|
|
51
57
|
};
|