gnss-js 2.13.0 → 2.13.1

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.
@@ -3144,7 +3144,32 @@ function sagnacRotate(x, y, z, travelS) {
3144
3144
  const s = Math.sin(theta);
3145
3145
  return [x * c + y * s, -x * s + y * c, z];
3146
3146
  }
3147
- function satStateAtEmission(source, prn, recvTimeMs, rcv) {
3147
+ function satStateAtEmission(source, prn, recvTimeMs, rcv, pseudorangeM) {
3148
+ if (pseudorangeM !== void 0 && pseudorangeM > 1e6) {
3149
+ let tEmit = recvTimeMs - pseudorangeM / C_LIGHT * 1e3;
3150
+ const s0 = source.satState(prn, tEmit);
3151
+ if (!s0) return null;
3152
+ tEmit -= s0.clkS * 1e3;
3153
+ const s = source.satState(prn, tEmit);
3154
+ if (!s) return null;
3155
+ let travelS2 = 0.075;
3156
+ let pos = [s.x, s.y, s.z];
3157
+ for (let iter = 0; iter < 3; iter++) {
3158
+ pos = sagnacRotate(s.x, s.y, s.z, travelS2);
3159
+ travelS2 = Math.hypot(pos[0] - rcv[0], pos[1] - rcv[1], pos[2] - rcv[2]) / C_LIGHT;
3160
+ }
3161
+ const velDotPos2 = s.x * s.vx + s.y * s.vy + s.z * s.vz;
3162
+ const relS2 = -2 * velDotPos2 / (C_LIGHT * C_LIGHT);
3163
+ return {
3164
+ state: {
3165
+ x: pos[0],
3166
+ y: pos[1],
3167
+ z: pos[2],
3168
+ clkM: C_LIGHT * (s.clkS + relS2)
3169
+ },
3170
+ travelS: travelS2
3171
+ };
3172
+ }
3148
3173
  let travelS = 0.075;
3149
3174
  let sx = 0;
3150
3175
  let sy = 0;
@@ -3377,7 +3402,7 @@ var PppEngine = class {
3377
3402
  const o = applySatBiases(source, raw, epoch.timeMs);
3378
3403
  if (!o) continue;
3379
3404
  const slip = detectSlip(o, ei);
3380
- const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv);
3405
+ const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv, o.c1);
3381
3406
  if (!sat) continue;
3382
3407
  const [elRad, azRad] = getAer(
3383
3408
  sat.state.x,
package/dist/index.cjs CHANGED
@@ -17013,7 +17013,32 @@ function sagnacRotate(x, y, z, travelS) {
17013
17013
  const s = Math.sin(theta);
17014
17014
  return [x * c + y * s, -x * s + y * c, z];
17015
17015
  }
17016
- function satStateAtEmission(source, prn, recvTimeMs, rcv) {
17016
+ function satStateAtEmission(source, prn, recvTimeMs, rcv, pseudorangeM) {
17017
+ if (pseudorangeM !== void 0 && pseudorangeM > 1e6) {
17018
+ let tEmit = recvTimeMs - pseudorangeM / C_LIGHT * 1e3;
17019
+ const s0 = source.satState(prn, tEmit);
17020
+ if (!s0) return null;
17021
+ tEmit -= s0.clkS * 1e3;
17022
+ const s = source.satState(prn, tEmit);
17023
+ if (!s) return null;
17024
+ let travelS2 = 0.075;
17025
+ let pos = [s.x, s.y, s.z];
17026
+ for (let iter = 0; iter < 3; iter++) {
17027
+ pos = sagnacRotate(s.x, s.y, s.z, travelS2);
17028
+ travelS2 = Math.hypot(pos[0] - rcv[0], pos[1] - rcv[1], pos[2] - rcv[2]) / C_LIGHT;
17029
+ }
17030
+ const velDotPos2 = s.x * s.vx + s.y * s.vy + s.z * s.vz;
17031
+ const relS2 = -2 * velDotPos2 / (C_LIGHT * C_LIGHT);
17032
+ return {
17033
+ state: {
17034
+ x: pos[0],
17035
+ y: pos[1],
17036
+ z: pos[2],
17037
+ clkM: C_LIGHT * (s.clkS + relS2)
17038
+ },
17039
+ travelS: travelS2
17040
+ };
17041
+ }
17017
17042
  let travelS = 0.075;
17018
17043
  let sx = 0;
17019
17044
  let sy = 0;
@@ -17246,7 +17271,7 @@ var PppEngine = class {
17246
17271
  const o = applySatBiases(source, raw, epoch.timeMs);
17247
17272
  if (!o) continue;
17248
17273
  const slip = detectSlip(o, ei);
17249
- const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv);
17274
+ const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv, o.c1);
17250
17275
  if (!sat) continue;
17251
17276
  const [elRad, azRad] = getAer(
17252
17277
  sat.state.x,
package/dist/index.js CHANGED
@@ -218,7 +218,7 @@ import {
218
218
  sunEcef,
219
219
  toRtkEpoch,
220
220
  wlWavelength
221
- } from "./chunk-RWFJEVLJ.js";
221
+ } from "./chunk-PQLPPFIK.js";
222
222
  import "./chunk-H3AKFD25.js";
223
223
  import {
224
224
  EPHEMERIS_VALIDITY_MS,
@@ -3753,7 +3753,32 @@ function sagnacRotate(x, y, z, travelS) {
3753
3753
  const s = Math.sin(theta);
3754
3754
  return [x * c + y * s, -x * s + y * c, z];
3755
3755
  }
3756
- function satStateAtEmission(source, prn, recvTimeMs, rcv) {
3756
+ function satStateAtEmission(source, prn, recvTimeMs, rcv, pseudorangeM) {
3757
+ if (pseudorangeM !== void 0 && pseudorangeM > 1e6) {
3758
+ let tEmit = recvTimeMs - pseudorangeM / C_LIGHT * 1e3;
3759
+ const s0 = source.satState(prn, tEmit);
3760
+ if (!s0) return null;
3761
+ tEmit -= s0.clkS * 1e3;
3762
+ const s = source.satState(prn, tEmit);
3763
+ if (!s) return null;
3764
+ let travelS2 = 0.075;
3765
+ let pos = [s.x, s.y, s.z];
3766
+ for (let iter = 0; iter < 3; iter++) {
3767
+ pos = sagnacRotate(s.x, s.y, s.z, travelS2);
3768
+ travelS2 = Math.hypot(pos[0] - rcv[0], pos[1] - rcv[1], pos[2] - rcv[2]) / C_LIGHT;
3769
+ }
3770
+ const velDotPos2 = s.x * s.vx + s.y * s.vy + s.z * s.vz;
3771
+ const relS2 = -2 * velDotPos2 / (C_LIGHT * C_LIGHT);
3772
+ return {
3773
+ state: {
3774
+ x: pos[0],
3775
+ y: pos[1],
3776
+ z: pos[2],
3777
+ clkM: C_LIGHT * (s.clkS + relS2)
3778
+ },
3779
+ travelS: travelS2
3780
+ };
3781
+ }
3757
3782
  let travelS = 0.075;
3758
3783
  let sx = 0;
3759
3784
  let sy = 0;
@@ -3986,7 +4011,7 @@ var PppEngine = class {
3986
4011
  const o = applySatBiases(source, raw, epoch.timeMs);
3987
4012
  if (!o) continue;
3988
4013
  const slip = detectSlip(o, ei);
3989
- const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv);
4014
+ const sat = satStateAtEmission(source, o.prn, epoch.timeMs, rcv, o.c1);
3990
4015
  if (!sat) continue;
3991
4016
  const [elRad, azRad] = getAer(
3992
4017
  sat.state.x,
@@ -41,7 +41,7 @@ import {
41
41
  sunEcef,
42
42
  toRtkEpoch,
43
43
  wlWavelength
44
- } from "./chunk-RWFJEVLJ.js";
44
+ } from "./chunk-PQLPPFIK.js";
45
45
  import "./chunk-H3AKFD25.js";
46
46
  import "./chunk-7T5DLVZL.js";
47
47
  import "./chunk-HVXYFUCB.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gnss-js",
3
- "version": "2.13.0",
3
+ "version": "2.13.1",
4
4
  "description": "Comprehensive GNSS library for JavaScript — time scales, coordinates, RINEX parsing, RTCM3 decoding, orbit computation, and signal analysis",
5
5
  "type": "module",
6
6
  "sideEffects": false,