@neilberkman/sidereon 0.8.1 → 0.9.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 +128 -72
- package/package.json +18 -2
- package/pkg/sidereon.d.ts +4858 -1734
- package/pkg/sidereon.js +7739 -903
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1011 -582
- package/pkg-node/sidereon.d.ts +2916 -221
- package/pkg-node/sidereon.js +7844 -876
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1011 -582
- package/types/sidereon-extra.d.ts +1417 -7
package/pkg-node/sidereon.d.ts
CHANGED
|
@@ -145,6 +145,12 @@ export class Antex {
|
|
|
145
145
|
* Return the satellite antenna for `prn` valid at `epoch`, or `undefined`.
|
|
146
146
|
*/
|
|
147
147
|
satelliteAntenna(prn: string, epoch: AntexDateTime): Antenna | undefined;
|
|
148
|
+
/**
|
|
149
|
+
* Serialize to standard ANTEX 1.4 text. Deterministic: the same product
|
|
150
|
+
* always produces byte-identical text, and re-parsing the output yields an
|
|
151
|
+
* equal product.
|
|
152
|
+
*/
|
|
153
|
+
toAntexString(): string;
|
|
148
154
|
/**
|
|
149
155
|
* Number of antenna blocks parsed from the product.
|
|
150
156
|
*/
|
|
@@ -210,6 +216,23 @@ export class AppliedCorrections {
|
|
|
210
216
|
readonly dropped: string[];
|
|
211
217
|
}
|
|
212
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Total mass density and temperature at altitude from NRLMSISE-00.
|
|
221
|
+
*/
|
|
222
|
+
export class AtmosphereDensity {
|
|
223
|
+
private constructor();
|
|
224
|
+
free(): void;
|
|
225
|
+
[Symbol.dispose](): void;
|
|
226
|
+
/**
|
|
227
|
+
* Total mass density, kilograms per cubic metre.
|
|
228
|
+
*/
|
|
229
|
+
readonly densityKgM3: number;
|
|
230
|
+
/**
|
|
231
|
+
* Temperature at the requested altitude, kelvin.
|
|
232
|
+
*/
|
|
233
|
+
readonly temperatureK: number;
|
|
234
|
+
}
|
|
235
|
+
|
|
213
236
|
/**
|
|
214
237
|
* A parsed broadcast ephemeris store from a RINEX NAV file. `records` are the
|
|
215
238
|
* usable GPS/Galileo/BeiDou records selected by the core default SPP policy.
|
|
@@ -230,6 +253,23 @@ export class BroadcastEphemeris {
|
|
|
230
253
|
* fields are `null` where no compared epoch populated them.
|
|
231
254
|
*/
|
|
232
255
|
compareToSp3(precise: Sp3, satellites: string[], from_j2000_s: number, to_j2000_s: number, step_s: number): any;
|
|
256
|
+
/**
|
|
257
|
+
* Compare this broadcast product against a precise SP3 product over a regular
|
|
258
|
+
* sampling window, letting the core window driver build the per-epoch grid.
|
|
259
|
+
*
|
|
260
|
+
* The window-form sibling of [`compareToSp3`]: instead of building the
|
|
261
|
+
* per-epoch keys here, this hands the core
|
|
262
|
+
* `sidereon_core::broadcast_comparison::compare_window` a `CompareWindow`
|
|
263
|
+
* (the inclusive `[fromJ2000S, toJ2000S]` broadcast span, the precise split
|
|
264
|
+
* Julian-date anchor for the window start, the `stepS` sampling step, and the
|
|
265
|
+
* velocity finite-difference half step) so the grid sampling, the final snap
|
|
266
|
+
* to the window end, and the lockstep precise-date advance all run in core.
|
|
267
|
+
* The precise anchor is derived from `fromJ2000S` (both products share GPS
|
|
268
|
+
* system time, as in [`compareToSp3`]), and `velocityHalfS` defaults to
|
|
269
|
+
* `round(stepS / 2)`. Returns the same `{ overall, perSatellite, missing }`
|
|
270
|
+
* report shape.
|
|
271
|
+
*/
|
|
272
|
+
compareWindowToSp3(precise: Sp3, satellites: string[], from_j2000_s: number, to_j2000_s: number, step_s: number, velocity_half_s?: number | null): any;
|
|
233
273
|
/**
|
|
234
274
|
* Solve a receiver position from broadcast ephemeris ALONE: the supported
|
|
235
275
|
* real-time / offline single-point-positioning mode. `request` is the same
|
|
@@ -237,6 +277,14 @@ export class BroadcastEphemeris {
|
|
|
237
277
|
* solving against this broadcast store as an ephemeris source.
|
|
238
278
|
*/
|
|
239
279
|
solveBroadcast(request: any): SppSolution;
|
|
280
|
+
/**
|
|
281
|
+
* Serialize the usable GPS, Galileo, and BeiDou broadcast records to
|
|
282
|
+
* standard RINEX 3 navigation text. Deterministic: the same record set
|
|
283
|
+
* always produces byte-identical text, and re-parsing the output yields the
|
|
284
|
+
* same records. GLONASS state-vector records are not part of the Keplerian
|
|
285
|
+
* broadcast-orbit grammar this writer emits and are therefore not included.
|
|
286
|
+
*/
|
|
287
|
+
toRinexString(): string;
|
|
240
288
|
/**
|
|
241
289
|
* Number of usable GLONASS records.
|
|
242
290
|
*/
|
|
@@ -577,23 +625,62 @@ export class CdmObject {
|
|
|
577
625
|
[Symbol.dispose](): void;
|
|
578
626
|
/**
|
|
579
627
|
* Build a CDM object. `positionKm` / `velocityKmS` are length-3
|
|
580
|
-
* `Float64Array`s; `covarianceRtn` is the length-6 RTN lower triangle
|
|
581
|
-
* `[CR_R, CT_R, CT_T, CN_R, CN_T, CN_N]`. `meta` carries the optional
|
|
582
|
-
*
|
|
628
|
+
* `Float64Array`s; `covarianceRtn` is the length-6 RTN position lower triangle
|
|
629
|
+
* `[CR_R, CT_R, CT_T, CN_R, CN_T, CN_N]`. `meta` carries the optional CCSDS
|
|
630
|
+
* metadata block (`objectDesignator`, `catalogName`, `objectName`,
|
|
631
|
+
* `internationalDesignator`, `objectType`, `operatorContactPosition`,
|
|
632
|
+
* `operatorOrganization`, `operatorPhone`, `operatorEmail`, `ephemerisName`,
|
|
633
|
+
* `covarianceMethod`, `maneuverable`, `orbitCenter`, `refFrame`,
|
|
634
|
+
* `gravityModel`, `atmosphericModel`, `nBodyPerturbations`,
|
|
635
|
+
* `solarRadPressure`, `earthTides`, `intrackThrust`) and the optional
|
|
636
|
+
* `velocityCovarianceRtn`, a length-15 `Float64Array` of the RTN
|
|
637
|
+
* velocity-covariance rows that complete the 6x6 matrix.
|
|
583
638
|
*/
|
|
584
639
|
constructor(position_km: Float64Array, velocity_km_s: Float64Array, covariance_rtn: Float64Array, meta: any);
|
|
640
|
+
/**
|
|
641
|
+
* Atmospheric model.
|
|
642
|
+
*/
|
|
643
|
+
readonly atmosphericModel: string | undefined;
|
|
585
644
|
/**
|
|
586
645
|
* Catalog name.
|
|
587
646
|
*/
|
|
588
647
|
readonly catalogName: string | undefined;
|
|
648
|
+
/**
|
|
649
|
+
* Covariance method.
|
|
650
|
+
*/
|
|
651
|
+
readonly covarianceMethod: string | undefined;
|
|
589
652
|
/**
|
|
590
653
|
* RTN position-covariance lower triangle, length-6 `Float64Array`.
|
|
591
654
|
*/
|
|
592
655
|
readonly covarianceRtn: Float64Array;
|
|
656
|
+
/**
|
|
657
|
+
* Earth-tides indicator.
|
|
658
|
+
*/
|
|
659
|
+
readonly earthTides: string | undefined;
|
|
660
|
+
/**
|
|
661
|
+
* Ephemeris name.
|
|
662
|
+
*/
|
|
663
|
+
readonly ephemerisName: string | undefined;
|
|
664
|
+
/**
|
|
665
|
+
* Gravity model.
|
|
666
|
+
*/
|
|
667
|
+
readonly gravityModel: string | undefined;
|
|
593
668
|
/**
|
|
594
669
|
* International designator (COSPAR ID).
|
|
595
670
|
*/
|
|
596
671
|
readonly internationalDesignator: string | undefined;
|
|
672
|
+
/**
|
|
673
|
+
* In-track-thrust indicator.
|
|
674
|
+
*/
|
|
675
|
+
readonly intrackThrust: string | undefined;
|
|
676
|
+
/**
|
|
677
|
+
* Maneuverability indicator.
|
|
678
|
+
*/
|
|
679
|
+
readonly maneuverable: string | undefined;
|
|
680
|
+
/**
|
|
681
|
+
* N-body perturbations indicator.
|
|
682
|
+
*/
|
|
683
|
+
readonly nBodyPerturbations: string | undefined;
|
|
597
684
|
/**
|
|
598
685
|
* Object designator.
|
|
599
686
|
*/
|
|
@@ -606,6 +693,26 @@ export class CdmObject {
|
|
|
606
693
|
* Object type.
|
|
607
694
|
*/
|
|
608
695
|
readonly objectType: string | undefined;
|
|
696
|
+
/**
|
|
697
|
+
* Operator contact position.
|
|
698
|
+
*/
|
|
699
|
+
readonly operatorContactPosition: string | undefined;
|
|
700
|
+
/**
|
|
701
|
+
* Operator email.
|
|
702
|
+
*/
|
|
703
|
+
readonly operatorEmail: string | undefined;
|
|
704
|
+
/**
|
|
705
|
+
* Operator organization.
|
|
706
|
+
*/
|
|
707
|
+
readonly operatorOrganization: string | undefined;
|
|
708
|
+
/**
|
|
709
|
+
* Operator phone.
|
|
710
|
+
*/
|
|
711
|
+
readonly operatorPhone: string | undefined;
|
|
712
|
+
/**
|
|
713
|
+
* Orbit center.
|
|
714
|
+
*/
|
|
715
|
+
readonly orbitCenter: string | undefined;
|
|
609
716
|
/**
|
|
610
717
|
* Position vector, kilometres, length-3 `Float64Array`.
|
|
611
718
|
*/
|
|
@@ -614,6 +721,16 @@ export class CdmObject {
|
|
|
614
721
|
* Reference frame.
|
|
615
722
|
*/
|
|
616
723
|
readonly refFrame: string | undefined;
|
|
724
|
+
/**
|
|
725
|
+
* Solar-radiation-pressure indicator.
|
|
726
|
+
*/
|
|
727
|
+
readonly solarRadPressure: string | undefined;
|
|
728
|
+
/**
|
|
729
|
+
* RTN velocity-covariance rows completing the 6x6 matrix, a length-15
|
|
730
|
+
* `Float64Array` in CCSDS order (`CRDOT_R` .. `CNDOT_NDOT`), or `undefined`
|
|
731
|
+
* when the producer carried only the position covariance block.
|
|
732
|
+
*/
|
|
733
|
+
readonly velocityCovarianceRtn: Float64Array | undefined;
|
|
617
734
|
/**
|
|
618
735
|
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
619
736
|
*/
|
|
@@ -643,6 +760,39 @@ export class ChecksumWarning {
|
|
|
643
760
|
readonly lineLabel: string;
|
|
644
761
|
}
|
|
645
762
|
|
|
763
|
+
/**
|
|
764
|
+
* Civil calendar fields from a no-leap core time conversion.
|
|
765
|
+
*/
|
|
766
|
+
export class CivilDateTime {
|
|
767
|
+
private constructor();
|
|
768
|
+
free(): void;
|
|
769
|
+
[Symbol.dispose](): void;
|
|
770
|
+
/**
|
|
771
|
+
* Civil day of month.
|
|
772
|
+
*/
|
|
773
|
+
readonly day: bigint;
|
|
774
|
+
/**
|
|
775
|
+
* Civil hour of day.
|
|
776
|
+
*/
|
|
777
|
+
readonly hour: bigint;
|
|
778
|
+
/**
|
|
779
|
+
* Civil minute of hour.
|
|
780
|
+
*/
|
|
781
|
+
readonly minute: bigint;
|
|
782
|
+
/**
|
|
783
|
+
* Civil month, 1-12.
|
|
784
|
+
*/
|
|
785
|
+
readonly month: bigint;
|
|
786
|
+
/**
|
|
787
|
+
* Whole civil second of minute.
|
|
788
|
+
*/
|
|
789
|
+
readonly second: bigint;
|
|
790
|
+
/**
|
|
791
|
+
* Civil year.
|
|
792
|
+
*/
|
|
793
|
+
readonly year: bigint;
|
|
794
|
+
}
|
|
795
|
+
|
|
646
796
|
/**
|
|
647
797
|
* A civil GPS-time epoch for RINEX clock interpolation. Calendar fields are
|
|
648
798
|
* interpreted in GPS time; `gpsSeconds` is seconds since 1980-01-06 GPST.
|
|
@@ -762,6 +912,90 @@ export class ConjunctionState {
|
|
|
762
912
|
readonly velocityKmS: Float64Array;
|
|
763
913
|
}
|
|
764
914
|
|
|
915
|
+
/**
|
|
916
|
+
* A built-once constellation of already-initialized SGP4 satellites for repeated
|
|
917
|
+
* batch operations.
|
|
918
|
+
*
|
|
919
|
+
* Build it once from parsed [`Tle`]s, then call [`Constellation.propagate`] (and
|
|
920
|
+
* `visible` / `lookAngleArcs` / `groundTracks` / `passes`) as often as you like:
|
|
921
|
+
* it OWNS its satellites and BORROWS them on each call, so unlike the free
|
|
922
|
+
* [`propagateBatch`] (which consumes the `Tle` handles it is given) the same
|
|
923
|
+
* `Constellation` drives a live scene across frames with no re-parse and no
|
|
924
|
+
* per-frame handle churn. This is the JS form of Elixir's `Sidereon.Constellation`.
|
|
925
|
+
*
|
|
926
|
+
* It does no parsing or I/O: TLE text becomes satellites at the interface
|
|
927
|
+
* boundary ([`Tle`] / [`parseTleFile`]); the constellation only batches the core
|
|
928
|
+
* geometry over the satellites it was handed.
|
|
929
|
+
*/
|
|
930
|
+
export class Constellation {
|
|
931
|
+
free(): void;
|
|
932
|
+
[Symbol.dispose](): void;
|
|
933
|
+
/**
|
|
934
|
+
* Sub-satellite WGS84 ground tracks for every satellite over a shared epoch
|
|
935
|
+
* grid, in fleet order (element `i` is satellite `i`'s track), each reduced
|
|
936
|
+
* TEME->GCRS->ITRS->geodetic by the engine's validated transforms. A satellite
|
|
937
|
+
* that fails yields an empty track, keeping the result index-aligned. The
|
|
938
|
+
* batched form of [`Tle.groundTrack`].
|
|
939
|
+
*/
|
|
940
|
+
groundTracks(epochs_unix_us: BigInt64Array): GroundTrack[];
|
|
941
|
+
/**
|
|
942
|
+
* Topocentric az/el/range arcs from `station` for every satellite over a
|
|
943
|
+
* shared epoch grid, in fleet order (element `i` is satellite `i`'s arc). A
|
|
944
|
+
* satellite that fails to propagate yields an empty arc, so the result stays
|
|
945
|
+
* index-aligned with the constellation. The batched form of [`Tle.lookAngles`].
|
|
946
|
+
*/
|
|
947
|
+
lookAngleArcs(station: GroundStation, epochs_unix_us: BigInt64Array): LookAngles[];
|
|
948
|
+
/**
|
|
949
|
+
* Build a constellation from already-parsed [`Tle`]s, taking ownership of
|
|
950
|
+
* them. Each `Tle` keeps the opsmode it was constructed with, and its NORAD
|
|
951
|
+
* catalog number becomes the satellite's id in `visible`. The input order is
|
|
952
|
+
* the fleet order (the leading axis of every batch result and the
|
|
953
|
+
* `satelliteIndex` of every pass). The `Tle` handles are consumed; clone first
|
|
954
|
+
* (`tle.clone()`) to keep a per-satellite handle.
|
|
955
|
+
*/
|
|
956
|
+
constructor(satellites: Tle[]);
|
|
957
|
+
/**
|
|
958
|
+
* Passes over `station` within `[startUnixUs, endUnixUs)` for every satellite,
|
|
959
|
+
* flattened across the constellation: each [`FleetPass`] carries the
|
|
960
|
+
* `satelliteIndex` (fleet-order) it belongs to. `elevationMaskDeg` defaults to
|
|
961
|
+
* 0, `stepSeconds` to 30, `timeToleranceS` to 1e-3. A satellite that fails to
|
|
962
|
+
* scan contributes no passes. Throws a `RangeError` on a non-positive step or
|
|
963
|
+
* an end at or before the start.
|
|
964
|
+
*/
|
|
965
|
+
passes(station: GroundStation, start_unix_us: bigint, end_unix_us: bigint, elevation_mask_deg?: number | null, step_seconds?: number | null, time_tolerance_s?: number | null): FleetPass[];
|
|
966
|
+
/**
|
|
967
|
+
* Propagate the whole constellation over a shared epoch grid in one call,
|
|
968
|
+
* borrowing it (NOT consumed, so the same `Constellation` drives every frame).
|
|
969
|
+
*
|
|
970
|
+
* `epochsUnixUs` is a `BigInt64Array` of unix-microsecond UTC epochs shared
|
|
971
|
+
* by every satellite. Element `(i, j)` of the result is satellite `i`
|
|
972
|
+
* propagated to epoch `j`, bit-for-bit identical to the per-satellite
|
|
973
|
+
* [`Tle.propagate`] path. A satellite that fails to propagate yields `NaN`
|
|
974
|
+
* for all of its epochs, keeping the result index-aligned (mirroring Elixir's
|
|
975
|
+
* `propagate_all`, which surfaces per-satellite outcomes rather than failing
|
|
976
|
+
* the whole batch). An empty constellation or empty epoch grid yields empty
|
|
977
|
+
* arrays.
|
|
978
|
+
*/
|
|
979
|
+
propagate(epochs_unix_us: BigInt64Array): FleetPropagation;
|
|
980
|
+
/**
|
|
981
|
+
* Satellites above `minElevationDeg` from `station` at a single epoch, each
|
|
982
|
+
* with its catalog number and topocentric az/el/range, sorted by elevation
|
|
983
|
+
* (highest first). The constellation form of the core `visibleFromSatellites`
|
|
984
|
+
* (Elixir `Constellation.visible_from`). Throws on an invalid station or
|
|
985
|
+
* elevation threshold.
|
|
986
|
+
*/
|
|
987
|
+
visible(station: GroundStation, epoch_unix_us: bigint, min_elevation_deg: number): VisibleSatellite[];
|
|
988
|
+
/**
|
|
989
|
+
* The satellites' NORAD catalog numbers, in fleet order.
|
|
990
|
+
*/
|
|
991
|
+
readonly catalogNumbers: string[];
|
|
992
|
+
/**
|
|
993
|
+
* Number of satellites in the constellation (the leading axis of every batch
|
|
994
|
+
* result).
|
|
995
|
+
*/
|
|
996
|
+
readonly satelliteCount: number;
|
|
997
|
+
}
|
|
998
|
+
|
|
765
999
|
/**
|
|
766
1000
|
* Coherent GPS C/A correlation result.
|
|
767
1001
|
*/
|
|
@@ -783,6 +1017,49 @@ export class CorrelationResult {
|
|
|
783
1017
|
readonly q: number;
|
|
784
1018
|
}
|
|
785
1019
|
|
|
1020
|
+
/**
|
|
1021
|
+
* A computed look-angle grid for a set of satellites and ground stations at one
|
|
1022
|
+
* epoch. Build with [`coverageLookAngles`].
|
|
1023
|
+
*/
|
|
1024
|
+
export class CoverageGrid {
|
|
1025
|
+
private constructor();
|
|
1026
|
+
free(): void;
|
|
1027
|
+
[Symbol.dispose](): void;
|
|
1028
|
+
/**
|
|
1029
|
+
* Number of visible satellites per station at `minElevationDeg`, as a flat
|
|
1030
|
+
* array of length `stationCount`. Delegates to
|
|
1031
|
+
* `sidereon_core::astro::coverage::access_counts`.
|
|
1032
|
+
*/
|
|
1033
|
+
accessCounts(min_elevation_deg: number): Uint32Array;
|
|
1034
|
+
/**
|
|
1035
|
+
* The look angle for one satellite/station pair as `[azimuthDeg,
|
|
1036
|
+
* elevationDeg, rangeKm]`, or `undefined` when that cell failed (the
|
|
1037
|
+
* satellite was below the horizon geometry the kernel rejects) or the
|
|
1038
|
+
* indices are out of range.
|
|
1039
|
+
*/
|
|
1040
|
+
lookAngle(satellite_index: number, station_index: number): Float64Array | undefined;
|
|
1041
|
+
/**
|
|
1042
|
+
* Maximum successful elevation per station, degrees, as a flat array of
|
|
1043
|
+
* length `stationCount`. A station with no successful cell reports `NaN`.
|
|
1044
|
+
* Delegates to `sidereon_core::astro::coverage::max_elevation`.
|
|
1045
|
+
*/
|
|
1046
|
+
maxElevationDeg(): Float64Array;
|
|
1047
|
+
/**
|
|
1048
|
+
* Row-major `[satellite][station]` visibility mask at `minElevationDeg`, as a
|
|
1049
|
+
* flat `Uint8Array` of `1` (visible) / `0`. Error cells are not visible.
|
|
1050
|
+
* Delegates to `sidereon_core::astro::coverage::visible_mask`.
|
|
1051
|
+
*/
|
|
1052
|
+
visibleMask(min_elevation_deg: number): Uint8Array;
|
|
1053
|
+
/**
|
|
1054
|
+
* Number of satellites (grid rows).
|
|
1055
|
+
*/
|
|
1056
|
+
readonly satelliteCount: number;
|
|
1057
|
+
/**
|
|
1058
|
+
* Number of ground stations (grid columns).
|
|
1059
|
+
*/
|
|
1060
|
+
readonly stationCount: number;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
786
1063
|
/**
|
|
787
1064
|
* A DGNSS rover solve: the corrected SPP solution plus the base-relative
|
|
788
1065
|
* baseline.
|
|
@@ -860,6 +1137,50 @@ export class Dop {
|
|
|
860
1137
|
* Position DOP.
|
|
861
1138
|
*/
|
|
862
1139
|
readonly pdop: number;
|
|
1140
|
+
/**
|
|
1141
|
+
* Per-clock-column time DOP: entry `i` is the cofactor standard deviation
|
|
1142
|
+
* of the `i`-th clock state, indexed by clock column rather than tagged by
|
|
1143
|
+
* constellation. The geometry-only `dop` path (`fromAzEl`,
|
|
1144
|
+
* `fromLineOfSight`, `gnssDop`) carries no constellation context, so it
|
|
1145
|
+
* leaves this **empty**; read the lone clock's value off [`tdop`](Self::tdop).
|
|
1146
|
+
* Per-system entries are only populated on the multi-clock SPP path; pair
|
|
1147
|
+
* them with that solve's system ordering via `SppSolution.systemTdops`.
|
|
1148
|
+
*/
|
|
1149
|
+
readonly systemTdops: Float64Array;
|
|
1150
|
+
/**
|
|
1151
|
+
* Time DOP.
|
|
1152
|
+
*/
|
|
1153
|
+
readonly tdop: number;
|
|
1154
|
+
/**
|
|
1155
|
+
* Vertical DOP.
|
|
1156
|
+
*/
|
|
1157
|
+
readonly vdop: number;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
/**
|
|
1161
|
+
* Exact DOP at one epoch: the scalars plus the satellites that contributed
|
|
1162
|
+
* rows, from `gnssDopAtEpoch`.
|
|
1163
|
+
*/
|
|
1164
|
+
export class DopGeometry {
|
|
1165
|
+
private constructor();
|
|
1166
|
+
free(): void;
|
|
1167
|
+
[Symbol.dispose](): void;
|
|
1168
|
+
/**
|
|
1169
|
+
* Geometric DOP.
|
|
1170
|
+
*/
|
|
1171
|
+
readonly gdop: number;
|
|
1172
|
+
/**
|
|
1173
|
+
* Horizontal DOP.
|
|
1174
|
+
*/
|
|
1175
|
+
readonly hdop: number;
|
|
1176
|
+
/**
|
|
1177
|
+
* Position DOP.
|
|
1178
|
+
*/
|
|
1179
|
+
readonly pdop: number;
|
|
1180
|
+
/**
|
|
1181
|
+
* Satellite tokens that contributed line-of-sight rows.
|
|
1182
|
+
*/
|
|
1183
|
+
readonly satellites: string[];
|
|
863
1184
|
/**
|
|
864
1185
|
* Time DOP.
|
|
865
1186
|
*/
|
|
@@ -920,6 +1241,64 @@ export class DopSeries {
|
|
|
920
1241
|
readonly vdop: Float64Array;
|
|
921
1242
|
}
|
|
922
1243
|
|
|
1244
|
+
/**
|
|
1245
|
+
* One sampled exact-DOP point over a uniform window, from `gnssDopSeriesWindow`.
|
|
1246
|
+
*/
|
|
1247
|
+
export class DopSeriesSample {
|
|
1248
|
+
private constructor();
|
|
1249
|
+
free(): void;
|
|
1250
|
+
[Symbol.dispose](): void;
|
|
1251
|
+
/**
|
|
1252
|
+
* Geometric DOP.
|
|
1253
|
+
*/
|
|
1254
|
+
readonly gdop: number;
|
|
1255
|
+
/**
|
|
1256
|
+
* Horizontal DOP.
|
|
1257
|
+
*/
|
|
1258
|
+
readonly hdop: number;
|
|
1259
|
+
/**
|
|
1260
|
+
* Position DOP.
|
|
1261
|
+
*/
|
|
1262
|
+
readonly pdop: number;
|
|
1263
|
+
/**
|
|
1264
|
+
* Satellite tokens that contributed rows at this sample.
|
|
1265
|
+
*/
|
|
1266
|
+
readonly satellites: string[];
|
|
1267
|
+
/**
|
|
1268
|
+
* Zero-based sample index from the window start.
|
|
1269
|
+
*/
|
|
1270
|
+
readonly stepIndex: number;
|
|
1271
|
+
/**
|
|
1272
|
+
* Time DOP.
|
|
1273
|
+
*/
|
|
1274
|
+
readonly tdop: number;
|
|
1275
|
+
/**
|
|
1276
|
+
* Vertical DOP.
|
|
1277
|
+
*/
|
|
1278
|
+
readonly vdop: number;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* Range-rate and Doppler result for a carrier frequency.
|
|
1283
|
+
*/
|
|
1284
|
+
export class DopplerShift {
|
|
1285
|
+
private constructor();
|
|
1286
|
+
free(): void;
|
|
1287
|
+
[Symbol.dispose](): void;
|
|
1288
|
+
/**
|
|
1289
|
+
* Carrier Doppler shift, hertz; positive means a frequency increase.
|
|
1290
|
+
*/
|
|
1291
|
+
readonly dopplerHz: number;
|
|
1292
|
+
/**
|
|
1293
|
+
* Dimensionless Doppler ratio; positive means approaching the station.
|
|
1294
|
+
*/
|
|
1295
|
+
readonly dopplerRatio: number;
|
|
1296
|
+
/**
|
|
1297
|
+
* Range rate, kilometres per second; positive means receding.
|
|
1298
|
+
*/
|
|
1299
|
+
readonly rangeRateKmS: number;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
923
1302
|
/**
|
|
924
1303
|
* Orthonormal encounter frame built from two relative states.
|
|
925
1304
|
*/
|
|
@@ -1027,79 +1406,234 @@ export class FdeSolution {
|
|
|
1027
1406
|
}
|
|
1028
1407
|
|
|
1029
1408
|
/**
|
|
1030
|
-
*
|
|
1031
|
-
* `
|
|
1409
|
+
* One pass in a [`Constellation.passes`] result: the pass geometry plus the
|
|
1410
|
+
* fleet-order `satelliteIndex` of the satellite it belongs to (map that index to
|
|
1411
|
+
* your own per-satellite metadata).
|
|
1032
1412
|
*/
|
|
1033
|
-
export class
|
|
1413
|
+
export class FleetPass {
|
|
1034
1414
|
private constructor();
|
|
1035
1415
|
free(): void;
|
|
1036
1416
|
[Symbol.dispose](): void;
|
|
1037
1417
|
/**
|
|
1038
|
-
*
|
|
1418
|
+
* AOS (acquisition of signal), unix microseconds.
|
|
1039
1419
|
*/
|
|
1040
|
-
readonly
|
|
1420
|
+
readonly aosUnixUs: bigint;
|
|
1041
1421
|
/**
|
|
1042
|
-
*
|
|
1422
|
+
* Culmination (peak elevation) time, unix microseconds.
|
|
1043
1423
|
*/
|
|
1044
|
-
readonly
|
|
1424
|
+
readonly culminationUnixUs: bigint;
|
|
1045
1425
|
/**
|
|
1046
|
-
*
|
|
1426
|
+
* LOS (loss of signal), unix microseconds.
|
|
1047
1427
|
*/
|
|
1048
|
-
readonly
|
|
1428
|
+
readonly losUnixUs: bigint;
|
|
1429
|
+
/**
|
|
1430
|
+
* Peak elevation during the pass, degrees.
|
|
1431
|
+
*/
|
|
1432
|
+
readonly maxElevationDeg: number;
|
|
1433
|
+
/**
|
|
1434
|
+
* Fleet-order index of the satellite this pass belongs to.
|
|
1435
|
+
*/
|
|
1436
|
+
readonly satelliteIndex: number;
|
|
1049
1437
|
}
|
|
1050
1438
|
|
|
1051
1439
|
/**
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1440
|
+
* TEME states from a batched fleet SGP4 propagation. Each array is flat
|
|
1441
|
+
* row-major with shape `(satelliteCount, epochCount, 3)`: satellite `i`'s arc
|
|
1442
|
+
* occupies the contiguous slice `[i * epochCount * 3 .. (i + 1) * epochCount *
|
|
1443
|
+
* 3]`, and within it epoch `j` is `[.. j * 3 + 3]`. Satellite `i`'s arc equals
|
|
1444
|
+
* the [`TlePropagation`] from `satellites[i].propagate(epochsUnixUs)`.
|
|
1054
1445
|
*/
|
|
1055
|
-
export class
|
|
1446
|
+
export class FleetPropagation {
|
|
1056
1447
|
private constructor();
|
|
1057
1448
|
free(): void;
|
|
1058
1449
|
[Symbol.dispose](): void;
|
|
1059
1450
|
/**
|
|
1060
|
-
*
|
|
1061
|
-
*/
|
|
1062
|
-
readonly accelerationMS2: Float64Array;
|
|
1063
|
-
/**
|
|
1064
|
-
* Broadcast clock bias, seconds.
|
|
1065
|
-
*/
|
|
1066
|
-
readonly clockBiasS: number;
|
|
1067
|
-
/**
|
|
1068
|
-
* FDMA frequency-channel number.
|
|
1451
|
+
* Number of epochs each satellite was propagated to (the second axis).
|
|
1069
1452
|
*/
|
|
1070
|
-
readonly
|
|
1453
|
+
readonly epochCount: number;
|
|
1071
1454
|
/**
|
|
1072
|
-
*
|
|
1455
|
+
* TEME positions, km, flat row-major `(satelliteCount, epochCount, 3)`,
|
|
1456
|
+
* length `3 * satelliteCount * epochCount`.
|
|
1073
1457
|
*/
|
|
1074
|
-
readonly
|
|
1458
|
+
readonly positionKm: Float64Array;
|
|
1075
1459
|
/**
|
|
1076
|
-
*
|
|
1460
|
+
* Number of satellites in the fleet (the leading axis).
|
|
1077
1461
|
*/
|
|
1078
|
-
readonly
|
|
1462
|
+
readonly satelliteCount: number;
|
|
1079
1463
|
/**
|
|
1080
|
-
*
|
|
1464
|
+
* TEME velocities, km/s, flat row-major `(satelliteCount, epochCount, 3)`,
|
|
1465
|
+
* length `3 * satelliteCount * epochCount`.
|
|
1081
1466
|
*/
|
|
1082
|
-
readonly
|
|
1467
|
+
readonly velocityKmS: Float64Array;
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1470
|
+
/**
|
|
1471
|
+
* A forgiving RTCM 3 stream scanner: slides over a byte buffer, resynchronizes
|
|
1472
|
+
* on the next `0xD3` preamble whenever the length overruns or the CRC fails, and
|
|
1473
|
+
* yields only frames whose CRC verifies, exactly as a receiver locks onto a
|
|
1474
|
+
* serial feed.
|
|
1475
|
+
*
|
|
1476
|
+
* Wraps `sidereon_core::rtcm::FrameScanner`: construction runs the scan to
|
|
1477
|
+
* completion (the core iterator owns the scanning logic) and `next()` walks the
|
|
1478
|
+
* yielded frames.
|
|
1479
|
+
*/
|
|
1480
|
+
export class FrameScanner {
|
|
1481
|
+
free(): void;
|
|
1482
|
+
[Symbol.dispose](): void;
|
|
1083
1483
|
/**
|
|
1084
|
-
*
|
|
1484
|
+
* Begin scanning `bytes` from the start.
|
|
1085
1485
|
*/
|
|
1086
|
-
|
|
1486
|
+
constructor(bytes: Uint8Array);
|
|
1087
1487
|
/**
|
|
1088
|
-
*
|
|
1488
|
+
* The next CRC-valid frame as `{ body, frameLen }` (`body` a `Uint8Array`,
|
|
1489
|
+
* the message body between the length word and the CRC), or `undefined` when
|
|
1490
|
+
* the scan is exhausted.
|
|
1089
1491
|
*/
|
|
1090
|
-
|
|
1492
|
+
next(): any;
|
|
1091
1493
|
/**
|
|
1092
|
-
*
|
|
1494
|
+
* The total number of CRC-valid frames the scan found.
|
|
1093
1495
|
*/
|
|
1094
|
-
readonly
|
|
1496
|
+
readonly length: number;
|
|
1095
1497
|
}
|
|
1096
1498
|
|
|
1097
1499
|
/**
|
|
1098
|
-
* A
|
|
1500
|
+
* A batch of transformed states from [`temeToGcrs`]: flat row-major
|
|
1501
|
+
* `positionKm` and `velocityKmS` `Float64Array`s, each length `3 * epochCount`.
|
|
1099
1502
|
*/
|
|
1100
|
-
export
|
|
1503
|
+
export class FrameStates {
|
|
1504
|
+
private constructor();
|
|
1505
|
+
free(): void;
|
|
1506
|
+
[Symbol.dispose](): void;
|
|
1101
1507
|
/**
|
|
1102
|
-
*
|
|
1508
|
+
* Number of states in the batch.
|
|
1509
|
+
*/
|
|
1510
|
+
readonly epochCount: number;
|
|
1511
|
+
/**
|
|
1512
|
+
* Transformed positions, kilometres, flat row-major `(n, 3)`.
|
|
1513
|
+
*/
|
|
1514
|
+
readonly positionKm: Float64Array;
|
|
1515
|
+
/**
|
|
1516
|
+
* Transformed velocities, km/s, flat row-major `(n, 3)`.
|
|
1517
|
+
*/
|
|
1518
|
+
readonly velocityKmS: Float64Array;
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
/**
|
|
1522
|
+
* A regular latitude/longitude grid of geoid undulation samples with bilinear
|
|
1523
|
+
* interpolation, wrapping a real (loaded) geoid model.
|
|
1524
|
+
*/
|
|
1525
|
+
export class GeoidGrid {
|
|
1526
|
+
free(): void;
|
|
1527
|
+
[Symbol.dispose](): void;
|
|
1528
|
+
/**
|
|
1529
|
+
* Parse a grid from the documented whitespace-delimited text format (a
|
|
1530
|
+
* six-field header `lat_min lon_min dlat dlon n_lat n_lon` followed by
|
|
1531
|
+
* `n_lat * n_lon` samples in metres). Throws an `Error` on a malformed
|
|
1532
|
+
* header or sample. Delegates to
|
|
1533
|
+
* `sidereon_core::geoid::GeoidGrid::from_text`.
|
|
1534
|
+
*/
|
|
1535
|
+
static fromText(text: string): GeoidGrid;
|
|
1536
|
+
/**
|
|
1537
|
+
* Build a grid from its origin, spacing, dimensions, and row-major samples
|
|
1538
|
+
* (metres, latitude ascending outer, longitude ascending inner). Throws an
|
|
1539
|
+
* `Error` when a dimension is zero, the sample count is not `nLat * nLon`, a
|
|
1540
|
+
* spacing/origin is non-finite or a spacing is non-positive, or a sample is
|
|
1541
|
+
* non-finite. Delegates to `sidereon_core::geoid::GeoidGrid::new`.
|
|
1542
|
+
*/
|
|
1543
|
+
constructor(lat_min_deg: number, lon_min_deg: number, dlat_deg: number, dlon_deg: number, n_lat: number, n_lon: number, values_m: Float64Array);
|
|
1544
|
+
/**
|
|
1545
|
+
* Bilinearly interpolated undulation `N` (metres) at a geodetic position in
|
|
1546
|
+
* degrees (latitude positive north, longitude positive east).
|
|
1547
|
+
*/
|
|
1548
|
+
undulationDeg(lat_deg: number, lon_deg: number): number;
|
|
1549
|
+
/**
|
|
1550
|
+
* Bilinearly interpolated undulation `N` (metres) at a geodetic position in
|
|
1551
|
+
* radians (latitude positive north, longitude positive east).
|
|
1552
|
+
*/
|
|
1553
|
+
undulationRad(lat_rad: number, lon_rad: number): number;
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1556
|
+
/**
|
|
1557
|
+
* One GLONASS broadcast state-vector record. `toeUtcJ2000S` is UTC seconds past
|
|
1558
|
+
* J2000; position is PZ-90.11 ECEF metres, velocity m/s, acceleration m/s^2.
|
|
1559
|
+
*/
|
|
1560
|
+
export class GlonassRecordJs {
|
|
1561
|
+
private constructor();
|
|
1562
|
+
free(): void;
|
|
1563
|
+
[Symbol.dispose](): void;
|
|
1564
|
+
/**
|
|
1565
|
+
* Lunisolar acceleration `[ax, ay, az]`, metres per second squared.
|
|
1566
|
+
*/
|
|
1567
|
+
readonly accelerationMS2: Float64Array;
|
|
1568
|
+
/**
|
|
1569
|
+
* Broadcast clock bias, seconds.
|
|
1570
|
+
*/
|
|
1571
|
+
readonly clockBiasS: number;
|
|
1572
|
+
/**
|
|
1573
|
+
* FDMA frequency-channel number.
|
|
1574
|
+
*/
|
|
1575
|
+
readonly freqChannel: number;
|
|
1576
|
+
/**
|
|
1577
|
+
* Relative frequency offset.
|
|
1578
|
+
*/
|
|
1579
|
+
readonly gammaN: number;
|
|
1580
|
+
/**
|
|
1581
|
+
* PZ-90.11 ECEF position `[x, y, z]`, metres.
|
|
1582
|
+
*/
|
|
1583
|
+
readonly positionM: Float64Array;
|
|
1584
|
+
/**
|
|
1585
|
+
* RINEX satellite token such as `"R10"`.
|
|
1586
|
+
*/
|
|
1587
|
+
readonly satellite: string;
|
|
1588
|
+
/**
|
|
1589
|
+
* Satellite health; 0 is healthy.
|
|
1590
|
+
*/
|
|
1591
|
+
readonly svHealth: number;
|
|
1592
|
+
/**
|
|
1593
|
+
* Reference epoch, UTC seconds past J2000.
|
|
1594
|
+
*/
|
|
1595
|
+
readonly toeUtcJ2000S: number;
|
|
1596
|
+
/**
|
|
1597
|
+
* PZ-90.11 ECEF velocity `[vx, vy, vz]`, metres per second.
|
|
1598
|
+
*/
|
|
1599
|
+
readonly velocityMS: Float64Array;
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
/**
|
|
1603
|
+
* One sampled rise/set/peak visibility pass, from `gnssPasses`.
|
|
1604
|
+
*/
|
|
1605
|
+
export class GnssPass {
|
|
1606
|
+
private constructor();
|
|
1607
|
+
free(): void;
|
|
1608
|
+
[Symbol.dispose](): void;
|
|
1609
|
+
/**
|
|
1610
|
+
* Maximum sampled elevation in the pass, degrees.
|
|
1611
|
+
*/
|
|
1612
|
+
readonly peakElevationDeg: number;
|
|
1613
|
+
/**
|
|
1614
|
+
* Zero-based sample index of the maximum sampled elevation.
|
|
1615
|
+
*/
|
|
1616
|
+
readonly peakStepIndex: number;
|
|
1617
|
+
/**
|
|
1618
|
+
* Zero-based sample index of the first above-mask sample.
|
|
1619
|
+
*/
|
|
1620
|
+
readonly riseStepIndex: number;
|
|
1621
|
+
/**
|
|
1622
|
+
* Satellite token, e.g. `"G05"`.
|
|
1623
|
+
*/
|
|
1624
|
+
readonly satellite: string;
|
|
1625
|
+
/**
|
|
1626
|
+
* Zero-based sample index of the last above-mask sample.
|
|
1627
|
+
*/
|
|
1628
|
+
readonly setStepIndex: number;
|
|
1629
|
+
}
|
|
1630
|
+
|
|
1631
|
+
/**
|
|
1632
|
+
* A GNSS constellation. The JS value matches the variant order below.
|
|
1633
|
+
*/
|
|
1634
|
+
export enum GnssSystem {
|
|
1635
|
+
/**
|
|
1636
|
+
* GPS, RINEX letter `G`.
|
|
1103
1637
|
*/
|
|
1104
1638
|
Gps = 0,
|
|
1105
1639
|
/**
|
|
@@ -1128,6 +1662,45 @@ export enum GnssSystem {
|
|
|
1128
1662
|
Sbas = 6,
|
|
1129
1663
|
}
|
|
1130
1664
|
|
|
1665
|
+
/**
|
|
1666
|
+
* Per-epoch visible-satellite count over a sampled window, from
|
|
1667
|
+
* `gnssVisibilitySeries`.
|
|
1668
|
+
*/
|
|
1669
|
+
export class GnssVisibilityCount {
|
|
1670
|
+
private constructor();
|
|
1671
|
+
free(): void;
|
|
1672
|
+
[Symbol.dispose](): void;
|
|
1673
|
+
/**
|
|
1674
|
+
* Number of satellites visible at this sample.
|
|
1675
|
+
*/
|
|
1676
|
+
readonly nVisible: number;
|
|
1677
|
+
/**
|
|
1678
|
+
* Zero-based sample index from the window start.
|
|
1679
|
+
*/
|
|
1680
|
+
readonly stepIndex: number;
|
|
1681
|
+
}
|
|
1682
|
+
|
|
1683
|
+
/**
|
|
1684
|
+
* One satellite above the elevation mask at a single epoch, from `gnssVisible`.
|
|
1685
|
+
*/
|
|
1686
|
+
export class GnssVisibleSatellite {
|
|
1687
|
+
private constructor();
|
|
1688
|
+
free(): void;
|
|
1689
|
+
[Symbol.dispose](): void;
|
|
1690
|
+
/**
|
|
1691
|
+
* Topocentric azimuth in `[0, 360)`, degrees.
|
|
1692
|
+
*/
|
|
1693
|
+
readonly azimuthDeg: number;
|
|
1694
|
+
/**
|
|
1695
|
+
* Topocentric elevation, degrees.
|
|
1696
|
+
*/
|
|
1697
|
+
readonly elevationDeg: number;
|
|
1698
|
+
/**
|
|
1699
|
+
* Satellite token, e.g. `"G05"`.
|
|
1700
|
+
*/
|
|
1701
|
+
readonly satellite: string;
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1131
1704
|
/**
|
|
1132
1705
|
* A GNSS week number plus time-of-week, tagged by constellation.
|
|
1133
1706
|
*/
|
|
@@ -1177,6 +1750,34 @@ export class GroundStation {
|
|
|
1177
1750
|
readonly longitudeDeg: number;
|
|
1178
1751
|
}
|
|
1179
1752
|
|
|
1753
|
+
/**
|
|
1754
|
+
* Sub-satellite ground-track points from a batched [`Tle.groundTrack`] call.
|
|
1755
|
+
* Each array is a `Float64Array` of length `epochCount`, aligned to the input
|
|
1756
|
+
* epoch grid. WGS84 geodetic: latitude/longitude in degrees, ellipsoidal height
|
|
1757
|
+
* in kilometres.
|
|
1758
|
+
*/
|
|
1759
|
+
export class GroundTrack {
|
|
1760
|
+
private constructor();
|
|
1761
|
+
free(): void;
|
|
1762
|
+
[Symbol.dispose](): void;
|
|
1763
|
+
/**
|
|
1764
|
+
* Ellipsoidal height above the WGS84 ellipsoid, kilometres.
|
|
1765
|
+
*/
|
|
1766
|
+
readonly altKm: Float64Array;
|
|
1767
|
+
/**
|
|
1768
|
+
* Number of epochs evaluated.
|
|
1769
|
+
*/
|
|
1770
|
+
readonly epochCount: number;
|
|
1771
|
+
/**
|
|
1772
|
+
* Geodetic latitude of the sub-satellite point, degrees north.
|
|
1773
|
+
*/
|
|
1774
|
+
readonly latDeg: Float64Array;
|
|
1775
|
+
/**
|
|
1776
|
+
* Geodetic longitude of the sub-satellite point, degrees east in `[-180, 180]`.
|
|
1777
|
+
*/
|
|
1778
|
+
readonly lonDeg: Float64Array;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1180
1781
|
/**
|
|
1181
1782
|
* A point in time, tagged UTC, with the precise time scales resolved.
|
|
1182
1783
|
*
|
|
@@ -1276,6 +1877,49 @@ export class Instant {
|
|
|
1276
1877
|
readonly ut1JdSplit: JulianDate;
|
|
1277
1878
|
}
|
|
1278
1879
|
|
|
1880
|
+
/**
|
|
1881
|
+
* A determined orbit state: position and velocity at one epoch.
|
|
1882
|
+
*/
|
|
1883
|
+
export class IodState {
|
|
1884
|
+
private constructor();
|
|
1885
|
+
free(): void;
|
|
1886
|
+
[Symbol.dispose](): void;
|
|
1887
|
+
/**
|
|
1888
|
+
* Position `[x, y, z]`, kilometres.
|
|
1889
|
+
*/
|
|
1890
|
+
readonly positionKm: Float64Array;
|
|
1891
|
+
/**
|
|
1892
|
+
* Velocity `[vx, vy, vz]`, kilometres per second.
|
|
1893
|
+
*/
|
|
1894
|
+
readonly velocityKmS: Float64Array;
|
|
1895
|
+
}
|
|
1896
|
+
|
|
1897
|
+
/**
|
|
1898
|
+
* A Gibbs / Herrick-Gibbs velocity solve: the velocity at the middle position
|
|
1899
|
+
* and the geometry diagnostics.
|
|
1900
|
+
*/
|
|
1901
|
+
export class IodVelocity {
|
|
1902
|
+
private constructor();
|
|
1903
|
+
free(): void;
|
|
1904
|
+
[Symbol.dispose](): void;
|
|
1905
|
+
/**
|
|
1906
|
+
* Coplanarity angle of the three position vectors, radians.
|
|
1907
|
+
*/
|
|
1908
|
+
readonly coplanarityRad: number;
|
|
1909
|
+
/**
|
|
1910
|
+
* Angle between the first and second position vectors, radians.
|
|
1911
|
+
*/
|
|
1912
|
+
readonly theta12Rad: number;
|
|
1913
|
+
/**
|
|
1914
|
+
* Angle between the second and third position vectors, radians.
|
|
1915
|
+
*/
|
|
1916
|
+
readonly theta23Rad: number;
|
|
1917
|
+
/**
|
|
1918
|
+
* Velocity at the middle position `[vx, vy, vz]`, kilometres per second.
|
|
1919
|
+
*/
|
|
1920
|
+
readonly velocityKmS: Float64Array;
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1279
1923
|
/**
|
|
1280
1924
|
* A parsed IONEX vertical-TEC product. Create with [`load_ionex`].
|
|
1281
1925
|
*/
|
|
@@ -1294,6 +1938,13 @@ export class Ionex {
|
|
|
1294
1938
|
* a `RangeError` on non-finite input and an `Error` on out-of-range input.
|
|
1295
1939
|
*/
|
|
1296
1940
|
slantDelay(lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, epoch_j2000_s: number, frequency_hz: number): number;
|
|
1941
|
+
/**
|
|
1942
|
+
* Serialize to standard IONEX text. Deterministic: the same product always
|
|
1943
|
+
* produces byte-identical text, and re-parsing the output yields an equal
|
|
1944
|
+
* product (the canonical node axes, geometry, exponent, map epochs, and
|
|
1945
|
+
* every TEC/RMS value).
|
|
1946
|
+
*/
|
|
1947
|
+
toIonexString(): string;
|
|
1297
1948
|
/**
|
|
1298
1949
|
* Mean Earth radius used by the geometry, kilometres.
|
|
1299
1950
|
*/
|
|
@@ -1430,6 +2081,19 @@ export class JulianDate {
|
|
|
1430
2081
|
private constructor();
|
|
1431
2082
|
free(): void;
|
|
1432
2083
|
[Symbol.dispose](): void;
|
|
2084
|
+
/**
|
|
2085
|
+
* Build the no-leap civil UTC two-part Julian date for calendar fields.
|
|
2086
|
+
*
|
|
2087
|
+
* Delegates to `sidereon_core::astro::time::model::Instant::from_utc_civil`:
|
|
2088
|
+
* `(year, month, day, hour, minute, second)` are marshalled through the
|
|
2089
|
+
* engine's `split_julian_date`, tagged UTC, with no leap second applied
|
|
2090
|
+
* (the civil convention the ionosphere / troposphere dispatchers consume).
|
|
2091
|
+
* This is distinct from the leap-aware `Instant`, whose TT/UT1/TDB scales
|
|
2092
|
+
* run the full UTC conversion. `second` may be fractional. Throws a
|
|
2093
|
+
* `RangeError` on an out-of-day field whose residual leaves the one-day
|
|
2094
|
+
* fraction window.
|
|
2095
|
+
*/
|
|
2096
|
+
static fromUtcCivil(year: number, month: number, day: number, hour?: number | null, minute?: number | null, second?: number | null): JulianDate;
|
|
1433
2097
|
/**
|
|
1434
2098
|
* Residual day fraction relative to `whole`.
|
|
1435
2099
|
*/
|
|
@@ -1487,6 +2151,23 @@ export class KlobucharAlphaBetaJs {
|
|
|
1487
2151
|
readonly beta: Float64Array;
|
|
1488
2152
|
}
|
|
1489
2153
|
|
|
2154
|
+
/**
|
|
2155
|
+
* The two transfer velocity vectors of a Lambert solution.
|
|
2156
|
+
*/
|
|
2157
|
+
export class LambertTransfer {
|
|
2158
|
+
private constructor();
|
|
2159
|
+
free(): void;
|
|
2160
|
+
[Symbol.dispose](): void;
|
|
2161
|
+
/**
|
|
2162
|
+
* Transfer velocity at `r2` (arrival) `[vx, vy, vz]`, km/s.
|
|
2163
|
+
*/
|
|
2164
|
+
readonly arrivalVelocityKmS: Float64Array;
|
|
2165
|
+
/**
|
|
2166
|
+
* Transfer velocity at `r1` (departure) `[vx, vy, vz]`, km/s.
|
|
2167
|
+
*/
|
|
2168
|
+
readonly departureVelocityKmS: Float64Array;
|
|
2169
|
+
}
|
|
2170
|
+
|
|
1490
2171
|
/**
|
|
1491
2172
|
* Provenance and coverage of the embedded IERS leap-second (TAI-UTC) table.
|
|
1492
2173
|
*/
|
|
@@ -1550,100 +2231,302 @@ export class LinkBudget {
|
|
|
1550
2231
|
}
|
|
1551
2232
|
|
|
1552
2233
|
/**
|
|
1553
|
-
*
|
|
1554
|
-
*
|
|
2234
|
+
* Decoded LNAV clock and ephemeris parameters (engineering units). Integer
|
|
2235
|
+
* fields are recovered exactly; scaled fields are the transmitted integer times
|
|
2236
|
+
* the IS-GPS-200 LSB. `l2_p_data_flag` is encode-only and not recovered.
|
|
1555
2237
|
*/
|
|
1556
|
-
export class
|
|
2238
|
+
export class LnavDecoded {
|
|
1557
2239
|
private constructor();
|
|
1558
2240
|
free(): void;
|
|
1559
2241
|
[Symbol.dispose](): void;
|
|
1560
2242
|
/**
|
|
1561
|
-
*
|
|
2243
|
+
* Clock bias coefficient, seconds.
|
|
1562
2244
|
*/
|
|
1563
|
-
readonly
|
|
2245
|
+
readonly af0: number;
|
|
1564
2246
|
/**
|
|
1565
|
-
*
|
|
2247
|
+
* Clock drift coefficient, seconds per second.
|
|
1566
2248
|
*/
|
|
1567
|
-
readonly
|
|
2249
|
+
readonly af1: number;
|
|
1568
2250
|
/**
|
|
1569
|
-
*
|
|
2251
|
+
* Clock drift-rate coefficient, seconds per second squared.
|
|
1570
2252
|
*/
|
|
1571
|
-
readonly
|
|
2253
|
+
readonly af2: number;
|
|
1572
2254
|
/**
|
|
1573
|
-
*
|
|
2255
|
+
* Age of data offset.
|
|
1574
2256
|
*/
|
|
1575
|
-
readonly
|
|
1576
|
-
}
|
|
1577
|
-
|
|
1578
|
-
/**
|
|
1579
|
-
* Niell hydrostatic and wet mapping factors, dimensionless.
|
|
1580
|
-
*/
|
|
1581
|
-
export class MappingFactors {
|
|
1582
|
-
private constructor();
|
|
1583
|
-
free(): void;
|
|
1584
|
-
[Symbol.dispose](): void;
|
|
2257
|
+
readonly aodo: number;
|
|
1585
2258
|
/**
|
|
1586
|
-
*
|
|
2259
|
+
* Cosine harmonic correction to inclination, radians.
|
|
1587
2260
|
*/
|
|
1588
|
-
readonly
|
|
2261
|
+
readonly cic: number;
|
|
1589
2262
|
/**
|
|
1590
|
-
*
|
|
2263
|
+
* Sine harmonic correction to inclination, radians.
|
|
1591
2264
|
*/
|
|
1592
|
-
readonly
|
|
1593
|
-
}
|
|
1594
|
-
|
|
1595
|
-
/**
|
|
1596
|
-
* Which supported RINEX NAV message a broadcast record carries.
|
|
1597
|
-
*/
|
|
1598
|
-
export enum NavMessage {
|
|
2265
|
+
readonly cis: number;
|
|
1599
2266
|
/**
|
|
1600
|
-
*
|
|
2267
|
+
* Cosine harmonic correction to orbit radius, metres.
|
|
1601
2268
|
*/
|
|
1602
|
-
|
|
2269
|
+
readonly crc: number;
|
|
1603
2270
|
/**
|
|
1604
|
-
*
|
|
2271
|
+
* Sine harmonic correction to orbit radius, metres.
|
|
1605
2272
|
*/
|
|
1606
|
-
|
|
2273
|
+
readonly crs: number;
|
|
1607
2274
|
/**
|
|
1608
|
-
*
|
|
2275
|
+
* Cosine harmonic correction to argument of latitude, radians.
|
|
1609
2276
|
*/
|
|
1610
|
-
|
|
2277
|
+
readonly cuc: number;
|
|
1611
2278
|
/**
|
|
1612
|
-
*
|
|
2279
|
+
* Sine harmonic correction to argument of latitude, radians.
|
|
1613
2280
|
*/
|
|
1614
|
-
|
|
2281
|
+
readonly cus: number;
|
|
1615
2282
|
/**
|
|
1616
|
-
*
|
|
2283
|
+
* Mean motion difference, radians per second.
|
|
1617
2284
|
*/
|
|
1618
|
-
|
|
1619
|
-
}
|
|
1620
|
-
|
|
1621
|
-
/**
|
|
1622
|
-
* One RINEX OBS epoch. Observation values are read through `RinexObs` methods.
|
|
1623
|
-
*/
|
|
1624
|
-
export class ObsEpoch {
|
|
1625
|
-
private constructor();
|
|
1626
|
-
free(): void;
|
|
1627
|
-
[Symbol.dispose](): void;
|
|
2285
|
+
readonly deltaN: number;
|
|
1628
2286
|
/**
|
|
1629
|
-
*
|
|
2287
|
+
* Eccentricity.
|
|
1630
2288
|
*/
|
|
1631
|
-
readonly
|
|
2289
|
+
readonly eccentricity: number;
|
|
1632
2290
|
/**
|
|
1633
|
-
*
|
|
2291
|
+
* Fit-interval flag.
|
|
1634
2292
|
*/
|
|
1635
|
-
readonly
|
|
2293
|
+
readonly fitIntervalFlag: number;
|
|
1636
2294
|
/**
|
|
1637
|
-
*
|
|
2295
|
+
* Inclination at reference time, radians.
|
|
1638
2296
|
*/
|
|
1639
|
-
readonly
|
|
2297
|
+
readonly i0: number;
|
|
1640
2298
|
/**
|
|
1641
|
-
*
|
|
2299
|
+
* Rate of inclination, radians per second.
|
|
1642
2300
|
*/
|
|
1643
|
-
readonly
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
2301
|
+
readonly idot: number;
|
|
2302
|
+
/**
|
|
2303
|
+
* Issue of data, clock.
|
|
2304
|
+
*/
|
|
2305
|
+
readonly iodc: number;
|
|
2306
|
+
/**
|
|
2307
|
+
* Issue of data, ephemeris.
|
|
2308
|
+
*/
|
|
2309
|
+
readonly iode: number;
|
|
2310
|
+
/**
|
|
2311
|
+
* L2 code indicator.
|
|
2312
|
+
*/
|
|
2313
|
+
readonly l2Code: number;
|
|
2314
|
+
/**
|
|
2315
|
+
* Mean anomaly at reference time, radians.
|
|
2316
|
+
*/
|
|
2317
|
+
readonly m0: number;
|
|
2318
|
+
/**
|
|
2319
|
+
* Argument of perigee, radians.
|
|
2320
|
+
*/
|
|
2321
|
+
readonly omega: number;
|
|
2322
|
+
/**
|
|
2323
|
+
* Longitude of ascending node at weekly epoch, radians.
|
|
2324
|
+
*/
|
|
2325
|
+
readonly omega0: number;
|
|
2326
|
+
/**
|
|
2327
|
+
* Rate of right ascension, radians per second.
|
|
2328
|
+
*/
|
|
2329
|
+
readonly omegaDot: number;
|
|
2330
|
+
/**
|
|
2331
|
+
* Square root of the semi-major axis, sqrt(metres).
|
|
2332
|
+
*/
|
|
2333
|
+
readonly sqrtA: number;
|
|
2334
|
+
/**
|
|
2335
|
+
* SV health bits.
|
|
2336
|
+
*/
|
|
2337
|
+
readonly svHealth: number;
|
|
2338
|
+
/**
|
|
2339
|
+
* Group delay differential, seconds.
|
|
2340
|
+
*/
|
|
2341
|
+
readonly tgd: number;
|
|
2342
|
+
/**
|
|
2343
|
+
* Clock reference time, seconds.
|
|
2344
|
+
*/
|
|
2345
|
+
readonly toc: number;
|
|
2346
|
+
/**
|
|
2347
|
+
* Ephemeris reference time, seconds.
|
|
2348
|
+
*/
|
|
2349
|
+
readonly toe: number;
|
|
2350
|
+
/**
|
|
2351
|
+
* User range accuracy index.
|
|
2352
|
+
*/
|
|
2353
|
+
readonly uraIndex: number;
|
|
2354
|
+
/**
|
|
2355
|
+
* GPS week number.
|
|
2356
|
+
*/
|
|
2357
|
+
readonly weekNumber: number;
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
/**
|
|
2361
|
+
* The three 300-bit LNAV subframes produced by [`lnavEncode`].
|
|
2362
|
+
*/
|
|
2363
|
+
export class LnavSubframes {
|
|
2364
|
+
private constructor();
|
|
2365
|
+
free(): void;
|
|
2366
|
+
[Symbol.dispose](): void;
|
|
2367
|
+
/**
|
|
2368
|
+
* Subframe 1 (clock/health) as a 300-element `Uint8Array` of `0`/`1` bits.
|
|
2369
|
+
*/
|
|
2370
|
+
readonly subframe1: Uint8Array;
|
|
2371
|
+
/**
|
|
2372
|
+
* Subframe 2 (ephemeris part 1) as a 300-element `Uint8Array`.
|
|
2373
|
+
*/
|
|
2374
|
+
readonly subframe2: Uint8Array;
|
|
2375
|
+
/**
|
|
2376
|
+
* Subframe 3 (ephemeris part 2) as a 300-element `Uint8Array`.
|
|
2377
|
+
*/
|
|
2378
|
+
readonly subframe3: Uint8Array;
|
|
2379
|
+
}
|
|
2380
|
+
|
|
2381
|
+
/**
|
|
2382
|
+
* Topocentric look angles from a batched arc, each a `Float64Array` of length
|
|
2383
|
+
* `epochCount`.
|
|
2384
|
+
*/
|
|
2385
|
+
export class LookAngles {
|
|
2386
|
+
private constructor();
|
|
2387
|
+
free(): void;
|
|
2388
|
+
[Symbol.dispose](): void;
|
|
2389
|
+
/**
|
|
2390
|
+
* Azimuth, degrees clockwise from north.
|
|
2391
|
+
*/
|
|
2392
|
+
readonly azimuthDeg: Float64Array;
|
|
2393
|
+
/**
|
|
2394
|
+
* Elevation, degrees above the horizon.
|
|
2395
|
+
*/
|
|
2396
|
+
readonly elevationDeg: Float64Array;
|
|
2397
|
+
/**
|
|
2398
|
+
* Number of epochs evaluated.
|
|
2399
|
+
*/
|
|
2400
|
+
readonly epochCount: number;
|
|
2401
|
+
/**
|
|
2402
|
+
* Slant range, kilometres.
|
|
2403
|
+
*/
|
|
2404
|
+
readonly rangeKm: Float64Array;
|
|
2405
|
+
}
|
|
2406
|
+
|
|
2407
|
+
/**
|
|
2408
|
+
* Niell hydrostatic and wet mapping factors, dimensionless.
|
|
2409
|
+
*/
|
|
2410
|
+
export class MappingFactors {
|
|
2411
|
+
private constructor();
|
|
2412
|
+
free(): void;
|
|
2413
|
+
[Symbol.dispose](): void;
|
|
2414
|
+
/**
|
|
2415
|
+
* Hydrostatic mapping factor (includes the height correction).
|
|
2416
|
+
*/
|
|
2417
|
+
readonly dry: number;
|
|
2418
|
+
/**
|
|
2419
|
+
* Wet mapping factor.
|
|
2420
|
+
*/
|
|
2421
|
+
readonly wet: number;
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
/**
|
|
2425
|
+
* One solved moving-baseline epoch.
|
|
2426
|
+
*/
|
|
2427
|
+
export class MovingBaselineSolution {
|
|
2428
|
+
private constructor();
|
|
2429
|
+
free(): void;
|
|
2430
|
+
[Symbol.dispose](): void;
|
|
2431
|
+
/**
|
|
2432
|
+
* Base receiver ECEF position (metres) used for this epoch, `[x, y, z]`.
|
|
2433
|
+
*/
|
|
2434
|
+
readonly basePositionM: Float64Array;
|
|
2435
|
+
/**
|
|
2436
|
+
* Euclidean baseline length, metres.
|
|
2437
|
+
*/
|
|
2438
|
+
readonly baselineLengthM: number;
|
|
2439
|
+
/**
|
|
2440
|
+
* Baseline vector `rover - base` (metres) in ECEF, `[dx, dy, dz]`. The
|
|
2441
|
+
* integer-fixed baseline when `status` is `"Fixed"`, else the float baseline.
|
|
2442
|
+
*/
|
|
2443
|
+
readonly baselineM: Float64Array;
|
|
2444
|
+
/**
|
|
2445
|
+
* The float baseline this epoch reduced through, `[dx, dy, dz]`, metres.
|
|
2446
|
+
*/
|
|
2447
|
+
readonly floatBaselineM: Float64Array;
|
|
2448
|
+
/**
|
|
2449
|
+
* Whether the float baseline solve converged.
|
|
2450
|
+
*/
|
|
2451
|
+
readonly floatConverged: boolean;
|
|
2452
|
+
/**
|
|
2453
|
+
* Integer ambiguity verdict for this epoch: `"Fixed"` or `"Float"`.
|
|
2454
|
+
*/
|
|
2455
|
+
readonly status: string;
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2458
|
+
/**
|
|
2459
|
+
* A named entry from a parsed TLE file: the satellite's name line (empty for a
|
|
2460
|
+
* bare 2-line set) paired with its initialized [`Tle`].
|
|
2461
|
+
*/
|
|
2462
|
+
export class NamedTle {
|
|
2463
|
+
private constructor();
|
|
2464
|
+
free(): void;
|
|
2465
|
+
[Symbol.dispose](): void;
|
|
2466
|
+
/**
|
|
2467
|
+
* The satellite name from the preceding name line, with any CelesTrak `0 `
|
|
2468
|
+
* marker stripped. Empty string for a bare 2-line element set.
|
|
2469
|
+
*/
|
|
2470
|
+
readonly name: string;
|
|
2471
|
+
/**
|
|
2472
|
+
* The initialized two-line element set. Call `.propagate()` /
|
|
2473
|
+
* `.lookAngles()` / `.findPasses()` on it directly.
|
|
2474
|
+
*/
|
|
2475
|
+
readonly tle: Tle;
|
|
2476
|
+
}
|
|
2477
|
+
|
|
2478
|
+
/**
|
|
2479
|
+
* Which supported RINEX NAV message a broadcast record carries.
|
|
2480
|
+
*/
|
|
2481
|
+
export enum NavMessage {
|
|
2482
|
+
/**
|
|
2483
|
+
* GPS legacy LNAV.
|
|
2484
|
+
*/
|
|
2485
|
+
GpsLnav = 0,
|
|
2486
|
+
/**
|
|
2487
|
+
* Galileo I/NAV.
|
|
2488
|
+
*/
|
|
2489
|
+
GalileoInav = 1,
|
|
2490
|
+
/**
|
|
2491
|
+
* Galileo F/NAV.
|
|
2492
|
+
*/
|
|
2493
|
+
GalileoFnav = 2,
|
|
2494
|
+
/**
|
|
2495
|
+
* BeiDou D1.
|
|
2496
|
+
*/
|
|
2497
|
+
BeidouD1 = 3,
|
|
2498
|
+
/**
|
|
2499
|
+
* BeiDou D2.
|
|
2500
|
+
*/
|
|
2501
|
+
BeidouD2 = 4,
|
|
2502
|
+
}
|
|
2503
|
+
|
|
2504
|
+
/**
|
|
2505
|
+
* One RINEX OBS epoch. Observation values are read through `RinexObs` methods.
|
|
2506
|
+
*/
|
|
2507
|
+
export class ObsEpoch {
|
|
2508
|
+
private constructor();
|
|
2509
|
+
free(): void;
|
|
2510
|
+
[Symbol.dispose](): void;
|
|
2511
|
+
/**
|
|
2512
|
+
* Civil epoch in the file time scale.
|
|
2513
|
+
*/
|
|
2514
|
+
readonly epoch: ObsEpochTime;
|
|
2515
|
+
/**
|
|
2516
|
+
* RINEX epoch flag. `0` is a normal observation epoch.
|
|
2517
|
+
*/
|
|
2518
|
+
readonly flag: number;
|
|
2519
|
+
/**
|
|
2520
|
+
* Number of satellites present at this epoch.
|
|
2521
|
+
*/
|
|
2522
|
+
readonly satelliteCount: number;
|
|
2523
|
+
/**
|
|
2524
|
+
* Satellite tokens present at this epoch.
|
|
2525
|
+
*/
|
|
2526
|
+
readonly satellites: string[];
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2529
|
+
/**
|
|
1647
2530
|
* Civil epoch from a RINEX observation file, in the file time scale.
|
|
1648
2531
|
*/
|
|
1649
2532
|
export class ObsEpochTime {
|
|
@@ -1837,118 +2720,305 @@ export class ObservationValueSeries {
|
|
|
1837
2720
|
}
|
|
1838
2721
|
|
|
1839
2722
|
/**
|
|
1840
|
-
* A canonical, format-agnostic CCSDS Orbit
|
|
2723
|
+
* A canonical, format-agnostic CCSDS Orbit Ephemeris Message parsed from KVN or
|
|
2724
|
+
* XML.
|
|
1841
2725
|
*/
|
|
1842
|
-
export class
|
|
2726
|
+
export class Oem {
|
|
1843
2727
|
free(): void;
|
|
1844
2728
|
[Symbol.dispose](): void;
|
|
1845
2729
|
/**
|
|
1846
|
-
* Build an
|
|
1847
|
-
*
|
|
1848
|
-
* `meanMotionDot`, `meanMotionDdot`).
|
|
1849
|
-
*/
|
|
1850
|
-
constructor(epoch: OmmEpoch, mean_motion: number, eccentricity: number, inclination_deg: number, ra_of_asc_node_deg: number, arg_of_pericenter_deg: number, mean_anomaly_deg: number, norad_cat_id: number, meta: any);
|
|
1851
|
-
/**
|
|
1852
|
-
* Encode this OMM to CCSDS/CelesTrak JSON text.
|
|
2730
|
+
* Build an OEM from one or more segments. `meta` carries the optional header
|
|
2731
|
+
* fields (`ccsdsOemVers`, `creationDate`, `originator`).
|
|
1853
2732
|
*/
|
|
1854
|
-
|
|
2733
|
+
constructor(segments: OemSegment[], meta: any);
|
|
1855
2734
|
/**
|
|
1856
|
-
* Encode this
|
|
2735
|
+
* Encode this OEM to CCSDS OEM KVN text.
|
|
1857
2736
|
*/
|
|
1858
2737
|
toKvnString(): string;
|
|
1859
2738
|
/**
|
|
1860
|
-
* Encode this
|
|
2739
|
+
* Encode this OEM to CCSDS OEM XML text.
|
|
1861
2740
|
*/
|
|
1862
2741
|
toXmlString(): string;
|
|
1863
2742
|
/**
|
|
1864
|
-
*
|
|
2743
|
+
* CCSDS OEM version string.
|
|
1865
2744
|
*/
|
|
1866
|
-
readonly
|
|
2745
|
+
readonly ccsdsOemVers: string;
|
|
1867
2746
|
/**
|
|
1868
|
-
*
|
|
2747
|
+
* Creation date.
|
|
1869
2748
|
*/
|
|
1870
|
-
readonly
|
|
2749
|
+
readonly creationDate: string | undefined;
|
|
1871
2750
|
/**
|
|
1872
|
-
*
|
|
2751
|
+
* Originator.
|
|
1873
2752
|
*/
|
|
1874
|
-
readonly
|
|
2753
|
+
readonly originator: string | undefined;
|
|
1875
2754
|
/**
|
|
1876
|
-
*
|
|
2755
|
+
* Number of segments.
|
|
1877
2756
|
*/
|
|
1878
|
-
readonly
|
|
2757
|
+
readonly segmentCount: number;
|
|
1879
2758
|
/**
|
|
1880
|
-
*
|
|
2759
|
+
* Metadata/data segments in message order.
|
|
1881
2760
|
*/
|
|
1882
|
-
readonly
|
|
2761
|
+
readonly segments: OemSegment[];
|
|
1883
2762
|
/**
|
|
1884
|
-
*
|
|
2763
|
+
* Forgiving-parse count of ephemeris data lines skipped as malformed (KVN
|
|
2764
|
+
* only; 0 for a constructed or XML-parsed message).
|
|
1885
2765
|
*/
|
|
1886
|
-
readonly
|
|
2766
|
+
readonly skippedStates: number;
|
|
2767
|
+
}
|
|
2768
|
+
|
|
2769
|
+
/**
|
|
2770
|
+
* One OEM covariance block.
|
|
2771
|
+
*/
|
|
2772
|
+
export class OemCovariance {
|
|
2773
|
+
free(): void;
|
|
2774
|
+
[Symbol.dispose](): void;
|
|
1887
2775
|
/**
|
|
1888
|
-
*
|
|
2776
|
+
* Build an OEM covariance block. `matrix` is a length-36 row-major
|
|
2777
|
+
* `Float64Array` for the `[r, v]` state; it must be finite, symmetric, and
|
|
2778
|
+
* positive semidefinite. `covRefFrame` is the optional frame label.
|
|
1889
2779
|
*/
|
|
1890
|
-
|
|
2780
|
+
constructor(epoch: string, matrix: Float64Array, cov_ref_frame?: string | null);
|
|
1891
2781
|
/**
|
|
1892
|
-
*
|
|
2782
|
+
* Covariance reference-frame label, or `undefined`.
|
|
1893
2783
|
*/
|
|
1894
|
-
readonly
|
|
2784
|
+
readonly covRefFrame: string | undefined;
|
|
1895
2785
|
/**
|
|
1896
|
-
*
|
|
2786
|
+
* Epoch text.
|
|
1897
2787
|
*/
|
|
1898
|
-
readonly
|
|
2788
|
+
readonly epoch: string;
|
|
1899
2789
|
/**
|
|
1900
|
-
* The
|
|
2790
|
+
* The 6x6 state covariance as a length-36 row-major `Float64Array`.
|
|
1901
2791
|
*/
|
|
1902
|
-
readonly
|
|
2792
|
+
readonly matrix: Float64Array;
|
|
2793
|
+
}
|
|
2794
|
+
|
|
2795
|
+
/**
|
|
2796
|
+
* OEM segment metadata: object identity, frame, time system, and span.
|
|
2797
|
+
*/
|
|
2798
|
+
export class OemMetadata {
|
|
2799
|
+
free(): void;
|
|
2800
|
+
[Symbol.dispose](): void;
|
|
1903
2801
|
/**
|
|
1904
|
-
*
|
|
2802
|
+
* Build OEM segment metadata. The seven leading arguments are required;
|
|
2803
|
+
* `meta` carries the optional fields (`useableStartTime`, `useableStopTime`,
|
|
2804
|
+
* `interpolation`, `interpolationDegree`).
|
|
1905
2805
|
*/
|
|
1906
|
-
|
|
2806
|
+
constructor(object_name: string, object_id: string, center_name: string, ref_frame: string, time_system: string, start_time: string, stop_time: string, meta: any);
|
|
1907
2807
|
/**
|
|
1908
|
-
*
|
|
2808
|
+
* Center name.
|
|
1909
2809
|
*/
|
|
1910
|
-
readonly
|
|
2810
|
+
readonly centerName: string;
|
|
1911
2811
|
/**
|
|
1912
|
-
*
|
|
2812
|
+
* Interpolation method label, or `undefined`.
|
|
1913
2813
|
*/
|
|
1914
|
-
readonly
|
|
2814
|
+
readonly interpolation: string | undefined;
|
|
1915
2815
|
/**
|
|
1916
|
-
*
|
|
2816
|
+
* Interpolation polynomial degree, or `undefined`.
|
|
1917
2817
|
*/
|
|
1918
|
-
readonly
|
|
2818
|
+
readonly interpolationDegree: number | undefined;
|
|
1919
2819
|
/**
|
|
1920
|
-
*
|
|
2820
|
+
* Object id (COSPAR international designator).
|
|
1921
2821
|
*/
|
|
1922
|
-
readonly
|
|
2822
|
+
readonly objectId: string;
|
|
1923
2823
|
/**
|
|
1924
|
-
*
|
|
2824
|
+
* Object name.
|
|
1925
2825
|
*/
|
|
1926
|
-
readonly
|
|
2826
|
+
readonly objectName: string;
|
|
1927
2827
|
/**
|
|
1928
|
-
*
|
|
2828
|
+
* Reference frame.
|
|
1929
2829
|
*/
|
|
1930
|
-
readonly
|
|
2830
|
+
readonly refFrame: string;
|
|
1931
2831
|
/**
|
|
1932
|
-
*
|
|
2832
|
+
* Segment start time text.
|
|
1933
2833
|
*/
|
|
1934
|
-
readonly
|
|
2834
|
+
readonly startTime: string;
|
|
1935
2835
|
/**
|
|
1936
|
-
*
|
|
2836
|
+
* Segment stop time text.
|
|
1937
2837
|
*/
|
|
1938
|
-
readonly
|
|
2838
|
+
readonly stopTime: string;
|
|
1939
2839
|
/**
|
|
1940
|
-
*
|
|
2840
|
+
* Time system.
|
|
1941
2841
|
*/
|
|
1942
|
-
readonly
|
|
2842
|
+
readonly timeSystem: string;
|
|
1943
2843
|
/**
|
|
1944
|
-
*
|
|
2844
|
+
* Useable start time text, or `undefined`.
|
|
1945
2845
|
*/
|
|
1946
|
-
readonly
|
|
2846
|
+
readonly useableStartTime: string | undefined;
|
|
1947
2847
|
/**
|
|
1948
|
-
*
|
|
2848
|
+
* Useable stop time text, or `undefined`.
|
|
1949
2849
|
*/
|
|
1950
|
-
readonly
|
|
1951
|
-
|
|
2850
|
+
readonly useableStopTime: string | undefined;
|
|
2851
|
+
}
|
|
2852
|
+
|
|
2853
|
+
/**
|
|
2854
|
+
* One OEM metadata/data segment.
|
|
2855
|
+
*/
|
|
2856
|
+
export class OemSegment {
|
|
2857
|
+
free(): void;
|
|
2858
|
+
[Symbol.dispose](): void;
|
|
2859
|
+
/**
|
|
2860
|
+
* Build an OEM segment from its metadata, state samples, and (possibly
|
|
2861
|
+
* empty) covariance blocks.
|
|
2862
|
+
*/
|
|
2863
|
+
constructor(metadata: OemMetadata, states: OemState[], covariances: OemCovariance[]);
|
|
2864
|
+
/**
|
|
2865
|
+
* Covariance blocks in segment order.
|
|
2866
|
+
*/
|
|
2867
|
+
readonly covariances: OemCovariance[];
|
|
2868
|
+
/**
|
|
2869
|
+
* Segment metadata.
|
|
2870
|
+
*/
|
|
2871
|
+
readonly metadata: OemMetadata;
|
|
2872
|
+
/**
|
|
2873
|
+
* State samples in segment order.
|
|
2874
|
+
*/
|
|
2875
|
+
readonly states: OemState[];
|
|
2876
|
+
}
|
|
2877
|
+
|
|
2878
|
+
/**
|
|
2879
|
+
* One OEM Cartesian state sample.
|
|
2880
|
+
*/
|
|
2881
|
+
export class OemState {
|
|
2882
|
+
free(): void;
|
|
2883
|
+
[Symbol.dispose](): void;
|
|
2884
|
+
/**
|
|
2885
|
+
* Build an OEM state sample. `epoch` is carried as text; `positionKm` and
|
|
2886
|
+
* `velocityKmS` are length-3 `Float64Array`s. `accelerationKmS2` is an
|
|
2887
|
+
* optional length-3 `Float64Array` (pass `undefined` for a position/velocity
|
|
2888
|
+
* sample).
|
|
2889
|
+
*/
|
|
2890
|
+
constructor(epoch: string, position_km: Float64Array, velocity_km_s: Float64Array, acceleration_km_s2?: Float64Array | null);
|
|
2891
|
+
/**
|
|
2892
|
+
* Acceleration vector, km/s^2, length-3 `Float64Array`, or `undefined`.
|
|
2893
|
+
*/
|
|
2894
|
+
readonly accelerationKmS2: Float64Array | undefined;
|
|
2895
|
+
/**
|
|
2896
|
+
* Epoch text.
|
|
2897
|
+
*/
|
|
2898
|
+
readonly epoch: string;
|
|
2899
|
+
/**
|
|
2900
|
+
* Position vector, kilometres, length-3 `Float64Array`.
|
|
2901
|
+
*/
|
|
2902
|
+
readonly positionKm: Float64Array;
|
|
2903
|
+
/**
|
|
2904
|
+
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
2905
|
+
*/
|
|
2906
|
+
readonly velocityKmS: Float64Array;
|
|
2907
|
+
}
|
|
2908
|
+
|
|
2909
|
+
/**
|
|
2910
|
+
* A canonical, format-agnostic CCSDS Orbit Mean-Elements Message.
|
|
2911
|
+
*/
|
|
2912
|
+
export class Omm {
|
|
2913
|
+
free(): void;
|
|
2914
|
+
[Symbol.dispose](): void;
|
|
2915
|
+
/**
|
|
2916
|
+
* Build an OMM. The eight leading arguments are required; `meta` carries the
|
|
2917
|
+
* optional fields (`ccsdsOmmVers`, `creationDate`, ... `bstar`,
|
|
2918
|
+
* `meanMotionDot`, `meanMotionDdot`).
|
|
2919
|
+
*/
|
|
2920
|
+
constructor(epoch: OmmEpoch, mean_motion: number, eccentricity: number, inclination_deg: number, ra_of_asc_node_deg: number, arg_of_pericenter_deg: number, mean_anomaly_deg: number, norad_cat_id: number, meta: any);
|
|
2921
|
+
/**
|
|
2922
|
+
* Encode this OMM to CCSDS/CelesTrak JSON text.
|
|
2923
|
+
*/
|
|
2924
|
+
toJsonString(): string;
|
|
2925
|
+
/**
|
|
2926
|
+
* Encode this OMM to CCSDS OMM KVN text.
|
|
2927
|
+
*/
|
|
2928
|
+
toKvnString(): string;
|
|
2929
|
+
/**
|
|
2930
|
+
* Encode this OMM to CCSDS OMM XML text.
|
|
2931
|
+
*/
|
|
2932
|
+
toXmlString(): string;
|
|
2933
|
+
/**
|
|
2934
|
+
* Argument of pericenter, degrees.
|
|
2935
|
+
*/
|
|
2936
|
+
readonly argOfPericenterDeg: number;
|
|
2937
|
+
/**
|
|
2938
|
+
* B* drag term.
|
|
2939
|
+
*/
|
|
2940
|
+
readonly bstar: number;
|
|
2941
|
+
/**
|
|
2942
|
+
* CCSDS OMM version string.
|
|
2943
|
+
*/
|
|
2944
|
+
readonly ccsdsOmmVers: string;
|
|
2945
|
+
/**
|
|
2946
|
+
* Center name.
|
|
2947
|
+
*/
|
|
2948
|
+
readonly centerName: string | undefined;
|
|
2949
|
+
/**
|
|
2950
|
+
* Classification type.
|
|
2951
|
+
*/
|
|
2952
|
+
readonly classificationType: string;
|
|
2953
|
+
/**
|
|
2954
|
+
* Creation date.
|
|
2955
|
+
*/
|
|
2956
|
+
readonly creationDate: string | undefined;
|
|
2957
|
+
/**
|
|
2958
|
+
* Eccentricity.
|
|
2959
|
+
*/
|
|
2960
|
+
readonly eccentricity: number;
|
|
2961
|
+
/**
|
|
2962
|
+
* Element set number.
|
|
2963
|
+
*/
|
|
2964
|
+
readonly elementSetNo: number;
|
|
2965
|
+
/**
|
|
2966
|
+
* SGP4 ephemeris type.
|
|
2967
|
+
*/
|
|
2968
|
+
readonly ephemerisType: number;
|
|
2969
|
+
/**
|
|
2970
|
+
* The epoch.
|
|
2971
|
+
*/
|
|
2972
|
+
readonly epoch: OmmEpoch;
|
|
2973
|
+
/**
|
|
2974
|
+
* Inclination, degrees.
|
|
2975
|
+
*/
|
|
2976
|
+
readonly inclinationDeg: number;
|
|
2977
|
+
/**
|
|
2978
|
+
* Mean anomaly, degrees.
|
|
2979
|
+
*/
|
|
2980
|
+
readonly meanAnomalyDeg: number;
|
|
2981
|
+
/**
|
|
2982
|
+
* Mean-element theory.
|
|
2983
|
+
*/
|
|
2984
|
+
readonly meanElementTheory: string | undefined;
|
|
2985
|
+
/**
|
|
2986
|
+
* Mean motion, rev/day.
|
|
2987
|
+
*/
|
|
2988
|
+
readonly meanMotion: number;
|
|
2989
|
+
/**
|
|
2990
|
+
* Second derivative of mean motion.
|
|
2991
|
+
*/
|
|
2992
|
+
readonly meanMotionDdot: number;
|
|
2993
|
+
/**
|
|
2994
|
+
* First derivative of mean motion.
|
|
2995
|
+
*/
|
|
2996
|
+
readonly meanMotionDot: number;
|
|
2997
|
+
/**
|
|
2998
|
+
* NORAD catalog number.
|
|
2999
|
+
*/
|
|
3000
|
+
readonly noradCatId: number;
|
|
3001
|
+
/**
|
|
3002
|
+
* Object id.
|
|
3003
|
+
*/
|
|
3004
|
+
readonly objectId: string | undefined;
|
|
3005
|
+
/**
|
|
3006
|
+
* Object name.
|
|
3007
|
+
*/
|
|
3008
|
+
readonly objectName: string | undefined;
|
|
3009
|
+
/**
|
|
3010
|
+
* Originator.
|
|
3011
|
+
*/
|
|
3012
|
+
readonly originator: string | undefined;
|
|
3013
|
+
/**
|
|
3014
|
+
* Right ascension of the ascending node, degrees.
|
|
3015
|
+
*/
|
|
3016
|
+
readonly raOfAscNodeDeg: number;
|
|
3017
|
+
/**
|
|
3018
|
+
* Reference frame.
|
|
3019
|
+
*/
|
|
3020
|
+
readonly refFrame: string | undefined;
|
|
3021
|
+
/**
|
|
1952
3022
|
* Revolution number at epoch.
|
|
1953
3023
|
*/
|
|
1954
3024
|
readonly revAtEpoch: bigint;
|
|
@@ -2003,6 +3073,359 @@ export class OmmEpoch {
|
|
|
2003
3073
|
readonly year: number;
|
|
2004
3074
|
}
|
|
2005
3075
|
|
|
3076
|
+
/**
|
|
3077
|
+
* A canonical, format-agnostic CCSDS Orbit Parameter Message parsed from KVN or
|
|
3078
|
+
* XML.
|
|
3079
|
+
*/
|
|
3080
|
+
export class Opm {
|
|
3081
|
+
free(): void;
|
|
3082
|
+
[Symbol.dispose](): void;
|
|
3083
|
+
/**
|
|
3084
|
+
* Build an OPM from its blocks. `keplerian`, `spacecraft`, and `covariance`
|
|
3085
|
+
* are optional (pass `undefined`); `maneuvers` is an array (possibly empty).
|
|
3086
|
+
* `meta` carries the optional header fields (`ccsdsOpmVers`, `creationDate`,
|
|
3087
|
+
* `originator`).
|
|
3088
|
+
*/
|
|
3089
|
+
constructor(metadata: OpmMetadata, state: OpmState, keplerian: OpmKeplerian | null | undefined, spacecraft: OpmSpacecraft | null | undefined, covariance: OpmCovariance | null | undefined, maneuvers: OpmManeuver[], meta: any);
|
|
3090
|
+
/**
|
|
3091
|
+
* Encode this OPM to CCSDS OPM KVN text.
|
|
3092
|
+
*/
|
|
3093
|
+
toKvnString(): string;
|
|
3094
|
+
/**
|
|
3095
|
+
* Encode this OPM to CCSDS OPM XML text.
|
|
3096
|
+
*/
|
|
3097
|
+
toXmlString(): string;
|
|
3098
|
+
/**
|
|
3099
|
+
* CCSDS OPM version string.
|
|
3100
|
+
*/
|
|
3101
|
+
readonly ccsdsOpmVers: string;
|
|
3102
|
+
/**
|
|
3103
|
+
* Covariance block, or `undefined`.
|
|
3104
|
+
*/
|
|
3105
|
+
readonly covariance: OpmCovariance | undefined;
|
|
3106
|
+
/**
|
|
3107
|
+
* Creation date.
|
|
3108
|
+
*/
|
|
3109
|
+
readonly creationDate: string | undefined;
|
|
3110
|
+
/**
|
|
3111
|
+
* Keplerian-elements block, or `undefined`.
|
|
3112
|
+
*/
|
|
3113
|
+
readonly keplerian: OpmKeplerian | undefined;
|
|
3114
|
+
/**
|
|
3115
|
+
* Maneuver blocks in message order.
|
|
3116
|
+
*/
|
|
3117
|
+
readonly maneuvers: OpmManeuver[];
|
|
3118
|
+
/**
|
|
3119
|
+
* Metadata block.
|
|
3120
|
+
*/
|
|
3121
|
+
readonly metadata: OpmMetadata;
|
|
3122
|
+
/**
|
|
3123
|
+
* Originator.
|
|
3124
|
+
*/
|
|
3125
|
+
readonly originator: string | undefined;
|
|
3126
|
+
/**
|
|
3127
|
+
* Spacecraft-parameters block, or `undefined`.
|
|
3128
|
+
*/
|
|
3129
|
+
readonly spacecraft: OpmSpacecraft | undefined;
|
|
3130
|
+
/**
|
|
3131
|
+
* Cartesian state vector.
|
|
3132
|
+
*/
|
|
3133
|
+
readonly state: OpmState;
|
|
3134
|
+
}
|
|
3135
|
+
|
|
3136
|
+
/**
|
|
3137
|
+
* Optional OPM 6x6 state covariance.
|
|
3138
|
+
*/
|
|
3139
|
+
export class OpmCovariance {
|
|
3140
|
+
free(): void;
|
|
3141
|
+
[Symbol.dispose](): void;
|
|
3142
|
+
/**
|
|
3143
|
+
* Build the covariance block. `matrix` is a length-36 row-major
|
|
3144
|
+
* `Float64Array` for the `[r, v]` state; it must be finite, symmetric, and
|
|
3145
|
+
* positive semidefinite. `covRefFrame` is the optional frame label.
|
|
3146
|
+
*/
|
|
3147
|
+
constructor(matrix: Float64Array, cov_ref_frame?: string | null);
|
|
3148
|
+
/**
|
|
3149
|
+
* Covariance reference-frame label, or `undefined`.
|
|
3150
|
+
*/
|
|
3151
|
+
readonly covRefFrame: string | undefined;
|
|
3152
|
+
/**
|
|
3153
|
+
* The 6x6 state covariance as a length-36 row-major `Float64Array`.
|
|
3154
|
+
*/
|
|
3155
|
+
readonly matrix: Float64Array;
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
/**
|
|
3159
|
+
* Optional OPM Keplerian-elements block.
|
|
3160
|
+
*/
|
|
3161
|
+
export class OpmKeplerian {
|
|
3162
|
+
free(): void;
|
|
3163
|
+
[Symbol.dispose](): void;
|
|
3164
|
+
/**
|
|
3165
|
+
* Build the Keplerian block. Supply exactly one of `trueAnomalyDeg` or
|
|
3166
|
+
* `meanAnomalyDeg`; throws a `TypeError` if neither or both are given.
|
|
3167
|
+
*/
|
|
3168
|
+
constructor(semi_major_axis_km: number, eccentricity: number, inclination_deg: number, ra_of_asc_node_deg: number, arg_of_pericenter_deg: number, gm_km3_s2: number, true_anomaly_deg?: number | null, mean_anomaly_deg?: number | null);
|
|
3169
|
+
/**
|
|
3170
|
+
* Argument of pericenter, degrees.
|
|
3171
|
+
*/
|
|
3172
|
+
readonly argOfPericenterDeg: number;
|
|
3173
|
+
/**
|
|
3174
|
+
* Eccentricity.
|
|
3175
|
+
*/
|
|
3176
|
+
readonly eccentricity: number;
|
|
3177
|
+
/**
|
|
3178
|
+
* Gravitational parameter, km^3/s^2.
|
|
3179
|
+
*/
|
|
3180
|
+
readonly gmKm3S2: number;
|
|
3181
|
+
/**
|
|
3182
|
+
* Inclination, degrees.
|
|
3183
|
+
*/
|
|
3184
|
+
readonly inclinationDeg: number;
|
|
3185
|
+
/**
|
|
3186
|
+
* Mean anomaly, degrees, or `undefined` when a true anomaly was supplied.
|
|
3187
|
+
*/
|
|
3188
|
+
readonly meanAnomalyDeg: number | undefined;
|
|
3189
|
+
/**
|
|
3190
|
+
* Right ascension of the ascending node, degrees.
|
|
3191
|
+
*/
|
|
3192
|
+
readonly raOfAscNodeDeg: number;
|
|
3193
|
+
/**
|
|
3194
|
+
* Semi-major axis, kilometres.
|
|
3195
|
+
*/
|
|
3196
|
+
readonly semiMajorAxisKm: number;
|
|
3197
|
+
/**
|
|
3198
|
+
* True anomaly, degrees, or `undefined` when a mean anomaly was supplied.
|
|
3199
|
+
*/
|
|
3200
|
+
readonly trueAnomalyDeg: number | undefined;
|
|
3201
|
+
}
|
|
3202
|
+
|
|
3203
|
+
/**
|
|
3204
|
+
* One OPM maneuver block. Every field is mandatory in CCSDS 502.0-B when a
|
|
3205
|
+
* maneuver is present.
|
|
3206
|
+
*/
|
|
3207
|
+
export class OpmManeuver {
|
|
3208
|
+
free(): void;
|
|
3209
|
+
[Symbol.dispose](): void;
|
|
3210
|
+
/**
|
|
3211
|
+
* Build a maneuver block. `dvKmS` is a length-3 `Float64Array` of the
|
|
3212
|
+
* delta-v in km/s.
|
|
3213
|
+
*/
|
|
3214
|
+
constructor(epoch_ignition: string, duration_s: number, delta_mass_kg: number, ref_frame: string, dv_km_s: Float64Array);
|
|
3215
|
+
/**
|
|
3216
|
+
* Change in mass, kilograms.
|
|
3217
|
+
*/
|
|
3218
|
+
readonly deltaMassKg: number;
|
|
3219
|
+
/**
|
|
3220
|
+
* Maneuver duration, seconds.
|
|
3221
|
+
*/
|
|
3222
|
+
readonly durationS: number;
|
|
3223
|
+
/**
|
|
3224
|
+
* Delta-v vector, km/s, length-3 `Float64Array`.
|
|
3225
|
+
*/
|
|
3226
|
+
readonly dvKmS: Float64Array;
|
|
3227
|
+
/**
|
|
3228
|
+
* Ignition epoch text.
|
|
3229
|
+
*/
|
|
3230
|
+
readonly epochIgnition: string;
|
|
3231
|
+
/**
|
|
3232
|
+
* Maneuver reference frame.
|
|
3233
|
+
*/
|
|
3234
|
+
readonly refFrame: string;
|
|
3235
|
+
}
|
|
3236
|
+
|
|
3237
|
+
/**
|
|
3238
|
+
* OPM metadata block: object identity, center, reference frame, and time system.
|
|
3239
|
+
*/
|
|
3240
|
+
export class OpmMetadata {
|
|
3241
|
+
free(): void;
|
|
3242
|
+
[Symbol.dispose](): void;
|
|
3243
|
+
/**
|
|
3244
|
+
* Build the OPM metadata block. Every field is mandatory in CCSDS 502.0-B.
|
|
3245
|
+
*/
|
|
3246
|
+
constructor(object_name: string, object_id: string, center_name: string, ref_frame: string, time_system: string);
|
|
3247
|
+
/**
|
|
3248
|
+
* Center name.
|
|
3249
|
+
*/
|
|
3250
|
+
readonly centerName: string;
|
|
3251
|
+
/**
|
|
3252
|
+
* Object id (COSPAR international designator).
|
|
3253
|
+
*/
|
|
3254
|
+
readonly objectId: string;
|
|
3255
|
+
/**
|
|
3256
|
+
* Object name.
|
|
3257
|
+
*/
|
|
3258
|
+
readonly objectName: string;
|
|
3259
|
+
/**
|
|
3260
|
+
* Reference frame.
|
|
3261
|
+
*/
|
|
3262
|
+
readonly refFrame: string;
|
|
3263
|
+
/**
|
|
3264
|
+
* Time system.
|
|
3265
|
+
*/
|
|
3266
|
+
readonly timeSystem: string;
|
|
3267
|
+
}
|
|
3268
|
+
|
|
3269
|
+
/**
|
|
3270
|
+
* Optional OPM spacecraft-parameters block. Every sub-field is individually
|
|
3271
|
+
* optional.
|
|
3272
|
+
*/
|
|
3273
|
+
export class OpmSpacecraft {
|
|
3274
|
+
free(): void;
|
|
3275
|
+
[Symbol.dispose](): void;
|
|
3276
|
+
/**
|
|
3277
|
+
* Build the spacecraft-parameters block. Pass `undefined` for absent fields.
|
|
3278
|
+
*/
|
|
3279
|
+
constructor(mass_kg?: number | null, solar_rad_area_m2?: number | null, solar_rad_coeff?: number | null, drag_area_m2?: number | null, drag_coeff?: number | null);
|
|
3280
|
+
/**
|
|
3281
|
+
* Drag area, square metres.
|
|
3282
|
+
*/
|
|
3283
|
+
readonly dragAreaM2: number | undefined;
|
|
3284
|
+
/**
|
|
3285
|
+
* Drag coefficient.
|
|
3286
|
+
*/
|
|
3287
|
+
readonly dragCoeff: number | undefined;
|
|
3288
|
+
/**
|
|
3289
|
+
* Mass, kilograms.
|
|
3290
|
+
*/
|
|
3291
|
+
readonly massKg: number | undefined;
|
|
3292
|
+
/**
|
|
3293
|
+
* Solar-radiation-pressure area, square metres.
|
|
3294
|
+
*/
|
|
3295
|
+
readonly solarRadAreaM2: number | undefined;
|
|
3296
|
+
/**
|
|
3297
|
+
* Solar-radiation-pressure coefficient.
|
|
3298
|
+
*/
|
|
3299
|
+
readonly solarRadCoeff: number | undefined;
|
|
3300
|
+
}
|
|
3301
|
+
|
|
3302
|
+
/**
|
|
3303
|
+
* OPM Cartesian state vector at the message epoch.
|
|
3304
|
+
*/
|
|
3305
|
+
export class OpmState {
|
|
3306
|
+
free(): void;
|
|
3307
|
+
[Symbol.dispose](): void;
|
|
3308
|
+
/**
|
|
3309
|
+
* Build the OPM state. `epoch` is carried as text; `positionKm` and
|
|
3310
|
+
* `velocityKmS` are length-3 `Float64Array`s in kilometres and km/s.
|
|
3311
|
+
*/
|
|
3312
|
+
constructor(epoch: string, position_km: Float64Array, velocity_km_s: Float64Array);
|
|
3313
|
+
/**
|
|
3314
|
+
* Epoch text.
|
|
3315
|
+
*/
|
|
3316
|
+
readonly epoch: string;
|
|
3317
|
+
/**
|
|
3318
|
+
* Position vector, kilometres, length-3 `Float64Array`.
|
|
3319
|
+
*/
|
|
3320
|
+
readonly positionKm: Float64Array;
|
|
3321
|
+
/**
|
|
3322
|
+
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
3323
|
+
*/
|
|
3324
|
+
readonly velocityKmS: Float64Array;
|
|
3325
|
+
}
|
|
3326
|
+
|
|
3327
|
+
/**
|
|
3328
|
+
* The result of [`parseTleFile`]: the satellites that parsed, plus a count of
|
|
3329
|
+
* complete records that were skipped because SGP4 initialization failed.
|
|
3330
|
+
*/
|
|
3331
|
+
export class ParsedTleFile {
|
|
3332
|
+
private constructor();
|
|
3333
|
+
free(): void;
|
|
3334
|
+
[Symbol.dispose](): void;
|
|
3335
|
+
/**
|
|
3336
|
+
* Number of satellites that parsed (length of `satellites`).
|
|
3337
|
+
*/
|
|
3338
|
+
readonly count: number;
|
|
3339
|
+
/**
|
|
3340
|
+
* The successfully parsed satellites, in file order, each as a `{ name, tle }`.
|
|
3341
|
+
*/
|
|
3342
|
+
readonly satellites: NamedTle[];
|
|
3343
|
+
/**
|
|
3344
|
+
* How many complete `(line 1, line 2)` records were found but skipped
|
|
3345
|
+
* because their element set failed SGP4 initialization.
|
|
3346
|
+
*/
|
|
3347
|
+
readonly skipped: number;
|
|
3348
|
+
}
|
|
3349
|
+
|
|
3350
|
+
/**
|
|
3351
|
+
* A long span represented by contiguous independently-fitted reduced-orbit
|
|
3352
|
+
* segments. Carries the fitted segments and the time scale they were fitted in;
|
|
3353
|
+
* evaluate and drift queries reuse that scale.
|
|
3354
|
+
*/
|
|
3355
|
+
export class PiecewiseOrbit {
|
|
3356
|
+
private constructor();
|
|
3357
|
+
free(): void;
|
|
3358
|
+
[Symbol.dispose](): void;
|
|
3359
|
+
/**
|
|
3360
|
+
* Evaluate the piecewise model against `truth` ECEF samples, flagging the
|
|
3361
|
+
* first epoch whose error exceeds `thresholdM`. Truth samples outside the
|
|
3362
|
+
* model span are skipped. Delegates to
|
|
3363
|
+
* `sidereon_core::orbit::piecewise_drift`.
|
|
3364
|
+
*/
|
|
3365
|
+
drift(truth: any, threshold_m: number): ReducedOrbitDrift;
|
|
3366
|
+
/**
|
|
3367
|
+
* Sample an SP3 product and evaluate this piecewise model against those
|
|
3368
|
+
* positions. Delegates to
|
|
3369
|
+
* `sidereon_core::orbit::drift_piecewise_reduced_orbit_source`.
|
|
3370
|
+
*/
|
|
3371
|
+
driftSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitDrift;
|
|
3372
|
+
/**
|
|
3373
|
+
* Sample a TLE/SGP4 source in UTC and evaluate this piecewise model against
|
|
3374
|
+
* those positions. Delegates to
|
|
3375
|
+
* `sidereon_core::orbit::drift_piecewise_reduced_orbit_source`.
|
|
3376
|
+
*/
|
|
3377
|
+
driftTle(tle: Tle, options: any): ReducedOrbitDrift;
|
|
3378
|
+
/**
|
|
3379
|
+
* Evaluate the piecewise model position at `query` in `frame` (`"ecef"` or
|
|
3380
|
+
* `"gcrs"`). Delegates to `sidereon_core::orbit::piecewise_position`.
|
|
3381
|
+
*/
|
|
3382
|
+
position(query: any, frame: string): Float64Array;
|
|
3383
|
+
/**
|
|
3384
|
+
* Evaluate the piecewise model position and velocity at `query` in `frame`.
|
|
3385
|
+
* Delegates to `sidereon_core::orbit::piecewise_position_velocity`.
|
|
3386
|
+
*/
|
|
3387
|
+
positionVelocity(query: any, frame: string): ReducedOrbitState;
|
|
3388
|
+
/**
|
|
3389
|
+
* Zero-based index of the segment covering `query`. Delegates to
|
|
3390
|
+
* `sidereon_core::orbit::select_piecewise_segment`. Throws an `Error` when
|
|
3391
|
+
* the epoch is outside coverage.
|
|
3392
|
+
*/
|
|
3393
|
+
segmentIndexAt(query: any): number;
|
|
3394
|
+
/**
|
|
3395
|
+
* Model label, `"circular_secular"` or `"eccentric_secular"`.
|
|
3396
|
+
*/
|
|
3397
|
+
readonly model: string;
|
|
3398
|
+
/**
|
|
3399
|
+
* Number of contiguous fitted segments.
|
|
3400
|
+
*/
|
|
3401
|
+
readonly segmentCount: number;
|
|
3402
|
+
/**
|
|
3403
|
+
* Rounded segment length used to tile the requested window, seconds.
|
|
3404
|
+
*/
|
|
3405
|
+
readonly segmentSeconds: bigint;
|
|
3406
|
+
}
|
|
3407
|
+
|
|
3408
|
+
/**
|
|
3409
|
+
* Source-backed piecewise reduced-orbit fit result.
|
|
3410
|
+
*/
|
|
3411
|
+
export class PiecewiseOrbitSourceFit {
|
|
3412
|
+
private constructor();
|
|
3413
|
+
free(): void;
|
|
3414
|
+
[Symbol.dispose](): void;
|
|
3415
|
+
/**
|
|
3416
|
+
* The fitted piecewise reduced-orbit model.
|
|
3417
|
+
*/
|
|
3418
|
+
readonly orbit: PiecewiseOrbit;
|
|
3419
|
+
/**
|
|
3420
|
+
* Number of samples requested from the source.
|
|
3421
|
+
*/
|
|
3422
|
+
readonly requestedSamples: number;
|
|
3423
|
+
/**
|
|
3424
|
+
* Number of source samples used by all fitted segments.
|
|
3425
|
+
*/
|
|
3426
|
+
readonly usedSamples: number;
|
|
3427
|
+
}
|
|
3428
|
+
|
|
2006
3429
|
/**
|
|
2007
3430
|
* Static integer-fixed PPP solution.
|
|
2008
3431
|
*/
|
|
@@ -2077,6 +3500,60 @@ export class PppFloatSolution {
|
|
|
2077
3500
|
readonly ztdResidualM: number | undefined;
|
|
2078
3501
|
}
|
|
2079
3502
|
|
|
3503
|
+
/**
|
|
3504
|
+
* Predicted GNSS observables for one satellite at one receive epoch. Every
|
|
3505
|
+
* field is computed by `sidereon_core::observables::predict`.
|
|
3506
|
+
*/
|
|
3507
|
+
export class PredictedObservables {
|
|
3508
|
+
private constructor();
|
|
3509
|
+
free(): void;
|
|
3510
|
+
[Symbol.dispose](): void;
|
|
3511
|
+
/**
|
|
3512
|
+
* Topocentric azimuth in `[0, 360)`, degrees.
|
|
3513
|
+
*/
|
|
3514
|
+
readonly azimuthDeg: number;
|
|
3515
|
+
/**
|
|
3516
|
+
* Doppler shift at the option carrier frequency, hertz.
|
|
3517
|
+
*/
|
|
3518
|
+
readonly dopplerHz: number;
|
|
3519
|
+
/**
|
|
3520
|
+
* Topocentric elevation, degrees.
|
|
3521
|
+
*/
|
|
3522
|
+
readonly elevationDeg: number;
|
|
3523
|
+
/**
|
|
3524
|
+
* Geometric range after optional Sagnac rotation, metres.
|
|
3525
|
+
*/
|
|
3526
|
+
readonly geometricRangeM: number;
|
|
3527
|
+
/**
|
|
3528
|
+
* Receiver-to-satellite line-of-sight unit vector in ECEF, `[x, y, z]`.
|
|
3529
|
+
*/
|
|
3530
|
+
readonly losUnit: Float64Array;
|
|
3531
|
+
/**
|
|
3532
|
+
* Range-rate line-of-sight projection, metres per second.
|
|
3533
|
+
*/
|
|
3534
|
+
readonly rangeRateMS: number;
|
|
3535
|
+
/**
|
|
3536
|
+
* Satellite clock offset at transmit time, seconds, or `undefined`.
|
|
3537
|
+
*/
|
|
3538
|
+
readonly satClockS: number | undefined;
|
|
3539
|
+
/**
|
|
3540
|
+
* Sagnac-rotated satellite ECEF position, metres, `[x, y, z]`.
|
|
3541
|
+
*/
|
|
3542
|
+
readonly satPosEcefM: Float64Array;
|
|
3543
|
+
/**
|
|
3544
|
+
* Sagnac-rotated satellite ECEF velocity, metres per second, `[vx, vy, vz]`.
|
|
3545
|
+
*/
|
|
3546
|
+
readonly satVelocityMS: Float64Array;
|
|
3547
|
+
/**
|
|
3548
|
+
* Transmit-time offset from receive time, rounded to microseconds.
|
|
3549
|
+
*/
|
|
3550
|
+
readonly transmitOffsetUs: bigint;
|
|
3551
|
+
/**
|
|
3552
|
+
* Transmit time as seconds since J2000.
|
|
3553
|
+
*/
|
|
3554
|
+
readonly transmitTimeJ2000S: number;
|
|
3555
|
+
}
|
|
3556
|
+
|
|
2080
3557
|
/**
|
|
2081
3558
|
* Reason a satellite was dropped from paired pseudorange combination.
|
|
2082
3559
|
*/
|
|
@@ -2100,57 +3577,187 @@ export enum PseudorangeDropReason {
|
|
|
2100
3577
|
}
|
|
2101
3578
|
|
|
2102
3579
|
/**
|
|
2103
|
-
* Flattened pseudorange rows from one RINEX OBS epoch. `satellites` is
|
|
2104
|
-
* row-aligned with `rangesM`; ranges are metres.
|
|
3580
|
+
* Flattened pseudorange rows from one RINEX OBS epoch. `satellites` is
|
|
3581
|
+
* row-aligned with `rangesM`; ranges are metres.
|
|
3582
|
+
*/
|
|
3583
|
+
export class PseudorangeSeries {
|
|
3584
|
+
private constructor();
|
|
3585
|
+
free(): void;
|
|
3586
|
+
[Symbol.dispose](): void;
|
|
3587
|
+
/**
|
|
3588
|
+
* Number of rows.
|
|
3589
|
+
*/
|
|
3590
|
+
readonly length: number;
|
|
3591
|
+
/**
|
|
3592
|
+
* Pseudorange values, metres, as a `Float64Array`.
|
|
3593
|
+
*/
|
|
3594
|
+
readonly rangesM: Float64Array;
|
|
3595
|
+
/**
|
|
3596
|
+
* Satellite tokens, row-aligned with `rangesM`.
|
|
3597
|
+
*/
|
|
3598
|
+
readonly satellites: string[];
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
/**
|
|
3602
|
+
* RAIM weighting mode: either unit weights or per-satellite inverse-variance
|
|
3603
|
+
* weights (missing satellites default to unit weight).
|
|
3604
|
+
*/
|
|
3605
|
+
export class RaimWeights {
|
|
3606
|
+
private constructor();
|
|
3607
|
+
free(): void;
|
|
3608
|
+
[Symbol.dispose](): void;
|
|
3609
|
+
/**
|
|
3610
|
+
* Per-satellite inverse-variance weights. `weights` must be positive and
|
|
3611
|
+
* finite and the same length as `satelliteIds`. Throws a `TypeError` on a
|
|
3612
|
+
* length mismatch and a `RangeError` on a non-positive weight.
|
|
3613
|
+
*/
|
|
3614
|
+
static bySatellite(satellite_ids: string[], weights: Float64Array): RaimWeights;
|
|
3615
|
+
/**
|
|
3616
|
+
* Unit weights, equivalent to sigma = 1 m for every satellite.
|
|
3617
|
+
*/
|
|
3618
|
+
static unit(): RaimWeights;
|
|
3619
|
+
/**
|
|
3620
|
+
* True when all satellites use unit weight.
|
|
3621
|
+
*/
|
|
3622
|
+
readonly isUnit: boolean;
|
|
3623
|
+
/**
|
|
3624
|
+
* Satellite tokens for per-satellite weights, sorted by token.
|
|
3625
|
+
*/
|
|
3626
|
+
readonly satelliteIds: string[];
|
|
3627
|
+
/**
|
|
3628
|
+
* Inverse-variance weights as a `Float64Array`, sorted by satellite token.
|
|
3629
|
+
*/
|
|
3630
|
+
readonly weights: Float64Array;
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
/**
|
|
3634
|
+
* A fitted compact reduced-orbit model. Carries the fitted elements and the
|
|
3635
|
+
* time scale they were fitted in; evaluate and drift queries reuse that scale.
|
|
3636
|
+
*/
|
|
3637
|
+
export class ReducedOrbit {
|
|
3638
|
+
private constructor();
|
|
3639
|
+
free(): void;
|
|
3640
|
+
[Symbol.dispose](): void;
|
|
3641
|
+
/**
|
|
3642
|
+
* Evaluate the model against `truth` ECEF samples, flagging the first epoch
|
|
3643
|
+
* whose error exceeds `thresholdM`. Delegates to
|
|
3644
|
+
* `sidereon_core::orbit::drift`.
|
|
3645
|
+
*/
|
|
3646
|
+
drift(truth: any, threshold_m: number): ReducedOrbitDrift;
|
|
3647
|
+
/**
|
|
3648
|
+
* Sample an SP3 product and evaluate this model against those positions.
|
|
3649
|
+
* Delegates to `sidereon_core::orbit::drift_reduced_orbit_source`.
|
|
3650
|
+
*/
|
|
3651
|
+
driftSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitDrift;
|
|
3652
|
+
/**
|
|
3653
|
+
* Sample a TLE/SGP4 source in UTC and evaluate this model against those
|
|
3654
|
+
* positions. Delegates to
|
|
3655
|
+
* `sidereon_core::orbit::drift_reduced_orbit_source`.
|
|
3656
|
+
*/
|
|
3657
|
+
driftTle(tle: Tle, options: any): ReducedOrbitDrift;
|
|
3658
|
+
/**
|
|
3659
|
+
* Evaluate the model position at `query` in `frame` (`"ecef"` or
|
|
3660
|
+
* `"gcrs"`). Delegates to `sidereon_core::orbit::position`.
|
|
3661
|
+
*/
|
|
3662
|
+
position(query: any, frame: string): Float64Array;
|
|
3663
|
+
/**
|
|
3664
|
+
* Evaluate the model position and velocity at `query` in `frame`.
|
|
3665
|
+
* Delegates to `sidereon_core::orbit::position_velocity`.
|
|
3666
|
+
*/
|
|
3667
|
+
positionVelocity(query: any, frame: string): ReducedOrbitState;
|
|
3668
|
+
/**
|
|
3669
|
+
* Fitted mean elements as a `Float64Array`:
|
|
3670
|
+
* `[a_m, e, i, raan, raanRate, raanRateJ2, argLat, n]` for the circular
|
|
3671
|
+
* model, with `[h, k, argPerigee]` appended for the eccentric model.
|
|
3672
|
+
*/
|
|
3673
|
+
readonly elements: Float64Array;
|
|
3674
|
+
/**
|
|
3675
|
+
* Fit residual maximum over the samples, metres.
|
|
3676
|
+
*/
|
|
3677
|
+
readonly maxM: number;
|
|
3678
|
+
/**
|
|
3679
|
+
* Model label, `"circular_secular"` or `"eccentric_secular"`.
|
|
3680
|
+
*/
|
|
3681
|
+
readonly model: string;
|
|
3682
|
+
/**
|
|
3683
|
+
* Number of samples used in the fit.
|
|
3684
|
+
*/
|
|
3685
|
+
readonly nSamples: number;
|
|
3686
|
+
/**
|
|
3687
|
+
* Fit residual RMS over the samples, metres.
|
|
3688
|
+
*/
|
|
3689
|
+
readonly rmsM: number;
|
|
3690
|
+
}
|
|
3691
|
+
|
|
3692
|
+
/**
|
|
3693
|
+
* Model-vs-truth drift report from `drift`.
|
|
3694
|
+
*/
|
|
3695
|
+
export class ReducedOrbitDrift {
|
|
3696
|
+
private constructor();
|
|
3697
|
+
free(): void;
|
|
3698
|
+
[Symbol.dispose](): void;
|
|
3699
|
+
/**
|
|
3700
|
+
* Per-epoch position error magnitudes, metres, in input order.
|
|
3701
|
+
*/
|
|
3702
|
+
readonly errorsM: Float64Array;
|
|
3703
|
+
/**
|
|
3704
|
+
* Maximum error over the horizon, metres.
|
|
3705
|
+
*/
|
|
3706
|
+
readonly maxM: number;
|
|
3707
|
+
/**
|
|
3708
|
+
* Number of samples requested from the source or supplied by the caller.
|
|
3709
|
+
*/
|
|
3710
|
+
readonly requestedSamples: number;
|
|
3711
|
+
/**
|
|
3712
|
+
* Root-mean-square error over the horizon, metres.
|
|
3713
|
+
*/
|
|
3714
|
+
readonly rmsM: number;
|
|
3715
|
+
/**
|
|
3716
|
+
* Index of the first epoch whose error exceeds the threshold, or `-1`.
|
|
3717
|
+
*/
|
|
3718
|
+
readonly thresholdIndex: bigint;
|
|
3719
|
+
/**
|
|
3720
|
+
* Number of samples evaluated in the drift report.
|
|
3721
|
+
*/
|
|
3722
|
+
readonly usedSamples: number;
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3725
|
+
/**
|
|
3726
|
+
* Source-backed reduced-orbit fit result.
|
|
2105
3727
|
*/
|
|
2106
|
-
export class
|
|
3728
|
+
export class ReducedOrbitSourceFit {
|
|
2107
3729
|
private constructor();
|
|
2108
3730
|
free(): void;
|
|
2109
3731
|
[Symbol.dispose](): void;
|
|
2110
3732
|
/**
|
|
2111
|
-
*
|
|
3733
|
+
* The fitted reduced-orbit model.
|
|
2112
3734
|
*/
|
|
2113
|
-
readonly
|
|
3735
|
+
readonly orbit: ReducedOrbit;
|
|
2114
3736
|
/**
|
|
2115
|
-
*
|
|
3737
|
+
* Number of samples requested from the source.
|
|
2116
3738
|
*/
|
|
2117
|
-
readonly
|
|
3739
|
+
readonly requestedSamples: number;
|
|
2118
3740
|
/**
|
|
2119
|
-
*
|
|
3741
|
+
* Number of source samples used by the fit.
|
|
2120
3742
|
*/
|
|
2121
|
-
readonly
|
|
3743
|
+
readonly usedSamples: number;
|
|
2122
3744
|
}
|
|
2123
3745
|
|
|
2124
3746
|
/**
|
|
2125
|
-
*
|
|
2126
|
-
* weights (missing satellites default to unit weight).
|
|
3747
|
+
* Receiver model position and velocity from `positionVelocity`.
|
|
2127
3748
|
*/
|
|
2128
|
-
export class
|
|
3749
|
+
export class ReducedOrbitState {
|
|
2129
3750
|
private constructor();
|
|
2130
3751
|
free(): void;
|
|
2131
3752
|
[Symbol.dispose](): void;
|
|
2132
3753
|
/**
|
|
2133
|
-
*
|
|
2134
|
-
* finite and the same length as `satelliteIds`. Throws a `TypeError` on a
|
|
2135
|
-
* length mismatch and a `RangeError` on a non-positive weight.
|
|
2136
|
-
*/
|
|
2137
|
-
static bySatellite(satellite_ids: string[], weights: Float64Array): RaimWeights;
|
|
2138
|
-
/**
|
|
2139
|
-
* Unit weights, equivalent to sigma = 1 m for every satellite.
|
|
2140
|
-
*/
|
|
2141
|
-
static unit(): RaimWeights;
|
|
2142
|
-
/**
|
|
2143
|
-
* True when all satellites use unit weight.
|
|
2144
|
-
*/
|
|
2145
|
-
readonly isUnit: boolean;
|
|
2146
|
-
/**
|
|
2147
|
-
* Satellite tokens for per-satellite weights, sorted by token.
|
|
3754
|
+
* Model position `[x, y, z]`, metres.
|
|
2148
3755
|
*/
|
|
2149
|
-
readonly
|
|
3756
|
+
readonly positionM: Float64Array;
|
|
2150
3757
|
/**
|
|
2151
|
-
*
|
|
3758
|
+
* Model velocity `[vx, vy, vz]`, metres per second.
|
|
2152
3759
|
*/
|
|
2153
|
-
readonly
|
|
3760
|
+
readonly velocityMS: Float64Array;
|
|
2154
3761
|
}
|
|
2155
3762
|
|
|
2156
3763
|
/**
|
|
@@ -2174,6 +3781,12 @@ export class RinexClock {
|
|
|
2174
3781
|
* One satellite's clock series, or `undefined` if the satellite is absent.
|
|
2175
3782
|
*/
|
|
2176
3783
|
seriesFor(satellite_id: string): ClockSeries | undefined;
|
|
3784
|
+
/**
|
|
3785
|
+
* Serialize to standard RINEX clock text. Deterministic: the same product
|
|
3786
|
+
* always produces byte-identical text, and re-parsing the output reproduces
|
|
3787
|
+
* the same time scale and per-satellite bias series.
|
|
3788
|
+
*/
|
|
3789
|
+
toRinexString(): string;
|
|
2177
3790
|
/**
|
|
2178
3791
|
* Total number of parsed satellite clock samples.
|
|
2179
3792
|
*/
|
|
@@ -2219,6 +3832,12 @@ export class RinexObs {
|
|
|
2219
3832
|
* Extract single-frequency pseudoranges for one epoch.
|
|
2220
3833
|
*/
|
|
2221
3834
|
pseudoranges(epoch_index: number, policy?: SignalPolicy | null): PseudorangeSeries;
|
|
3835
|
+
/**
|
|
3836
|
+
* Serialize to standard RINEX 3 observation text. Deterministic: the same
|
|
3837
|
+
* product always produces byte-identical text, and re-parsing the output
|
|
3838
|
+
* reproduces the same header and epochs.
|
|
3839
|
+
*/
|
|
3840
|
+
toRinexString(): string;
|
|
2222
3841
|
/**
|
|
2223
3842
|
* Number of parsed epoch records.
|
|
2224
3843
|
*/
|
|
@@ -2456,6 +4075,21 @@ export class Sp3 {
|
|
|
2456
4075
|
private constructor();
|
|
2457
4076
|
free(): void;
|
|
2458
4077
|
[Symbol.dispose](): void;
|
|
4078
|
+
/**
|
|
4079
|
+
* Return a copy of `other` with its clocks shifted onto this product's
|
|
4080
|
+
* clock datum. Epochs without an offset estimate are left unchanged.
|
|
4081
|
+
* Delegates to `sidereon_core::ephemeris::align_clock_reference`.
|
|
4082
|
+
*/
|
|
4083
|
+
alignClockReference(other: Sp3, min_common?: number | null): Sp3;
|
|
4084
|
+
/**
|
|
4085
|
+
* Estimate `other`'s per-epoch common clock offset relative to this product.
|
|
4086
|
+
*
|
|
4087
|
+
* The result is one row per matched epoch with enough common clocked
|
|
4088
|
+
* satellites. Subtract `offsetS` from `other` clocks to put them on this
|
|
4089
|
+
* product's clock datum. Delegates to
|
|
4090
|
+
* `sidereon_core::ephemeris::clock_reference_offset`.
|
|
4091
|
+
*/
|
|
4092
|
+
clockReferenceOffset(other: Sp3, min_common?: number | null): Sp3ClockReferenceOffset[];
|
|
2459
4093
|
/**
|
|
2460
4094
|
* Compute DGNSS pseudorange corrections from a surveyed base station.
|
|
2461
4095
|
*
|
|
@@ -2502,6 +4136,16 @@ export class Sp3 {
|
|
|
2502
4136
|
* a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
2503
4137
|
*/
|
|
2504
4138
|
solveSpp(request: any): SppSolution;
|
|
4139
|
+
/**
|
|
4140
|
+
* Solve a batch of independent SPP epochs against this ephemeris in one call.
|
|
4141
|
+
*
|
|
4142
|
+
* `epochs` is an array of SPP request objects (the `SppRequest` shape) and
|
|
4143
|
+
* `options` the shared `{ withGeodetic?, maxPdop?, coarseSearchSeeds? }`
|
|
4144
|
+
* applied to every epoch. Returns an `SppBatchSolution` whose per-epoch
|
|
4145
|
+
* results are index-aligned to `epochs`; each epoch independently converged
|
|
4146
|
+
* or failed. Delegates to the serial reference batch kernel.
|
|
4147
|
+
*/
|
|
4148
|
+
solveSppBatch(epochs: any, options: any): SppBatchSolution;
|
|
2505
4149
|
/**
|
|
2506
4150
|
* The exact parsed state of `satellite` at record `epochIndex` (no
|
|
2507
4151
|
* interpolation). Throws a `RangeError` past the last epoch and a
|
|
@@ -2523,6 +4167,74 @@ export class Sp3 {
|
|
|
2523
4167
|
readonly satellites: string[];
|
|
2524
4168
|
}
|
|
2525
4169
|
|
|
4170
|
+
/**
|
|
4171
|
+
* Per-(epoch, satellite) agreement statistics for one accepted merged cell:
|
|
4172
|
+
* how tightly the consensus sources clustered about the combined value.
|
|
4173
|
+
*/
|
|
4174
|
+
export class Sp3AgreementMetric {
|
|
4175
|
+
private constructor();
|
|
4176
|
+
free(): void;
|
|
4177
|
+
[Symbol.dispose](): void;
|
|
4178
|
+
/**
|
|
4179
|
+
* Largest absolute clock deviation from the combined clock, seconds;
|
|
4180
|
+
* `undefined` when the cell carries no clock.
|
|
4181
|
+
*/
|
|
4182
|
+
readonly clockMaxS: number | undefined;
|
|
4183
|
+
/**
|
|
4184
|
+
* Number of sources in the accepted clock consensus (0 when the cell
|
|
4185
|
+
* carries no clock).
|
|
4186
|
+
*/
|
|
4187
|
+
readonly clockMembers: number;
|
|
4188
|
+
/**
|
|
4189
|
+
* RMS of the consensus members' deviation from the combined clock, seconds;
|
|
4190
|
+
* `undefined` when the cell carries no clock.
|
|
4191
|
+
*/
|
|
4192
|
+
readonly clockRmsS: number | undefined;
|
|
4193
|
+
/**
|
|
4194
|
+
* Cell epoch as seconds since J2000 in the product time scale.
|
|
4195
|
+
*/
|
|
4196
|
+
readonly epochJ2000Seconds: number;
|
|
4197
|
+
/**
|
|
4198
|
+
* Largest 3D distance of any consensus member from the combined position,
|
|
4199
|
+
* metres.
|
|
4200
|
+
*/
|
|
4201
|
+
readonly positionMaxM: number;
|
|
4202
|
+
/**
|
|
4203
|
+
* Number of sources in the accepted position consensus (>= 1).
|
|
4204
|
+
*/
|
|
4205
|
+
readonly positionMembers: number;
|
|
4206
|
+
/**
|
|
4207
|
+
* RMS of the consensus members' 3D distance from the combined position,
|
|
4208
|
+
* metres (zero for a single-source cell).
|
|
4209
|
+
*/
|
|
4210
|
+
readonly positionRmsM: number;
|
|
4211
|
+
/**
|
|
4212
|
+
* Satellite token, e.g. `"G01"`.
|
|
4213
|
+
*/
|
|
4214
|
+
readonly satellite: string;
|
|
4215
|
+
}
|
|
4216
|
+
|
|
4217
|
+
/**
|
|
4218
|
+
* One epoch's common clock offset between two SP3 products.
|
|
4219
|
+
*/
|
|
4220
|
+
export class Sp3ClockReferenceOffset {
|
|
4221
|
+
private constructor();
|
|
4222
|
+
free(): void;
|
|
4223
|
+
[Symbol.dispose](): void;
|
|
4224
|
+
/**
|
|
4225
|
+
* Matched epoch as seconds since J2000 in the product time scale.
|
|
4226
|
+
*/
|
|
4227
|
+
readonly epochJ2000Seconds: number;
|
|
4228
|
+
/**
|
|
4229
|
+
* `other - reference` clock datum, seconds.
|
|
4230
|
+
*/
|
|
4231
|
+
readonly offsetS: number;
|
|
4232
|
+
/**
|
|
4233
|
+
* Number of satellites used in the median offset estimate.
|
|
4234
|
+
*/
|
|
4235
|
+
readonly satellites: number;
|
|
4236
|
+
}
|
|
4237
|
+
|
|
2526
4238
|
/**
|
|
2527
4239
|
* A batch of interpolated SP3 states.
|
|
2528
4240
|
*/
|
|
@@ -2574,6 +4286,13 @@ export class Sp3MergeReport {
|
|
|
2574
4286
|
private constructor();
|
|
2575
4287
|
free(): void;
|
|
2576
4288
|
[Symbol.dispose](): void;
|
|
4289
|
+
/**
|
|
4290
|
+
* Per-(epoch, satellite) agreement statistics for every accepted cell, in
|
|
4291
|
+
* output (epoch, then satellite) order — one entry per cell written to the
|
|
4292
|
+
* merged product.
|
|
4293
|
+
*/
|
|
4294
|
+
readonly agreement: Sp3AgreementMetric[];
|
|
4295
|
+
readonly agreementCount: number;
|
|
2577
4296
|
readonly positionOutlierCount: number;
|
|
2578
4297
|
/**
|
|
2579
4298
|
* Cells where an accepted consensus rejected source outliers.
|
|
@@ -2672,6 +4391,29 @@ export class Sp3State {
|
|
|
2672
4391
|
readonly velocityMS: Float64Array | undefined;
|
|
2673
4392
|
}
|
|
2674
4393
|
|
|
4394
|
+
/**
|
|
4395
|
+
* Canonical quiet-Sun space-weather indices for NRLMSISE-00, mirrored from the
|
|
4396
|
+
* core so a JS caller can pass moderate-activity defaults to [`atmosphereDensity`]
|
|
4397
|
+
* without re-deriving the magic numbers.
|
|
4398
|
+
*/
|
|
4399
|
+
export class SpaceWeatherDefaults {
|
|
4400
|
+
private constructor();
|
|
4401
|
+
free(): void;
|
|
4402
|
+
[Symbol.dispose](): void;
|
|
4403
|
+
/**
|
|
4404
|
+
* Daily magnetic Ap index.
|
|
4405
|
+
*/
|
|
4406
|
+
readonly ap: number;
|
|
4407
|
+
/**
|
|
4408
|
+
* Daily F10.7 solar radio flux.
|
|
4409
|
+
*/
|
|
4410
|
+
readonly f107: number;
|
|
4411
|
+
/**
|
|
4412
|
+
* 81-day centred F10.7 average.
|
|
4413
|
+
*/
|
|
4414
|
+
readonly f107a: number;
|
|
4415
|
+
}
|
|
4416
|
+
|
|
2675
4417
|
/**
|
|
2676
4418
|
* A parsed in-memory JPL/NAIF SPK kernel.
|
|
2677
4419
|
*
|
|
@@ -2790,6 +4532,38 @@ export class SpkState {
|
|
|
2790
4532
|
readonly velocityKmS: Float64Array | undefined;
|
|
2791
4533
|
}
|
|
2792
4534
|
|
|
4535
|
+
/**
|
|
4536
|
+
* The per-epoch results of a batch SPP solve, index-aligned to the input epochs.
|
|
4537
|
+
* Each epoch independently either converged to a solution or failed; query an
|
|
4538
|
+
* epoch with [`SppBatchSolution.isOk`] / [`SppBatchSolution.solution`] /
|
|
4539
|
+
* [`SppBatchSolution.error`].
|
|
4540
|
+
*/
|
|
4541
|
+
export class SppBatchSolution {
|
|
4542
|
+
private constructor();
|
|
4543
|
+
free(): void;
|
|
4544
|
+
[Symbol.dispose](): void;
|
|
4545
|
+
/**
|
|
4546
|
+
* The solve-failure message for epoch `index`, or `undefined` when the epoch
|
|
4547
|
+
* converged. Throws a `RangeError` for an out-of-range index.
|
|
4548
|
+
*/
|
|
4549
|
+
error(index: number): string | undefined;
|
|
4550
|
+
/**
|
|
4551
|
+
* Whether epoch `index` converged to a solution. Throws a `RangeError` for
|
|
4552
|
+
* an out-of-range index.
|
|
4553
|
+
*/
|
|
4554
|
+
isOk(index: number): boolean;
|
|
4555
|
+
/**
|
|
4556
|
+
* The solution for epoch `index`. Throws a `RangeError` for an out-of-range
|
|
4557
|
+
* index and an `Error` carrying that epoch's solve-failure message when the
|
|
4558
|
+
* epoch did not converge (check [`SppBatchSolution.isOk`] first).
|
|
4559
|
+
*/
|
|
4560
|
+
solution(index: number): SppSolution;
|
|
4561
|
+
/**
|
|
4562
|
+
* Number of epochs in the batch (equals the input epoch count).
|
|
4563
|
+
*/
|
|
4564
|
+
readonly count: number;
|
|
4565
|
+
}
|
|
4566
|
+
|
|
2793
4567
|
/**
|
|
2794
4568
|
* The result of an SPP solve.
|
|
2795
4569
|
*/
|
|
@@ -2797,6 +4571,12 @@ export class SppSolution {
|
|
|
2797
4571
|
private constructor();
|
|
2798
4572
|
free(): void;
|
|
2799
4573
|
[Symbol.dispose](): void;
|
|
4574
|
+
/**
|
|
4575
|
+
* Dilution-of-precision scalars (GDOP/PDOP/HDOP/VDOP/TDOP) from the
|
|
4576
|
+
* converged geometry, or `undefined` when the converged geometry is
|
|
4577
|
+
* rank-deficient. The same `Dop` produced by [`gnssDop`](crate::gnss_dop).
|
|
4578
|
+
*/
|
|
4579
|
+
readonly dop: Dop | undefined;
|
|
2800
4580
|
/**
|
|
2801
4581
|
* `[latRad, lonRad, heightM]` as a `Float64Array` if the solve was asked
|
|
2802
4582
|
* for geodetic output, otherwise `undefined`.
|
|
@@ -2814,6 +4594,13 @@ export class SppSolution {
|
|
|
2814
4594
|
* Receiver clock bias, seconds.
|
|
2815
4595
|
*/
|
|
2816
4596
|
readonly rxClockS: number;
|
|
4597
|
+
/**
|
|
4598
|
+
* Per-constellation time (clock) DOP as a `{ system, tdop }[]`, one entry
|
|
4599
|
+
* per GNSS in the solve in ascending system order (the same order as the
|
|
4600
|
+
* per-system clocks). The first entry's `tdop` equals the reference clock's
|
|
4601
|
+
* `dop.tdop`. Empty when the converged geometry is rank-deficient.
|
|
4602
|
+
*/
|
|
4603
|
+
readonly systemTdops: any;
|
|
2817
4604
|
/**
|
|
2818
4605
|
* Satellite tokens used in the accepted solution, ascending.
|
|
2819
4606
|
*/
|
|
@@ -2893,6 +4680,14 @@ export enum TimeScale {
|
|
|
2893
4680
|
* BeiDou Time.
|
|
2894
4681
|
*/
|
|
2895
4682
|
Bdt = 6,
|
|
4683
|
+
/**
|
|
4684
|
+
* GLONASS system time (UTC(SU)-based, leap-second carrying).
|
|
4685
|
+
*/
|
|
4686
|
+
Glonasst = 7,
|
|
4687
|
+
/**
|
|
4688
|
+
* QZSS system time (steered to GPST).
|
|
4689
|
+
*/
|
|
4690
|
+
Qzsst = 8,
|
|
2896
4691
|
}
|
|
2897
4692
|
|
|
2898
4693
|
/**
|
|
@@ -2908,6 +4703,14 @@ export class Tle {
|
|
|
2908
4703
|
* an end at or before the start.
|
|
2909
4704
|
*/
|
|
2910
4705
|
findPasses(station: GroundStation, start_unix_us: bigint, end_unix_us: bigint, elevation_mask_deg?: number | null, step_seconds?: number | null, time_tolerance_s?: number | null): SatellitePass[];
|
|
4706
|
+
/**
|
|
4707
|
+
* Sub-satellite (ground-track) WGS84 geodetic points over a `BigInt64Array`
|
|
4708
|
+
* of unix-microsecond epochs. For each epoch the satellite is propagated to
|
|
4709
|
+
* TEME and reduced TEME->GCRS->ECEF->geodetic by the engine's own transforms,
|
|
4710
|
+
* honoring this `Tle`'s opsmode. Throws an `Error` on propagation or frame
|
|
4711
|
+
* failure.
|
|
4712
|
+
*/
|
|
4713
|
+
groundTrack(epochs_unix_us: BigInt64Array): GroundTrack;
|
|
2911
4714
|
/**
|
|
2912
4715
|
* Topocentric azimuth/elevation/range from `station` over a
|
|
2913
4716
|
* `BigInt64Array` of unix-microsecond epochs. Throws an `Error` on failure.
|
|
@@ -3132,6 +4935,38 @@ export class VisibilitySeries {
|
|
|
3132
4935
|
readonly visible: Uint8Array;
|
|
3133
4936
|
}
|
|
3134
4937
|
|
|
4938
|
+
/**
|
|
4939
|
+
* One satellite visible above the elevation mask at a single instant, from
|
|
4940
|
+
* [`visibleFromSatellites`].
|
|
4941
|
+
*/
|
|
4942
|
+
export class VisibleSatellite {
|
|
4943
|
+
private constructor();
|
|
4944
|
+
free(): void;
|
|
4945
|
+
[Symbol.dispose](): void;
|
|
4946
|
+
/**
|
|
4947
|
+
* Topocentric azimuth, degrees clockwise from north.
|
|
4948
|
+
*/
|
|
4949
|
+
readonly azimuthDeg: number;
|
|
4950
|
+
/**
|
|
4951
|
+
* The caller-supplied identity (the `ids[i]` paired with this satellite):
|
|
4952
|
+
* a NORAD catalog number, a name, or whatever the caller chose.
|
|
4953
|
+
*/
|
|
4954
|
+
readonly catalogNumber: string;
|
|
4955
|
+
/**
|
|
4956
|
+
* Topocentric elevation, degrees above the horizon.
|
|
4957
|
+
*/
|
|
4958
|
+
readonly elevationDeg: number;
|
|
4959
|
+
/**
|
|
4960
|
+
* TEME position of the satellite at the instant, km, as a length-3
|
|
4961
|
+
* `Float64Array` `[x, y, z]`.
|
|
4962
|
+
*/
|
|
4963
|
+
readonly positionKm: Float64Array;
|
|
4964
|
+
/**
|
|
4965
|
+
* Slant range from the ground station, kilometres.
|
|
4966
|
+
*/
|
|
4967
|
+
readonly rangeKm: number;
|
|
4968
|
+
}
|
|
4969
|
+
|
|
3135
4970
|
/**
|
|
3136
4971
|
* WGS84 receiver geodetic coordinates (radians, metres) for DOP.
|
|
3137
4972
|
*/
|
|
@@ -3180,6 +5015,40 @@ export class ZenithDelay {
|
|
|
3180
5015
|
*/
|
|
3181
5016
|
export function acquire(samples: Float64Array, prn: bigint, options: any): AcquisitionResult;
|
|
3182
5017
|
|
|
5018
|
+
/**
|
|
5019
|
+
* Evaluate NRLMSISE-00 neutral-atmosphere density and temperature.
|
|
5020
|
+
*
|
|
5021
|
+
* `latDeg` / `lonDeg` are geodetic degrees, `altKm` geodetic altitude in
|
|
5022
|
+
* kilometres, `year` / `doy` the UT year and day-of-year (1-366), `sec` the
|
|
5023
|
+
* seconds-in-day, and `f107` / `f107a` / `ap` the space-weather indices (daily
|
|
5024
|
+
* F10.7, 81-day centred F10.7 average, and daily magnetic Ap). The local solar
|
|
5025
|
+
* time is derived in the core (`sec/3600 + lonDeg/15`). Delegates to
|
|
5026
|
+
* `sidereon_core::astro::atmosphere::nrlmsise00_with_lst` with `lst = None`, so
|
|
5027
|
+
* the core derives the solar time under its default flags.
|
|
5028
|
+
*/
|
|
5029
|
+
export function atmosphereDensity(lat_deg: number, lon_deg: number, alt_km: number, year: number, doy: number, sec: number, f107: number, f107a: number, ap: number): AtmosphereDensity;
|
|
5030
|
+
|
|
5031
|
+
/**
|
|
5032
|
+
* The canonical quiet-Sun space-weather defaults for NRLMSISE-00. Delegates to
|
|
5033
|
+
* `sidereon_core::astro::atmosphere::{DEFAULT_F107, DEFAULT_F107A, DEFAULT_AP}`.
|
|
5034
|
+
*/
|
|
5035
|
+
export function atmosphereSpaceWeatherDefaults(): SpaceWeatherDefaults;
|
|
5036
|
+
|
|
5037
|
+
/**
|
|
5038
|
+
* Resolve integer ambiguities with a bounded lattice search.
|
|
5039
|
+
*
|
|
5040
|
+
* `floatCycles` and `covariance` match [`lambdaIlsSearch`]. `radius` is the
|
|
5041
|
+
* per-ambiguity integer search half-width (the lattice spans `radius` integers
|
|
5042
|
+
* either side of each rounded float), `candidateLimit` caps the number of
|
|
5043
|
+
* lattice points evaluated before the search aborts, and `ratioThreshold` is the
|
|
5044
|
+
* ratio-test acceptance threshold. Correct in the weakly-correlated regime and a
|
|
5045
|
+
* drop-in match for `lambdaIlsSearch` there; on strongly-correlated geometry
|
|
5046
|
+
* prefer `lambdaIlsSearch`. Returns an `IlsResult`. Throws a `TypeError` on a
|
|
5047
|
+
* malformed shape, a `RangeError` on a non-finite or out-of-domain input, and an
|
|
5048
|
+
* `Error` on a singular covariance or a lattice that exceeds `candidateLimit`.
|
|
5049
|
+
*/
|
|
5050
|
+
export function boundedIlsSearch(float_cycles: Float64Array, covariance: any, radius: number, candidate_limit: number, ratio_threshold: number): any;
|
|
5051
|
+
|
|
3183
5052
|
/**
|
|
3184
5053
|
* One wrapping GPS C/A chip at a zero-based index.
|
|
3185
5054
|
*/
|
|
@@ -3205,11 +5074,28 @@ export function carrierFrequencyHz(system: GnssSystem, band: CarrierBand): numbe
|
|
|
3205
5074
|
*/
|
|
3206
5075
|
export function changed(diff: any): boolean;
|
|
3207
5076
|
|
|
5077
|
+
/**
|
|
5078
|
+
* Continuous seconds since J2000 for a civil instant.
|
|
5079
|
+
*/
|
|
5080
|
+
export function civilToJ2000Seconds(year: number, month: number, day: number, hour: number, minute: number, second: number): number;
|
|
5081
|
+
|
|
3208
5082
|
/**
|
|
3209
5083
|
* Carrier-to-noise-density ratio, dB-Hz. `otherLossesDb` defaults to 0.
|
|
3210
5084
|
*/
|
|
3211
5085
|
export function cn0(eirp_dbw: number, fspl_db: number, receiver_gt_dbk: number, other_losses_db?: number | null): number;
|
|
3212
5086
|
|
|
5087
|
+
/**
|
|
5088
|
+
* Convert classical orbital elements to an inertial Cartesian state.
|
|
5089
|
+
*
|
|
5090
|
+
* `coe` is a `ClassicalElements` object (see `rv2coe`); only `p`, `ecc`,
|
|
5091
|
+
* `incl`, `raan`, `argp`, and `nu` are required for an ordinary orbit, with
|
|
5092
|
+
* `orbitType` and the auxiliary angles defaulting so the six primary elements
|
|
5093
|
+
* suffice. `mu` is the gravitational parameter (km^3/s^2). Returns
|
|
5094
|
+
* `{ positionKm, velocityKmS }`, each a length-3 `Float64Array`. Delegates to
|
|
5095
|
+
* `sidereon_core::astro::elements::coe2rv`.
|
|
5096
|
+
*/
|
|
5097
|
+
export function coe2rv(coe: any, mu: number): any;
|
|
5098
|
+
|
|
3213
5099
|
/**
|
|
3214
5100
|
* Coherent integration loss from residual frequency error.
|
|
3215
5101
|
*/
|
|
@@ -3245,6 +5131,13 @@ export function covarianceIsPositiveSemidefinite(covariance_km2: Float64Array):
|
|
|
3245
5131
|
*/
|
|
3246
5132
|
export function covarianceIsSymmetric(covariance_km2: Float64Array): boolean;
|
|
3247
5133
|
|
|
5134
|
+
/**
|
|
5135
|
+
* Build a look-angle coverage grid for `satellites` and `stations` at the
|
|
5136
|
+
* `epochUnixUs` (Unix microseconds) epoch. Each cell is the per-pair look angle
|
|
5137
|
+
* from `sidereon_core::astro::coverage::look_angles_batch`.
|
|
5138
|
+
*/
|
|
5139
|
+
export function coverageLookAngles(satellites: Tle[], stations: GroundStation[], epoch_unix_us: bigint): CoverageGrid;
|
|
5140
|
+
|
|
3248
5141
|
/**
|
|
3249
5142
|
* Decode Compact RINEX (Hatanaka) bytes into plain RINEX OBS text. Throws a
|
|
3250
5143
|
* `TypeError` on non-UTF-8 input and an `Error` on a decode failure.
|
|
@@ -3258,11 +5151,46 @@ export function decodeCrinex(bytes: Uint8Array): string;
|
|
|
3258
5151
|
*/
|
|
3259
5152
|
export function decodeCrinexLines(bytes: Uint8Array): string[];
|
|
3260
5153
|
|
|
5154
|
+
/**
|
|
5155
|
+
* Decode every CRC-valid RTCM 3 frame in a byte buffer into the message IR.
|
|
5156
|
+
*
|
|
5157
|
+
* Frames whose CRC fails, or whose body cannot be decoded, are skipped and the
|
|
5158
|
+
* scan resynchronizes on the next preamble. Returns an array of message objects,
|
|
5159
|
+
* each tagged with a `type` discriminant (`"msm"`, `"stationCoordinates"`,
|
|
5160
|
+
* `"antennaDescriptor"`, `"gpsEphemeris"`, `"glonassEphemeris"`,
|
|
5161
|
+
* `"unsupported"`). Delegates to `sidereon_core::rtcm::decode_messages`.
|
|
5162
|
+
*/
|
|
5163
|
+
export function decodeRtcm(bytes: Uint8Array): any;
|
|
5164
|
+
|
|
5165
|
+
/**
|
|
5166
|
+
* Decode the single RTCM 3 frame that begins at the start of `bytes`.
|
|
5167
|
+
*
|
|
5168
|
+
* Returns the decoded message object plus the total `frameLen` consumed
|
|
5169
|
+
* (preamble, length word, body, CRC). Throws an `Error` if the preamble is
|
|
5170
|
+
* missing, the buffer is shorter than the declared frame, or the CRC does not
|
|
5171
|
+
* match. Delegates to `sidereon_core::rtcm::decode_frame` +
|
|
5172
|
+
* `sidereon_core::rtcm::Message::decode`.
|
|
5173
|
+
*/
|
|
5174
|
+
export function decodeRtcmFrame(bytes: Uint8Array): any;
|
|
5175
|
+
|
|
5176
|
+
/**
|
|
5177
|
+
* Decode a single RTCM 3 message body without the transport frame.
|
|
5178
|
+
*
|
|
5179
|
+
* `body` is the bytes between the frame length word and CRC. Delegates to
|
|
5180
|
+
* `sidereon_core::rtcm::Message::decode`.
|
|
5181
|
+
*/
|
|
5182
|
+
export function decodeRtcmMessage(body: Uint8Array): any;
|
|
5183
|
+
|
|
3261
5184
|
/**
|
|
3262
5185
|
* Standard dual-frequency ionosphere-free carrier pair for a constellation.
|
|
3263
5186
|
*/
|
|
3264
5187
|
export function defaultPair(system: GnssSystem): CarrierPair | undefined;
|
|
3265
5188
|
|
|
5189
|
+
/**
|
|
5190
|
+
* Single-frequency carrier used by the SPP ionosphere-scaling policy.
|
|
5191
|
+
*/
|
|
5192
|
+
export function defaultSppFrequencyHz(system: GnssSystem): number | undefined;
|
|
5193
|
+
|
|
3266
5194
|
/**
|
|
3267
5195
|
* Detect cycle slips on a time-ordered single-satellite carrier-phase arc.
|
|
3268
5196
|
* `arc` is an array of `{ phi1Cycles?, phi2Cycles?, p1M?, p2M?, lli1?, lli2?,
|
|
@@ -3281,59 +5209,211 @@ export function detectCycleSlips(arc: any, options: any): SlipResult[];
|
|
|
3281
5209
|
export function dgnssApply(rover_observations: any, corrections: any): AppliedCorrections;
|
|
3282
5210
|
|
|
3283
5211
|
/**
|
|
3284
|
-
* Compare two catalog snapshots by `(system, prn)` identity.
|
|
5212
|
+
* Compare two catalog snapshots by `(system, prn)` identity.
|
|
5213
|
+
*
|
|
5214
|
+
* `previous` and `current` are each a `Record[]`. Returns a `Diff` of added,
|
|
5215
|
+
* removed, and per-field changes on held PRNs.
|
|
5216
|
+
*/
|
|
5217
|
+
export function diff(previous: any, current: any): any;
|
|
5218
|
+
|
|
5219
|
+
/**
|
|
5220
|
+
* Parabolic-dish antenna gain, dBi.
|
|
5221
|
+
*/
|
|
5222
|
+
export function dishGain(diameter_m: number, frequency_hz: number, efficiency: number): number;
|
|
5223
|
+
|
|
5224
|
+
/**
|
|
5225
|
+
* Range rate and dimensionless Doppler ratio from a GCRS state.
|
|
5226
|
+
*
|
|
5227
|
+
* `gcrsPositionKm` and `gcrsVelocityKmS` are length-3 `Float64Array`s (km and
|
|
5228
|
+
* km/s). The station is geodetic `stationLatDeg` / `stationLonDeg` (degrees) at
|
|
5229
|
+
* `stationAltKm` (km). The receive epoch is the UTC civil time
|
|
5230
|
+
* `year`/`month`/`day`/`hour`/`minute`/`second`. Returns `[rangeRateKmS,
|
|
5231
|
+
* dopplerRatio]`. Delegates to
|
|
5232
|
+
* `sidereon_core::astro::doppler::range_rate_and_ratio`.
|
|
5233
|
+
*/
|
|
5234
|
+
export function dopplerRangeRate(gcrs_position_km: Float64Array, gcrs_velocity_km_s: Float64Array, station_lat_deg: number, station_lon_deg: number, station_alt_km: number, year: number, month: number, day: number, hour: number, minute: number, second: number): Float64Array;
|
|
5235
|
+
|
|
5236
|
+
/**
|
|
5237
|
+
* Range rate, Doppler ratio, and carrier Doppler shift from a GCRS state.
|
|
5238
|
+
*
|
|
5239
|
+
* Same geometry and epoch inputs as [`dopplerRangeRate`], plus the transmit
|
|
5240
|
+
* `frequencyHz` whose shift is reported. Delegates to
|
|
5241
|
+
* `sidereon_core::astro::doppler::doppler_shift`.
|
|
5242
|
+
*/
|
|
5243
|
+
export function dopplerShift(gcrs_position_km: Float64Array, gcrs_velocity_km_s: Float64Array, station_lat_deg: number, station_lon_deg: number, station_alt_km: number, year: number, month: number, day: number, hour: number, minute: number, second: number, frequency_hz: number): DopplerShift;
|
|
5244
|
+
|
|
5245
|
+
/**
|
|
5246
|
+
* Convert a Doppler shift in hertz to pseudorange rate in metres per second.
|
|
5247
|
+
*/
|
|
5248
|
+
export function dopplerToRangeRate(doppler_hz: number, carrier_hz: number): number;
|
|
5249
|
+
|
|
5250
|
+
/**
|
|
5251
|
+
* Angular radius in degrees of Earth as seen from each satellite position.
|
|
5252
|
+
*/
|
|
5253
|
+
export function earthAngularRadius(satellite_position_km: Float64Array): Float64Array;
|
|
5254
|
+
|
|
5255
|
+
/**
|
|
5256
|
+
* Convert a batch of ITRS (ECEF) positions to geodetic coordinates.
|
|
5257
|
+
*
|
|
5258
|
+
* `positionKm` is a flat row-major `(n, 3)` `Float64Array` in kilometres.
|
|
5259
|
+
* Returns a flat `(n, 3)` `Float64Array` whose columns are
|
|
5260
|
+
* `[latitudeDeg, longitudeDeg, altitudeKm]` (WGS84). Time-independent.
|
|
5261
|
+
*/
|
|
5262
|
+
export function ecefToGeodetic(position_km: Float64Array): Float64Array;
|
|
5263
|
+
|
|
5264
|
+
/**
|
|
5265
|
+
* Eclipse status for satellite and Sun position batches, km. Returns a
|
|
5266
|
+
* `string[]` of `"sunlit"` / `"penumbra"` / `"umbra"`.
|
|
5267
|
+
*/
|
|
5268
|
+
export function eclipseStatus(satellite_position_km: Float64Array, sun_position_km: Float64Array): string[];
|
|
5269
|
+
|
|
5270
|
+
/**
|
|
5271
|
+
* Effective isotropic radiated power, dBW.
|
|
5272
|
+
*/
|
|
5273
|
+
export function eirp(tx_power_dbm: number, tx_antenna_gain_dbi: number): number;
|
|
5274
|
+
|
|
5275
|
+
/**
|
|
5276
|
+
* Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
|
|
5277
|
+
* orthometric height and a geodetic position in radians, using the built-in
|
|
5278
|
+
* grid's undulation. Delegates to
|
|
5279
|
+
* `sidereon_core::geoid::ellipsoidal_height_m`.
|
|
5280
|
+
*/
|
|
5281
|
+
export function ellipsoidalHeightM(orthometric_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5282
|
+
|
|
5283
|
+
/**
|
|
5284
|
+
* Encode plain RINEX observation text into a Compact RINEX (Hatanaka) stream,
|
|
5285
|
+
* the inverse of [`decodeCrinex`]. RINEX 2 is emitted as CRINEX 1.0 and RINEX 3
|
|
5286
|
+
* as CRINEX 3.0, selected from the embedded `RINEX VERSION / TYPE` header. The
|
|
5287
|
+
* output is the canonical all-reset compression form, so it round-trips
|
|
5288
|
+
* (`decodeCrinex(encodeCrinex(rinex)) == rinex`) but is not byte-identical to an
|
|
5289
|
+
* arbitrary `RNX2CRX` stream. Throws an `Error` on malformed input. Delegates to
|
|
5290
|
+
* `sidereon_core::rinex::crinex::encode_crinex`.
|
|
5291
|
+
*/
|
|
5292
|
+
export function encodeCrinex(rinex_text: string): string;
|
|
5293
|
+
|
|
5294
|
+
/**
|
|
5295
|
+
* Encode a constructed RTCM message into a message body (without the transport
|
|
5296
|
+
* frame).
|
|
5297
|
+
*
|
|
5298
|
+
* `message` is a `type`-tagged plain object of the same shape [`decodeRtcm`]
|
|
5299
|
+
* returns (`"stationCoordinates"`, `"antennaDescriptor"`, `"gpsEphemeris"`,
|
|
5300
|
+
* `"glonassEphemeris"`, `"msm"`, `"unsupported"`), carrying the raw transmitted
|
|
5301
|
+
* field integers (large fields as `bigint`). Returns the encoded body as a
|
|
5302
|
+
* `Uint8Array`. Delegates to `sidereon_core::rtcm::Message::encode`. Throws a
|
|
5303
|
+
* `TypeError` for a malformed object or unknown type.
|
|
5304
|
+
*/
|
|
5305
|
+
export function encodeRtcm(message: any): Uint8Array;
|
|
5306
|
+
|
|
5307
|
+
/**
|
|
5308
|
+
* Encode a constructed RTCM message and wrap it in a fresh RTCM transport frame
|
|
5309
|
+
* (preamble, length word, body, CRC).
|
|
5310
|
+
*
|
|
5311
|
+
* `message` has the same shape [`encodeRtcm`] takes. Returns the framed bytes as
|
|
5312
|
+
* a `Uint8Array`, ready to feed back to [`decodeRtcmFrame`] / [`decodeRtcm`].
|
|
5313
|
+
* Delegates to `sidereon_core::rtcm::Message::to_frame`. Throws a `TypeError`
|
|
5314
|
+
* for a malformed object and an `Error` if the encoded body exceeds the frame
|
|
5315
|
+
* length limit.
|
|
5316
|
+
*/
|
|
5317
|
+
export function encodeRtcmFrame(message: any): Uint8Array;
|
|
5318
|
+
|
|
5319
|
+
/**
|
|
5320
|
+
* Build the encounter frame from two position/velocity states (each a length-3
|
|
5321
|
+
* `Float64Array`).
|
|
5322
|
+
*/
|
|
5323
|
+
export function encounterFrame(position1_km: Float64Array, velocity1_km_s: Float64Array, position2_km: Float64Array, velocity2_km_s: Float64Array): EncounterFrame;
|
|
5324
|
+
|
|
5325
|
+
/**
|
|
5326
|
+
* Project a 3x3 ECI covariance into the encounter B-plane `(x, z)`. Returns a
|
|
5327
|
+
* flat row-major length-4 (2-by-2) `Float64Array`.
|
|
5328
|
+
*/
|
|
5329
|
+
export function encounterPlaneCovariance(frame: EncounterFrame, covariance_km2: Float64Array): Float64Array;
|
|
5330
|
+
|
|
5331
|
+
/**
|
|
5332
|
+
* Find local TCA candidates between two satellites over a UTC window.
|
|
3285
5333
|
*
|
|
3286
|
-
* `
|
|
3287
|
-
*
|
|
5334
|
+
* `primaryLine1` / `primaryLine2` and `secondaryLine1` / `secondaryLine2` are
|
|
5335
|
+
* the TLE line pairs; `windowStartUnixMicros` / `windowEndUnixMicros` are the
|
|
5336
|
+
* window bounds as unix-microsecond UTC stamps (`bigint`); `options` is an
|
|
5337
|
+
* optional `TcaFinderOptions` object. Returns an array of `TcaCandidate`
|
|
5338
|
+
* objects. Delegates to
|
|
5339
|
+
* `sidereon_core::astro::tca::find_tca_candidates_from_tles`.
|
|
3288
5340
|
*/
|
|
3289
|
-
export function
|
|
5341
|
+
export function findTcaCandidates(primary_line1: string, primary_line2: string, secondary_line1: string, secondary_line2: string, window_start_unix_micros: bigint, window_end_unix_micros: bigint, options: any): any;
|
|
3290
5342
|
|
|
3291
5343
|
/**
|
|
3292
|
-
*
|
|
5344
|
+
* Find local TCA candidates between two satellites and evaluate collision
|
|
5345
|
+
* probability at each.
|
|
5346
|
+
*
|
|
5347
|
+
* Like `findTcaCandidates`, plus `pcOptions` (a `TcaPcOptions` object with the
|
|
5348
|
+
* hard-body radius, Pc method, and optional per-object covariances). Returns an
|
|
5349
|
+
* array of `TcaConjunction` objects. Delegates to
|
|
5350
|
+
* `sidereon_core::astro::tca::find_tca_conjunctions_from_tles`.
|
|
3293
5351
|
*/
|
|
3294
|
-
export function
|
|
5352
|
+
export function findTcaConjunctions(primary_line1: string, primary_line2: string, secondary_line1: string, secondary_line2: string, window_start_unix_micros: bigint, window_end_unix_micros: bigint, pc_options: any, options: any): any;
|
|
3295
5353
|
|
|
3296
5354
|
/**
|
|
3297
|
-
*
|
|
5355
|
+
* Fit a piecewise reduced-orbit model: tile `[t0, t1]` into segments of
|
|
5356
|
+
* `segmentSeconds` and fit each independently.
|
|
5357
|
+
*
|
|
5358
|
+
* `samples` is an array of `{ epoch, xM, yM, zM }` (ECEF metres), `scale` the
|
|
5359
|
+
* time scale the epochs are expressed in, and `model` is `"circular_secular"`
|
|
5360
|
+
* or `"eccentric_secular"`. `t0` / `t1` are `{ year, month, day, hour, minute,
|
|
5361
|
+
* second }` calendar epochs in that scale. Delegates to
|
|
5362
|
+
* `sidereon_core::orbit::fit_piecewise`.
|
|
3298
5363
|
*/
|
|
3299
|
-
export function
|
|
5364
|
+
export function fitPiecewiseReducedOrbit(samples: any, scale: TimeScale, model: string, t0: any, t1: any, segment_seconds: number): PiecewiseOrbit;
|
|
3300
5365
|
|
|
3301
5366
|
/**
|
|
3302
|
-
*
|
|
5367
|
+
* Sample an SP3 product and fit a piecewise reduced orbit.
|
|
5368
|
+
*
|
|
5369
|
+
* `options` is `{ t0, t1, cadenceS, model, segmentSeconds }`. Epochs are
|
|
5370
|
+
* interpreted in the SP3 product time scale. Delegates to
|
|
5371
|
+
* `sidereon_core::orbit::fit_piecewise_reduced_orbit_source`.
|
|
3303
5372
|
*/
|
|
3304
|
-
export function
|
|
5373
|
+
export function fitPiecewiseReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): PiecewiseOrbitSourceFit;
|
|
3305
5374
|
|
|
3306
5375
|
/**
|
|
3307
|
-
*
|
|
5376
|
+
* Sample a TLE/SGP4 source in UTC and fit a piecewise reduced orbit.
|
|
3308
5377
|
*
|
|
3309
|
-
* `
|
|
3310
|
-
*
|
|
3311
|
-
* `[latitudeDeg, longitudeDeg, altitudeKm]` (WGS84). Time-independent.
|
|
5378
|
+
* `options` is `{ t0, t1, cadenceS, model, segmentSeconds }`. Delegates to
|
|
5379
|
+
* `sidereon_core::orbit::fit_piecewise_reduced_orbit_source`.
|
|
3312
5380
|
*/
|
|
3313
|
-
export function
|
|
5381
|
+
export function fitPiecewiseReducedOrbitTle(tle: Tle, options: any): PiecewiseOrbitSourceFit;
|
|
3314
5382
|
|
|
3315
5383
|
/**
|
|
3316
|
-
*
|
|
3317
|
-
*
|
|
5384
|
+
* Fit a reduced-orbit model to ECEF position samples.
|
|
5385
|
+
*
|
|
5386
|
+
* `samples` is an array of `{ epoch, xM, yM, zM }` (ECEF metres), `scale` the
|
|
5387
|
+
* time scale the epochs are expressed in, and `model` is `"circular_secular"`
|
|
5388
|
+
* or `"eccentric_secular"`. Delegates to `sidereon_core::orbit::fit_with_model`.
|
|
3318
5389
|
*/
|
|
3319
|
-
export function
|
|
5390
|
+
export function fitReducedOrbit(samples: any, scale: TimeScale, model: string): ReducedOrbit;
|
|
3320
5391
|
|
|
3321
5392
|
/**
|
|
3322
|
-
*
|
|
5393
|
+
* Sample an SP3 product and fit a reduced orbit.
|
|
5394
|
+
*
|
|
5395
|
+
* `options` is `{ t0, t1, cadenceS, model }`. Epochs are interpreted in the
|
|
5396
|
+
* SP3 product time scale. Delegates to
|
|
5397
|
+
* `sidereon_core::orbit::fit_reduced_orbit_source`.
|
|
3323
5398
|
*/
|
|
3324
|
-
export function
|
|
5399
|
+
export function fitReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitSourceFit;
|
|
3325
5400
|
|
|
3326
5401
|
/**
|
|
3327
|
-
*
|
|
3328
|
-
*
|
|
5402
|
+
* Sample a TLE/SGP4 source in UTC and fit a reduced orbit.
|
|
5403
|
+
*
|
|
5404
|
+
* `options` is `{ t0, t1, cadenceS, model }`. Delegates to
|
|
5405
|
+
* `sidereon_core::orbit::fit_reduced_orbit_source`.
|
|
3329
5406
|
*/
|
|
3330
|
-
export function
|
|
5407
|
+
export function fitReducedOrbitTle(tle: Tle, options: any): ReducedOrbitSourceFit;
|
|
3331
5408
|
|
|
3332
5409
|
/**
|
|
3333
|
-
*
|
|
3334
|
-
*
|
|
5410
|
+
* Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
|
|
5411
|
+
*
|
|
5412
|
+
* `epochs` is an array of `RtkDualFrequencyArcEpoch` objects and `config` a
|
|
5413
|
+
* `RtkWideLaneArcConfig` object. Delegates to
|
|
5414
|
+
* `sidereon_core::rtk_filter::arc::fix_wide_lane_rtk_arc`.
|
|
3335
5415
|
*/
|
|
3336
|
-
export function
|
|
5416
|
+
export function fixWideLaneRtkArc(epochs: any, config: any): any;
|
|
3337
5417
|
|
|
3338
5418
|
/**
|
|
3339
5419
|
* J2 oblateness gravitational acceleration in km/s^2.
|
|
@@ -3357,19 +5437,53 @@ export function forceJ2Acceleration(position_km: Float64Array, velocity_km_s: Fl
|
|
|
3357
5437
|
export function forceTwoBodyAcceleration(position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
|
|
3358
5438
|
|
|
3359
5439
|
/**
|
|
3360
|
-
* Build
|
|
5440
|
+
* Build constellation identity records from a CelesTrak OMM JSON-array text.
|
|
5441
|
+
*
|
|
5442
|
+
* `system` is the constellation label (`"gps"`, `"glonass"`, `"galileo"`,
|
|
5443
|
+
* `"beidou"`, `"qzss"`); it dispatches the per-system `OBJECT_NAME` identity
|
|
5444
|
+
* adapter and defaults to `"gps"`. Parses the CelesTrak JSON array into OMM
|
|
5445
|
+
* records (skipping array elements that are not parseable OMM objects), then
|
|
5446
|
+
* derives normalized `Record` rows sorted by `(system, prn)`. Returns a
|
|
5447
|
+
* `Record[]`. Throws an `Error` on a JSON parse failure or a CelesTrak object
|
|
5448
|
+
* name with no PRN resolvable for `system`.
|
|
5449
|
+
*/
|
|
5450
|
+
export function fromCelestrakJson(json: string, system?: string | null): any;
|
|
5451
|
+
|
|
5452
|
+
/**
|
|
5453
|
+
* Build constellation identity records from a CelesTrak OMM JSON-array text,
|
|
5454
|
+
* skipping (rather than throwing on) entries that do not resolve.
|
|
3361
5455
|
*
|
|
3362
|
-
*
|
|
3363
|
-
* `
|
|
3364
|
-
*
|
|
5456
|
+
* The lenient sibling of [`fromCelestrakJson`]: feed it a raw combined CelesTrak
|
|
5457
|
+
* `gnss` feed and it returns `{ records, skipped }` — `records` is the `Record[]`
|
|
5458
|
+
* for `system` (the same shape `fromCelestrakJson` returns, sorted by
|
|
5459
|
+
* `(system, prn)`), and `skipped` is a `SkippedOmm[]` of the entries whose
|
|
5460
|
+
* `OBJECT_NAME` did not resolve to a PRN for `system` (another constellation's
|
|
5461
|
+
* satellite in the combined feed, or a freshly launched satellite not yet in the
|
|
5462
|
+
* published slot/SVID table), each carrying its `{ objectName?, noradId }` so the
|
|
5463
|
+
* caller can triage. `system` defaults to `"gps"`. Throws an `Error` only on a
|
|
5464
|
+
* JSON parse failure.
|
|
3365
5465
|
*/
|
|
3366
|
-
export function
|
|
5466
|
+
export function fromCelestrakJsonLenient(json: string, system?: string | null): any;
|
|
3367
5467
|
|
|
3368
5468
|
/**
|
|
3369
5469
|
* Free-space path loss, dB, for range in km and frequency in MHz.
|
|
3370
5470
|
*/
|
|
3371
5471
|
export function fspl(distance_km: number, frequency_mhz: number): number;
|
|
3372
5472
|
|
|
5473
|
+
/**
|
|
5474
|
+
* Galileo NeQuick-G single-frequency ionospheric group delay (positive metres).
|
|
5475
|
+
*
|
|
5476
|
+
* `ai0`/`ai1`/`ai2` are the three Galileo broadcast NeQuick-G coefficients.
|
|
5477
|
+
* `latDeg`/`lonDeg` are the receiver geodetic coordinates, `azimuthDeg` /
|
|
5478
|
+
* `elevationDeg` the satellite topocentric angles (degrees). The receive epoch
|
|
5479
|
+
* is the UTC civil time `year`/`month`/`day`/`hour`/`minute`/`second`, taken in
|
|
5480
|
+
* Galileo System Time. `frequencyHz` is the reporting carrier. Delegates to
|
|
5481
|
+
* `sidereon_core::atmosphere::ionosphere::ionosphere_delay` with
|
|
5482
|
+
* `IonoModel::GalileoNequickG`, which dispatches to the Galileo arm. Throws an
|
|
5483
|
+
* `Error` on an out-of-domain input.
|
|
5484
|
+
*/
|
|
5485
|
+
export function galileoNequickDelay(ai0: number, ai1: number, ai2: number, lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, year: number, month: number, day: number, hour: number, minute: number, second: number, frequency_hz: number): number;
|
|
5486
|
+
|
|
3373
5487
|
/**
|
|
3374
5488
|
* Ionosphere-free coefficient `gamma = f1^2 / (f1^2 - f2^2)`.
|
|
3375
5489
|
*/
|
|
@@ -3390,11 +5504,31 @@ export function gcrsToItrs(position_km: Float64Array, epochs_unix_us: BigInt64Ar
|
|
|
3390
5504
|
*/
|
|
3391
5505
|
export function geodeticToEcef(geodetic: Float64Array): Float64Array;
|
|
3392
5506
|
|
|
5507
|
+
/**
|
|
5508
|
+
* Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
|
|
5509
|
+
* position in radians, from the COARSE built-in global grid. Latitude is
|
|
5510
|
+
* positive north, longitude positive east. Delegates to
|
|
5511
|
+
* `sidereon_core::geoid::geoid_undulation`.
|
|
5512
|
+
*/
|
|
5513
|
+
export function geoidUndulation(lat_rad: number, lon_rad: number): number;
|
|
5514
|
+
|
|
3393
5515
|
/**
|
|
3394
5516
|
* Geometry-free phase combination `L_GF = L1 - L2`, metres.
|
|
3395
5517
|
*/
|
|
3396
5518
|
export function geometryFree(l1_m: number, l2_m: number): number;
|
|
3397
5519
|
|
|
5520
|
+
/**
|
|
5521
|
+
* GLONASS FDMA L1/L2 frequency-channel number (`k`, in `-7..=6`) for an
|
|
5522
|
+
* orbital slot, from the published IGS/MCC slot-channel table. Returns `null`
|
|
5523
|
+
* for a slot with no tabulated channel.
|
|
5524
|
+
*/
|
|
5525
|
+
export function glonassFdmaChannel(slot: number): number | undefined;
|
|
5526
|
+
|
|
5527
|
+
/**
|
|
5528
|
+
* GLONASS G1 FDMA carrier frequency in hertz for channel `k`.
|
|
5529
|
+
*/
|
|
5530
|
+
export function glonassG1FrequencyHz(channel: number): number;
|
|
5531
|
+
|
|
3398
5532
|
/**
|
|
3399
5533
|
* GNSS dilution of precision from ECEF line-of-sight unit rows and weights.
|
|
3400
5534
|
*
|
|
@@ -3403,6 +5537,16 @@ export function geometryFree(l1_m: number, l2_m: number): number;
|
|
|
3403
5537
|
*/
|
|
3404
5538
|
export function gnssDop(line_of_sight: Float64Array, weights: Float64Array, receiver: Wgs84Geodetic): Dop;
|
|
3405
5539
|
|
|
5540
|
+
/**
|
|
5541
|
+
* Compute exact GNSS DOP at a single epoch from an SP3 precise product.
|
|
5542
|
+
*
|
|
5543
|
+
* `stationEcefM` is an ECEF metre vector (length 3); `j2000Seconds` the receive
|
|
5544
|
+
* time as continuous seconds since J2000 in the SP3 product time scale.
|
|
5545
|
+
* `options` is `{ satellites?, elevationMaskDeg?=5, systems?, weighting?="unit",
|
|
5546
|
+
* lightTime?=false }`. Delegates to `sidereon_core::geometry::dop_at_epoch`.
|
|
5547
|
+
*/
|
|
5548
|
+
export function gnssDopAtEpoch(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: number, options: any): DopGeometry;
|
|
5549
|
+
|
|
3406
5550
|
/**
|
|
3407
5551
|
* Sample SP3-derived GNSS DOP over a J2000 epoch grid.
|
|
3408
5552
|
*
|
|
@@ -3413,6 +5557,26 @@ export function gnssDop(line_of_sight: Float64Array, weights: Float64Array, rece
|
|
|
3413
5557
|
*/
|
|
3414
5558
|
export function gnssDopSeries(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: Float64Array, options: any): DopSeries;
|
|
3415
5559
|
|
|
5560
|
+
/**
|
|
5561
|
+
* Sample exact GNSS DOP over an inclusive uniform window `[startJ2000S,
|
|
5562
|
+
* endJ2000S]` at `stepSeconds` spacing, skipping singular or underdetermined
|
|
5563
|
+
* samples. `options` is the same shape as [`gnssDopAtEpoch`]. Delegates to
|
|
5564
|
+
* `sidereon_core::geometry::dop_series`.
|
|
5565
|
+
*/
|
|
5566
|
+
export function gnssDopSeriesWindow(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): DopSeriesSample[];
|
|
5567
|
+
|
|
5568
|
+
/**
|
|
5569
|
+
* Sampled visibility passes over `[startJ2000S, endJ2000S]` at `stepSeconds`
|
|
5570
|
+
* spacing. Delegates to `sidereon_core::geometry::passes`.
|
|
5571
|
+
*/
|
|
5572
|
+
export function gnssPasses(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): GnssPass[];
|
|
5573
|
+
|
|
5574
|
+
/**
|
|
5575
|
+
* Render the canonical SP3/RINEX satellite token for a constellation + PRN
|
|
5576
|
+
* (`("gps", 7)` -> `"G07"`, `("glonass", 13)` -> `"R13"`).
|
|
5577
|
+
*/
|
|
5578
|
+
export function gnssSp3Id(system: string, prn: number): string;
|
|
5579
|
+
|
|
3416
5580
|
/**
|
|
3417
5581
|
* Stable lower-case display label for a constellation, e.g. `"gps"`.
|
|
3418
5582
|
*/
|
|
@@ -3423,6 +5587,51 @@ export function gnssSystemLabel(system: GnssSystem): string;
|
|
|
3423
5587
|
*/
|
|
3424
5588
|
export function gnssSystemLetter(system: GnssSystem): string;
|
|
3425
5589
|
|
|
5590
|
+
/**
|
|
5591
|
+
* Visible-satellite counts over `[startJ2000S, endJ2000S]` sampled every
|
|
5592
|
+
* `stepSeconds`. Delegates to `sidereon_core::geometry::visibility_series`.
|
|
5593
|
+
*/
|
|
5594
|
+
export function gnssVisibilitySeries(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): GnssVisibilityCount[];
|
|
5595
|
+
|
|
5596
|
+
/**
|
|
5597
|
+
* Satellites visible above the elevation mask from an SP3 product at one
|
|
5598
|
+
* receive epoch. `stationEcefM` is a length-3 `Float64Array` (ECEF metres),
|
|
5599
|
+
* `j2000Seconds` the receive time as continuous seconds since J2000.
|
|
5600
|
+
* Delegates to `sidereon_core::geometry::visible`.
|
|
5601
|
+
*/
|
|
5602
|
+
export function gnssVisible(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: number, options: any): GnssVisibleSatellite[];
|
|
5603
|
+
|
|
5604
|
+
/**
|
|
5605
|
+
* Gauss angles-only orbit determination.
|
|
5606
|
+
*
|
|
5607
|
+
* `decl` and `rtasc` are length-3 declination / right-ascension
|
|
5608
|
+
* `Float64Array`s (radians), `jd` and `jdf` length-3 split Julian dates (whole
|
|
5609
|
+
* part and fraction, days), and `rseci` a flat row-major `(3, 3)`
|
|
5610
|
+
* `Float64Array` of observer-site ECI positions (km), one row per epoch.
|
|
5611
|
+
* Returns the orbit state at the middle observation. Delegates to
|
|
5612
|
+
* `sidereon_core::astro::iod::gauss_angles`.
|
|
5613
|
+
*/
|
|
5614
|
+
export function iodGaussAngles(decl: Float64Array, rtasc: Float64Array, jd: Float64Array, jdf: Float64Array, rseci: Float64Array): IodState;
|
|
5615
|
+
|
|
5616
|
+
/**
|
|
5617
|
+
* Gibbs three-position velocity solve.
|
|
5618
|
+
*
|
|
5619
|
+
* `r1`, `r2`, `r3` are length-3 coplanar geocentric position `Float64Array`s
|
|
5620
|
+
* (km). Returns the velocity at `r2` plus the inter-vector and coplanarity
|
|
5621
|
+
* angles. Delegates to `sidereon_core::astro::iod::gibbs`.
|
|
5622
|
+
*/
|
|
5623
|
+
export function iodGibbs(r1: Float64Array, r2: Float64Array, r3: Float64Array): IodVelocity;
|
|
5624
|
+
|
|
5625
|
+
/**
|
|
5626
|
+
* Herrick-Gibbs three-position velocity solve.
|
|
5627
|
+
*
|
|
5628
|
+
* `r1`, `r2`, `r3` are length-3 closely-spaced geocentric position
|
|
5629
|
+
* `Float64Array`s (km) and `jd1`/`jd2`/`jd3` their Julian-date epochs (days).
|
|
5630
|
+
* Returns the velocity at `r2` plus the inter-vector and coplanarity angles.
|
|
5631
|
+
* Delegates to `sidereon_core::astro::iod::hgibbs`.
|
|
5632
|
+
*/
|
|
5633
|
+
export function iodHerrickGibbs(r1: Float64Array, r2: Float64Array, r3: Float64Array, jd1: number, jd2: number, jd3: number): IodVelocity;
|
|
5634
|
+
|
|
3426
5635
|
/**
|
|
3427
5636
|
* Ionosphere-free code or meter-valued phase combination, metres.
|
|
3428
5637
|
*/
|
|
@@ -3456,6 +5665,54 @@ export function isValid(validation: any): boolean;
|
|
|
3456
5665
|
*/
|
|
3457
5666
|
export function itrsToGcrs(position_km: Float64Array, epochs_unix_us: BigInt64Array): Float64Array;
|
|
3458
5667
|
|
|
5668
|
+
/**
|
|
5669
|
+
* Civil calendar fields from whole seconds since J2000.
|
|
5670
|
+
*/
|
|
5671
|
+
export function j2000SecondsToCivil(seconds: bigint): CivilDateTime;
|
|
5672
|
+
|
|
5673
|
+
/**
|
|
5674
|
+
* GPS broadcast Klobuchar ionospheric group delay in the model's native units
|
|
5675
|
+
* (positive metres).
|
|
5676
|
+
*
|
|
5677
|
+
* `alpha` and `beta` are the eight transmitted GPS Klobuchar coefficients, each
|
|
5678
|
+
* a length-4 `Float64Array` (`a0..a3`, `b0..b3`). Receiver latitude/longitude
|
|
5679
|
+
* and satellite azimuth/elevation are degrees (latitude positive north,
|
|
5680
|
+
* longitude positive east, azimuth clockwise from north). `tGpsS` is the GPS
|
|
5681
|
+
* second-of-day in `[0, 86400)`. `frequencyHz` is the carrier the dispersive
|
|
5682
|
+
* delay is reported on; the model evaluates the L1 delay and scales it by the
|
|
5683
|
+
* dispersive `(f_l1 / f)^2` factor. Delegates to
|
|
5684
|
+
* `sidereon_core::atmosphere::ionosphere::klobuchar_native`. Throws an `Error`
|
|
5685
|
+
* on an out-of-domain coefficient, angle, time, or frequency.
|
|
5686
|
+
*/
|
|
5687
|
+
export function klobucharDelay(alpha: Float64Array, beta: Float64Array, lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, t_gps_s: number, frequency_hz: number): number;
|
|
5688
|
+
|
|
5689
|
+
/**
|
|
5690
|
+
* Resolve integer ambiguities with the LAMBDA method (RTKLIB `lambda()` port).
|
|
5691
|
+
*
|
|
5692
|
+
* `floatCycles` is the real-valued ambiguity vector (`Float64Array`),
|
|
5693
|
+
* `covariance` is its `n x n` covariance as a row-major `number[][]`, and
|
|
5694
|
+
* `ratioThreshold` is the ratio-test acceptance threshold (RTKLIB's default is
|
|
5695
|
+
* `3.0`). Finds the true integer-least-squares optimum and runner-up for any
|
|
5696
|
+
* positive-definite covariance — no search box, no combinatorial blow-up.
|
|
5697
|
+
* Returns an `IlsResult`. Throws a `TypeError` on a malformed shape, a
|
|
5698
|
+
* `RangeError` on a non-finite or out-of-domain input, and an `Error` on a
|
|
5699
|
+
* singular covariance or a non-converging search.
|
|
5700
|
+
*/
|
|
5701
|
+
export function lambdaIlsSearch(float_cycles: Float64Array, covariance: any, ratio_threshold: number): any;
|
|
5702
|
+
|
|
5703
|
+
/**
|
|
5704
|
+
* Solve Lambert's problem with Battin's method.
|
|
5705
|
+
*
|
|
5706
|
+
* `r1`, `r2` are length-3 position `Float64Array`s (km) and `dtsec` the time of
|
|
5707
|
+
* flight (seconds). `v1` (length-3, km/s) is only consulted for the degenerate
|
|
5708
|
+
* 180-degree transfer where the transfer-plane normal is otherwise undefined.
|
|
5709
|
+
* `directionOfMotion` is `"short"` or `"long"`, `directionOfEnergy` is `"low"`
|
|
5710
|
+
* or `"high"`, and `nrev` is the number of complete revolutions. Returns the
|
|
5711
|
+
* departure and arrival transfer velocities. Delegates to
|
|
5712
|
+
* `sidereon_core::astro::lambert::battin`.
|
|
5713
|
+
*/
|
|
5714
|
+
export function lambertBattin(r1: Float64Array, r2: Float64Array, v1: Float64Array, dtsec: number, direction_of_motion_label: string, direction_of_energy_label: string, nrev: number): LambertTransfer;
|
|
5715
|
+
|
|
3459
5716
|
/**
|
|
3460
5717
|
* Provenance and coverage of the embedded leap-second (TAI-UTC) table.
|
|
3461
5718
|
*/
|
|
@@ -3472,6 +5729,62 @@ export function leapSeconds(year: number, month: number, day: number): number;
|
|
|
3472
5729
|
*/
|
|
3473
5730
|
export function leapSecondsBatch(dates: Int32Array): Float64Array;
|
|
3474
5731
|
|
|
5732
|
+
/**
|
|
5733
|
+
* Decode LNAV subframes 1-3 back into engineering-unit parameters.
|
|
5734
|
+
*
|
|
5735
|
+
* Each subframe is a 300-bit `Uint8Array` of `0`/`1`. Parity is verified on all
|
|
5736
|
+
* 30 words first; a failure throws an `Error`. Delegates to
|
|
5737
|
+
* `sidereon_core::navigation::lnav::decode`.
|
|
5738
|
+
*/
|
|
5739
|
+
export function lnavDecode(sf1: Uint8Array, sf2: Uint8Array, sf3: Uint8Array): LnavDecoded;
|
|
5740
|
+
|
|
5741
|
+
/**
|
|
5742
|
+
* Encode clock and ephemeris parameters into LNAV subframes 1-3.
|
|
5743
|
+
*
|
|
5744
|
+
* `params` is the engineering-unit parameter object and `options` the optional
|
|
5745
|
+
* TLM/HOW object (omitted fields default to `0`). Returns the three 300-bit
|
|
5746
|
+
* subframes. Throws an `Error` on an out-of-range field. Delegates to
|
|
5747
|
+
* `sidereon_core::navigation::lnav::encode`.
|
|
5748
|
+
*/
|
|
5749
|
+
export function lnavEncode(params: any, options: any): LnavSubframes;
|
|
5750
|
+
|
|
5751
|
+
/**
|
|
5752
|
+
* The six parity bits `[D25..D30]` of a word from its 24 source data bits.
|
|
5753
|
+
*
|
|
5754
|
+
* `data24` is the 24 source data bits (most significant first, before the
|
|
5755
|
+
* `D30*` complementation). `d29Prev` / `d30Prev` are the previous word's two
|
|
5756
|
+
* trailing parity bits. Delegates to `sidereon_core::navigation::lnav::parity`.
|
|
5757
|
+
*/
|
|
5758
|
+
export function lnavParity(data24: Uint8Array, d29_prev: number, d30_prev: number): Uint8Array;
|
|
5759
|
+
|
|
5760
|
+
/**
|
|
5761
|
+
* Verify the parity of a single 30-bit word.
|
|
5762
|
+
*
|
|
5763
|
+
* `word30` is the 30-bit word as transmitted (data bits possibly complemented
|
|
5764
|
+
* by `D30*`, then 6 received parity bits). `d29Prev` / `d30Prev` are the
|
|
5765
|
+
* previous word's trailing parity bits. Delegates to
|
|
5766
|
+
* `sidereon_core::navigation::lnav::parity_valid`.
|
|
5767
|
+
*/
|
|
5768
|
+
export function lnavParityValid(word30: Uint8Array, d29_prev: number, d30_prev: number): boolean;
|
|
5769
|
+
|
|
5770
|
+
/**
|
|
5771
|
+
* Subframe ID from a hand-over word or a full subframe.
|
|
5772
|
+
*
|
|
5773
|
+
* `bits` is a 30-bit HOW word or a 300-bit subframe. Returns the 3-bit subframe
|
|
5774
|
+
* ID, or `undefined` for any other length. Delegates to
|
|
5775
|
+
* `sidereon_core::navigation::lnav::subframe_id`.
|
|
5776
|
+
*/
|
|
5777
|
+
export function lnavSubframeId(bits: Uint8Array): bigint | undefined;
|
|
5778
|
+
|
|
5779
|
+
/**
|
|
5780
|
+
* Time-of-week count from a hand-over word or a full subframe.
|
|
5781
|
+
*
|
|
5782
|
+
* `bits` is a 30-bit HOW word or a 300-bit subframe (whose word 2 is the HOW),
|
|
5783
|
+
* as a `Uint8Array` of `0`/`1`. Returns the 17-bit TOW count, or `undefined`
|
|
5784
|
+
* for any other length. Delegates to `sidereon_core::navigation::lnav::tow`.
|
|
5785
|
+
*/
|
|
5786
|
+
export function lnavTow(bits: Uint8Array): bigint | undefined;
|
|
5787
|
+
|
|
3475
5788
|
/**
|
|
3476
5789
|
* Parse an ANTEX 1.4 antenna product from in-memory bytes (a `Uint8Array`).
|
|
3477
5790
|
* Throws an `Error` on a parse failure or non-UTF-8 input.
|
|
@@ -3556,16 +5869,86 @@ export function narrowLaneCode(p1_m: number, p2_m: number, f1_hz: number, f2_hz:
|
|
|
3556
5869
|
*/
|
|
3557
5870
|
export function navMessageLabel(message: NavMessage): string;
|
|
3558
5871
|
|
|
5872
|
+
/**
|
|
5873
|
+
* Full NeQuick-G slant ionospheric group delay (positive metres) on
|
|
5874
|
+
* `frequencyHz`.
|
|
5875
|
+
*
|
|
5876
|
+
* The slant TEC from [`nequick_g_stec_tecu_js`] mapped to a group delay with the
|
|
5877
|
+
* dispersive `40.3e16 / f^2` relation. `eval` is a plain object; see the
|
|
5878
|
+
* `NequickGEval` TypeScript type. Delegates to
|
|
5879
|
+
* `sidereon_core::atmosphere::ionosphere::nequick_g_delay_m`. Throws a
|
|
5880
|
+
* `TypeError` for a malformed object and an `Error` for an out-of-domain input
|
|
5881
|
+
* or non-positive frequency.
|
|
5882
|
+
*/
|
|
5883
|
+
export function nequickGDelayM(_eval: any, frequency_hz: number): number;
|
|
5884
|
+
|
|
5885
|
+
/**
|
|
5886
|
+
* Full NeQuick-G slant total electron content along the ray, in TECU.
|
|
5887
|
+
*
|
|
5888
|
+
* Unlike the compact broadcast-driven [`galileo_nequick_delay`], this evaluates
|
|
5889
|
+
* the complete three-dimensional NeQuick 2 electron-density profiler integrated
|
|
5890
|
+
* along the receiver-to-satellite ray with the reference adaptive
|
|
5891
|
+
* Gauss-Kronrod quadrature. `eval` is a plain object; see the `NequickGEval`
|
|
5892
|
+
* TypeScript type. Delegates to
|
|
5893
|
+
* `sidereon_core::atmosphere::ionosphere::nequick_g_stec_tecu`. Throws a
|
|
5894
|
+
* `TypeError` for a malformed object and an `Error` for an out-of-domain month,
|
|
5895
|
+
* UTC, latitude, or a geometrically invalid ray.
|
|
5896
|
+
*/
|
|
5897
|
+
export function nequickGStecTecu(_eval: any): number;
|
|
5898
|
+
|
|
3559
5899
|
/**
|
|
3560
5900
|
* Equal-variance noise amplification of the ionosphere-free combination.
|
|
3561
5901
|
*/
|
|
3562
5902
|
export function noiseAmplification(f1_hz: number, f2_hz: number): number;
|
|
3563
5903
|
|
|
5904
|
+
/**
|
|
5905
|
+
* Predict observables for one satellite from a broadcast ephemeris store.
|
|
5906
|
+
* Delegates to `sidereon_core::observables::predict`.
|
|
5907
|
+
*/
|
|
5908
|
+
export function observablesBroadcast(broadcast: BroadcastEphemeris, satellite: string, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): PredictedObservables;
|
|
5909
|
+
|
|
5910
|
+
/**
|
|
5911
|
+
* Predict observables for one satellite from an SP3 precise product. See
|
|
5912
|
+
* [`observablesBroadcast`] for the broadcast-ephemeris counterpart. Delegates
|
|
5913
|
+
* to `sidereon_core::observables::predict`.
|
|
5914
|
+
*/
|
|
5915
|
+
export function observablesSp3(sp3: Sp3, satellite: string, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): PredictedObservables;
|
|
5916
|
+
|
|
3564
5917
|
/**
|
|
3565
5918
|
* Stable lower-case label for an observation kind.
|
|
3566
5919
|
*/
|
|
3567
5920
|
export function observationKindLabel(kind: ObservationKind): string;
|
|
3568
5921
|
|
|
5922
|
+
/**
|
|
5923
|
+
* Ocean tide loading displacement of an ITRF station, metres (ECEF).
|
|
5924
|
+
*
|
|
5925
|
+
* `stationEcefM` is a length-3 geocentric ECEF metre vector and the epoch is
|
|
5926
|
+
* the UTC `year`/`month`/`day` plus `fractionalHour`. `amplitudeM` and
|
|
5927
|
+
* `phaseDeg` are the station's BLQ coefficients as flat row-major
|
|
5928
|
+
* `(3, 11)` `Float64Array`s: component order radial / EW-west / NS-south, and
|
|
5929
|
+
* constituent order M2 S2 N2 K2 K1 O1 P1 Q1 Mf Mm Ssa. Returns the displacement
|
|
5930
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::ocean_tide_loading`.
|
|
5931
|
+
*/
|
|
5932
|
+
export function oceanTideLoading(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, amplitude_m: Float64Array, phase_deg: Float64Array): Float64Array;
|
|
5933
|
+
|
|
5934
|
+
/**
|
|
5935
|
+
* Orthometric height `H = h - N` (metres above mean sea level) from an
|
|
5936
|
+
* ellipsoidal height and a geodetic position in radians, using the built-in
|
|
5937
|
+
* grid's undulation. Delegates to
|
|
5938
|
+
* `sidereon_core::geoid::orthometric_height_m`.
|
|
5939
|
+
*/
|
|
5940
|
+
export function orthometricHeightM(ellipsoidal_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5941
|
+
|
|
5942
|
+
/**
|
|
5943
|
+
* Parallactic angle (degrees) of a target at a station.
|
|
5944
|
+
*
|
|
5945
|
+
* `observerLatitudeDeg` is the observer geodetic latitude, `hourAngleDeg` the
|
|
5946
|
+
* local hour angle (positive west of the meridian), and `declinationDeg` the
|
|
5947
|
+
* target declination. The result is on `(-180, 180]`. Delegates to
|
|
5948
|
+
* `sidereon_core::astro::observation::parallactic_angle_deg`.
|
|
5949
|
+
*/
|
|
5950
|
+
export function parallacticAngleDeg(observer_latitude_deg: number, hour_angle_deg: number, declination_deg: number): number;
|
|
5951
|
+
|
|
3569
5952
|
/**
|
|
3570
5953
|
* Parse CCSDS CDM KVN text. Throws an `Error` on a parse failure.
|
|
3571
5954
|
*/
|
|
@@ -3584,6 +5967,18 @@ export function parseCdmXml(text: string): Cdm;
|
|
|
3584
5967
|
*/
|
|
3585
5968
|
export function parseNavcen(html: string): any;
|
|
3586
5969
|
|
|
5970
|
+
/**
|
|
5971
|
+
* Parse CCSDS OEM KVN text. The KVN reader is forgiving: malformed ephemeris
|
|
5972
|
+
* lines are skipped and counted in `skippedStates`. Throws an `Error` on a
|
|
5973
|
+
* structural failure.
|
|
5974
|
+
*/
|
|
5975
|
+
export function parseOemKvn(text: string): Oem;
|
|
5976
|
+
|
|
5977
|
+
/**
|
|
5978
|
+
* Parse CCSDS OEM XML text. Throws an `Error` on a parse failure.
|
|
5979
|
+
*/
|
|
5980
|
+
export function parseOemXml(text: string): Oem;
|
|
5981
|
+
|
|
3587
5982
|
/**
|
|
3588
5983
|
* Parse CCSDS/CelesTrak OMM JSON text. Throws an `Error` on a parse failure.
|
|
3589
5984
|
*/
|
|
@@ -3599,6 +5994,16 @@ export function parseOmmKvn(text: string): Omm;
|
|
|
3599
5994
|
*/
|
|
3600
5995
|
export function parseOmmXml(text: string): Omm;
|
|
3601
5996
|
|
|
5997
|
+
/**
|
|
5998
|
+
* Parse CCSDS OPM KVN text. Throws an `Error` on a parse failure.
|
|
5999
|
+
*/
|
|
6000
|
+
export function parseOpmKvn(text: string): Opm;
|
|
6001
|
+
|
|
6002
|
+
/**
|
|
6003
|
+
* Parse CCSDS OPM XML text. Throws an `Error` on a parse failure.
|
|
6004
|
+
*/
|
|
6005
|
+
export function parseOpmXml(text: string): Opm;
|
|
6006
|
+
|
|
3602
6007
|
/**
|
|
3603
6008
|
* Strictly parse RINEX clock bytes into satellite clock-bias series. Throws a
|
|
3604
6009
|
* `TypeError` on non-UTF-8 input and an `Error` on a malformed record.
|
|
@@ -3644,6 +6049,16 @@ export function parseRinexNavRecords(bytes: Uint8Array): BroadcastRecordJs[];
|
|
|
3644
6049
|
*/
|
|
3645
6050
|
export function parseRinexObs(bytes: Uint8Array): RinexObs;
|
|
3646
6051
|
|
|
6052
|
+
/**
|
|
6053
|
+
* Parse a multi-record TLE file (CelesTrak / Space-Track style) into named,
|
|
6054
|
+
* initialized [`Tle`] instances. Handles bare 2-line sets, 3-line name+line1+line2
|
|
6055
|
+
* sets, and CelesTrak `0 NAME` markers; CRLF endings, blank lines, and
|
|
6056
|
+
* surrounding whitespace are tolerated. A record whose element set fails SGP4
|
|
6057
|
+
* initialization is skipped and counted in `skipped` rather than aborting the
|
|
6058
|
+
* whole file. `opsMode` is `"improved"` (default) or `"afspc"`.
|
|
6059
|
+
*/
|
|
6060
|
+
export function parseTleFile(text: string, ops_mode_label?: string | null): ParsedTleFile;
|
|
6061
|
+
|
|
3647
6062
|
/**
|
|
3648
6063
|
* Sun-satellite-observer phase angle in degrees.
|
|
3649
6064
|
*/
|
|
@@ -3654,6 +6069,52 @@ export function phaseAngle(satellite_position_km: Float64Array, sun_position_km:
|
|
|
3654
6069
|
*/
|
|
3655
6070
|
export function phaseMeters(phi_cycles: number, f_hz: number): number;
|
|
3656
6071
|
|
|
6072
|
+
/**
|
|
6073
|
+
* Precompute static PPP correction tables for a precise-orbit arc.
|
|
6074
|
+
*
|
|
6075
|
+
* `epochs` is an array of `PppCorrectionEpoch` objects, `receiverEcefM` is the
|
|
6076
|
+
* fixed receiver position (`Float64Array` of length 3, metres), and `options`
|
|
6077
|
+
* selects which corrections to compute: `solidEarthTide` / `phaseWindup`
|
|
6078
|
+
* booleans, plus optional `satelliteAntenna` (a `PppSatelliteAntennaOptions`),
|
|
6079
|
+
* `poleTide` (a `PoleTideOptions`, the IERS polar motion of the date), and
|
|
6080
|
+
* `oceanLoading` (an `OceanLoadingBlq`, the station's BLQ block). Returns a
|
|
6081
|
+
* `PppCorrections` whose fields are each keyed by the input epoch index. Throws a
|
|
6082
|
+
* `TypeError` on a malformed shape or an invalid satellite token, and an `Error`
|
|
6083
|
+
* on an invalid epoch or a tide/coverage failure.
|
|
6084
|
+
*/
|
|
6085
|
+
export function pppCorrections(sp3: Sp3, epochs: any, receiver_ecef_m: Float64Array, options: any): any;
|
|
6086
|
+
|
|
6087
|
+
/**
|
|
6088
|
+
* Prepare ionosphere-free single-frequency RTK arc inputs from a
|
|
6089
|
+
* dual-frequency arc and fixed wide-lane ambiguities.
|
|
6090
|
+
*
|
|
6091
|
+
* `epochs` is an array of `RtkDualFrequencyArcEpoch` objects, `wideLaneCycles`
|
|
6092
|
+
* is an id-keyed integer object, and `config` is an
|
|
6093
|
+
* `RtkIonosphereFreeArcConfig` object. Delegates to
|
|
6094
|
+
* `sidereon_core::rtk_filter::arc::prepare_ionosphere_free_rtk_arc`.
|
|
6095
|
+
*/
|
|
6096
|
+
export function prepareIonosphereFreeRtkArc(epochs: any, wide_lane_cycles: any, config: any): any;
|
|
6097
|
+
|
|
6098
|
+
/**
|
|
6099
|
+
* Propagate a fleet of already-initialized [`Tle`]s over a shared epoch grid in
|
|
6100
|
+
* a single call: the batched form of [`Tle.propagate`].
|
|
6101
|
+
*
|
|
6102
|
+
* Element `(i, j)` of the result is `satellites[i]` propagated to
|
|
6103
|
+
* `epochsUnixUs[j]`, bit-for-bit identical to `satellites[i].propagate([
|
|
6104
|
+
* epochsUnixUs[j] ])` on its own; this is a thin wrapper over the engine's
|
|
6105
|
+
* serial batch kernel (the binding never spawns the rayon thread pool, since
|
|
6106
|
+
* wasm is single-threaded). Each `Tle` carries the opsmode it was constructed
|
|
6107
|
+
* with, so a deep-space / opsmode-sensitive object is propagated in its own
|
|
6108
|
+
* mode. The `Tle` instances are consumed by this call.
|
|
6109
|
+
*
|
|
6110
|
+
* `epochsUnixUs` is a `BigInt64Array` of unix-microsecond UTC epochs shared by
|
|
6111
|
+
* every satellite. The hot case for a constellation animation is a single epoch
|
|
6112
|
+
* (`epochCount == 1`), giving one TEME state per satellite, but any epoch count
|
|
6113
|
+
* is supported. An empty fleet or empty epoch grid yields empty arrays. Throws
|
|
6114
|
+
* an `Error` (naming the satellite index) if a satellite fails to propagate.
|
|
6115
|
+
*/
|
|
6116
|
+
export function propagateBatch(satellites: Tle[], epochs_unix_us: BigInt64Array): FleetPropagation;
|
|
6117
|
+
|
|
3657
6118
|
/**
|
|
3658
6119
|
* Numerically propagate an ECI Cartesian state and sample it at a grid of
|
|
3659
6120
|
* epochs.
|
|
@@ -3675,6 +6136,20 @@ export function pseudorangeDropReasonLabel(reason: PseudorangeDropReason): strin
|
|
|
3675
6136
|
*/
|
|
3676
6137
|
export function pseudorangeVariance(elevation_deg: number, options: any): number;
|
|
3677
6138
|
|
|
6139
|
+
/**
|
|
6140
|
+
* Run standalone range RAIM/FDE over a linearized measurement set.
|
|
6141
|
+
*
|
|
6142
|
+
* `rows` is an array of `{ id, residualM, designRow, weight }` objects (each
|
|
6143
|
+
* `designRow` the measurement's design-matrix row, of length equal to the
|
|
6144
|
+
* estimated state dimension). `options` is an optional `{ pFa?, maxExclusions?,
|
|
6145
|
+
* minRedundancy? }` object (pass `undefined` for the core defaults). Returns the
|
|
6146
|
+
* protected state correction, covariance, global chi-square test, the excluded
|
|
6147
|
+
* ids, the per-measurement diagnostics, and the exclusion count. Delegates to
|
|
6148
|
+
* `sidereon_core::quality::raim_fde_design`. Throws a `TypeError` for malformed
|
|
6149
|
+
* input and an `Error` for a rank-deficient or otherwise rejected set.
|
|
6150
|
+
*/
|
|
6151
|
+
export function raimFdeDesign(rows: any, options: any): any;
|
|
6152
|
+
|
|
3678
6153
|
/**
|
|
3679
6154
|
* Convert a pseudorange rate in metres per second to Doppler shift in hertz.
|
|
3680
6155
|
*/
|
|
@@ -3695,12 +6170,64 @@ export function rinexBandFrequencyHz(system: GnssSystem, band: string, glonass_c
|
|
|
3695
6170
|
*/
|
|
3696
6171
|
export function rinexBandWavelengthM(system: GnssSystem, band: string, glonass_channel?: number | null): number | undefined;
|
|
3697
6172
|
|
|
6173
|
+
/**
|
|
6174
|
+
* Read the 12-bit RTCM message number from a message body.
|
|
6175
|
+
*
|
|
6176
|
+
* `body` is the bytes between the frame length word and CRC. Delegates to
|
|
6177
|
+
* `sidereon_core::rtcm::message_number`.
|
|
6178
|
+
*/
|
|
6179
|
+
export function rtcmMessageNumber(body: Uint8Array): number;
|
|
6180
|
+
|
|
3698
6181
|
/**
|
|
3699
6182
|
* Transform a 3x3 RTN covariance (flat row-major length 9) to ECI for the given
|
|
3700
6183
|
* orbit state. Returns a flat row-major length-9 `Float64Array`.
|
|
3701
6184
|
*/
|
|
3702
6185
|
export function rtnToEciCovariance(covariance_rtn: Float64Array, position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
|
|
3703
6186
|
|
|
6187
|
+
/**
|
|
6188
|
+
* Convert an inertial Cartesian state to classical orbital elements.
|
|
6189
|
+
*
|
|
6190
|
+
* `r` is the ECI position (km), `v` the ECI velocity (km/s), and `mu` the
|
|
6191
|
+
* gravitational parameter (km^3/s^2). Returns a `ClassicalElements` object;
|
|
6192
|
+
* undefined primary angles and the inapplicable auxiliary angles are `NaN` per
|
|
6193
|
+
* the orbit type. Delegates to `sidereon_core::astro::elements::rv2coe`. Throws
|
|
6194
|
+
* a `TypeError` for a wrong-length vector and an `Error` for a degenerate or
|
|
6195
|
+
* non-finite state.
|
|
6196
|
+
*/
|
|
6197
|
+
export function rv2coe(r: Float64Array, v: Float64Array, mu: number): any;
|
|
6198
|
+
|
|
6199
|
+
/**
|
|
6200
|
+
* Apparent visual magnitude of a sunlit body from a diffuse-sphere phase law.
|
|
6201
|
+
*
|
|
6202
|
+
* `rangeKm` and `referenceRangeKm` (both positive) are the observation range
|
|
6203
|
+
* and the reference range at which `standardMagnitude` is defined;
|
|
6204
|
+
* `phaseAngleDeg` is the solar phase angle (Sun-body-observer), clamped to
|
|
6205
|
+
* `[0, 180]`. Delegates to
|
|
6206
|
+
* `sidereon_core::astro::observation::satellite_visual_magnitude`.
|
|
6207
|
+
*/
|
|
6208
|
+
export function satelliteVisualMagnitude(range_km: number, phase_angle_deg: number, standard_magnitude: number, reference_range_km: number): number;
|
|
6209
|
+
|
|
6210
|
+
/**
|
|
6211
|
+
* Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
|
|
6212
|
+
*
|
|
6213
|
+
* `primaryLine1` / `primaryLine2` is the primary TLE; `secondaries` is an array
|
|
6214
|
+
* of `{ line1, line2 }`; `missDistanceThresholdKm` is the miss-distance cutoff.
|
|
6215
|
+
* Returns one `TcaScreeningHit` (`{ secondaryIndex, candidate }`) per local TCA
|
|
6216
|
+
* at or below the threshold, in catalog then time order. Delegates to
|
|
6217
|
+
* `sidereon_core::astro::tca::screen_tca_candidates_from_tle_catalog_serial`.
|
|
6218
|
+
*/
|
|
6219
|
+
export function screenTcaCandidates(primary_line1: string, primary_line2: string, secondaries: any, window_start_unix_micros: bigint, window_end_unix_micros: bigint, miss_distance_threshold_km: number, options: any): any;
|
|
6220
|
+
|
|
6221
|
+
/**
|
|
6222
|
+
* Screen a primary against a secondary TLE catalog and evaluate collision
|
|
6223
|
+
* probability at each threshold TCA.
|
|
6224
|
+
*
|
|
6225
|
+
* Like `screenTcaCandidates`, plus `pcOptions`. Returns an array of
|
|
6226
|
+
* `TcaScreeningConjunctionHit` (`{ secondaryIndex, conjunction }`). Delegates to
|
|
6227
|
+
* `sidereon_core::astro::tca::screen_tca_conjunctions_from_tle_catalog_serial`.
|
|
6228
|
+
*/
|
|
6229
|
+
export function screenTcaConjunctions(primary_line1: string, primary_line2: string, secondaries: any, window_start_unix_micros: bigint, window_end_unix_micros: bigint, miss_distance_threshold_km: number, pc_options: any, options: any): any;
|
|
6230
|
+
|
|
3704
6231
|
/**
|
|
3705
6232
|
* Select an IONEX product usable at `requestedEpochJ2000S`, degrading to a
|
|
3706
6233
|
* diurnal-shifted prior product within `policy`.
|
|
@@ -3763,6 +6290,65 @@ export function smoothIonoFreeCode(arc: any, options: any, hatch_window_cap?: nu
|
|
|
3763
6290
|
*/
|
|
3764
6291
|
export function snrPostDb(cn0_dbhz: number, integration_time_s: number): number;
|
|
3765
6292
|
|
|
6293
|
+
/**
|
|
6294
|
+
* Solid-earth pole tide displacement of an ITRF station, metres (ECEF).
|
|
6295
|
+
*
|
|
6296
|
+
* `stationEcefM` is a length-3 geocentric ECEF metre vector and the epoch is
|
|
6297
|
+
* the UTC `year`/`month`/`day` plus `fractionalHour`. `xpArcsec` / `ypArcsec`
|
|
6298
|
+
* are the polar-motion coordinates in arcseconds. Returns the displacement
|
|
6299
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::solid_earth_pole_tide`.
|
|
6300
|
+
*/
|
|
6301
|
+
export function solidEarthPoleTide(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, xp_arcsec: number, yp_arcsec: number): Float64Array;
|
|
6302
|
+
|
|
6303
|
+
/**
|
|
6304
|
+
* Solid-earth tide displacement of an ITRF station, metres (ECEF).
|
|
6305
|
+
*
|
|
6306
|
+
* `stationEcefM`, `sunEcefM`, `moonEcefM` are length-3 geocentric ECEF metre
|
|
6307
|
+
* vectors. The epoch is the UTC `year`/`month`/`day` plus `fractionalHour`
|
|
6308
|
+
* (`hour + min/60 + sec/3600`, in `[0, 24)`). Returns the displacement
|
|
6309
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::solid_earth_tide`.
|
|
6310
|
+
*/
|
|
6311
|
+
export function solidEarthTide(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, sun_ecef_m: Float64Array, moon_ecef_m: Float64Array): Float64Array;
|
|
6312
|
+
|
|
6313
|
+
/**
|
|
6314
|
+
* Solve a sequence of moving-baseline RTK epochs.
|
|
6315
|
+
*
|
|
6316
|
+
* `config` is a plain object; see the `MovingBaselineConfig` TypeScript type.
|
|
6317
|
+
* Each epoch is solved independently against its own `basePositionM`; with
|
|
6318
|
+
* `warmStart` (default `true`) each solved baseline seeds the next epoch's
|
|
6319
|
+
* linearization point. Returns an array of `MovingBaselineEpochSolution`. Throws
|
|
6320
|
+
* a `TypeError` for malformed input and an `Error` if a solve fails (the message
|
|
6321
|
+
* names the failing epoch index). Delegates to
|
|
6322
|
+
* `sidereon_core::rtk_filter::moving_baseline::solve_moving_baseline`.
|
|
6323
|
+
*/
|
|
6324
|
+
export function solveMovingBaseline(config: any): MovingBaselineSolution[];
|
|
6325
|
+
|
|
6326
|
+
/**
|
|
6327
|
+
* Solve a static integer-fixed PPP arc from raw epochs: SPP auto-init seed, the
|
|
6328
|
+
* float solve, then the LAMBDA integer fix and ambiguity-conditioned re-solve.
|
|
6329
|
+
*
|
|
6330
|
+
* `epochs`, `floatConfig`, and `fixedConfig` are the same plain objects the
|
|
6331
|
+
* float and fixed solves take; `options` is an optional `PppAutoInitOptions`
|
|
6332
|
+
* object. Delegates to
|
|
6333
|
+
* `sidereon_core::precise_positioning::auto_init::solve_ppp_auto_init_fixed`.
|
|
6334
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6335
|
+
*/
|
|
6336
|
+
export function solvePppAutoInitFixed(sp3: Sp3, epochs: any, options: any, float_config: any, fixed_config: any): PppFixedSolution;
|
|
6337
|
+
|
|
6338
|
+
/**
|
|
6339
|
+
* Solve a static multi-epoch float PPP arc from raw epochs, auto-initializing
|
|
6340
|
+
* the float state from the SPP seed.
|
|
6341
|
+
*
|
|
6342
|
+
* Unlike [`solvePppFloat`], the caller does not supply an initial state: the
|
|
6343
|
+
* driver seeds it (per-epoch SPP code solve, mean position, phase-minus-code
|
|
6344
|
+
* ambiguities) before the float solve. `epochs` and `config` are the same plain
|
|
6345
|
+
* objects [`solvePppFloat`] takes; `options` is an optional `PppAutoInitOptions`
|
|
6346
|
+
* object (pass `undefined` for the SPP-seeded defaults). Delegates to
|
|
6347
|
+
* `sidereon_core::precise_positioning::auto_init::solve_ppp_auto_init_float`.
|
|
6348
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6349
|
+
*/
|
|
6350
|
+
export function solvePppAutoInitFloat(sp3: Sp3, epochs: any, options: any, config: any): PppFloatSolution;
|
|
6351
|
+
|
|
3766
6352
|
/**
|
|
3767
6353
|
* Search integer ambiguities from a float PPP solution and re-solve fixed.
|
|
3768
6354
|
*
|
|
@@ -3781,6 +6367,18 @@ export function solvePppFixed(sp3: Sp3, epochs: any, float_solution: PppFloatSol
|
|
|
3781
6367
|
*/
|
|
3782
6368
|
export function solvePppFloat(sp3: Sp3, epochs: any, initial_state: any, config: any): PppFloatSolution;
|
|
3783
6369
|
|
|
6370
|
+
/**
|
|
6371
|
+
* Solve a sequential RTK baseline arc from raw rover+base epochs.
|
|
6372
|
+
*
|
|
6373
|
+
* `epochs` is an array of `RtkArcEpoch` objects and `config` an `RtkArcConfig`
|
|
6374
|
+
* object (see the TypeScript types). Returns `{ references, epochs, finalState }`:
|
|
6375
|
+
* one reported baseline/ambiguity solution per input epoch, the per-system
|
|
6376
|
+
* reference satellites selected once for the whole arc, and the final carried
|
|
6377
|
+
* filter state. Delegates to `sidereon_core::rtk_filter::arc::solve_rtk_arc`.
|
|
6378
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6379
|
+
*/
|
|
6380
|
+
export function solveRtkArc(epochs: any, config: any): any;
|
|
6381
|
+
|
|
3784
6382
|
/**
|
|
3785
6383
|
* Solve a static fixed RTK baseline with residual validation / FDE.
|
|
3786
6384
|
*
|
|
@@ -3798,12 +6396,29 @@ export function solveRtkFixed(config: any): RtkFixedSolution;
|
|
|
3798
6396
|
export function solveRtkFloat(config: any): RtkFloatSolution;
|
|
3799
6397
|
|
|
3800
6398
|
/**
|
|
3801
|
-
* Solve
|
|
3802
|
-
*
|
|
3803
|
-
*
|
|
6399
|
+
* Solve a static RTK arc with one batch float solution and one validated fixed
|
|
6400
|
+
* solution over the whole arc.
|
|
6401
|
+
*
|
|
6402
|
+
* `epochs` is an array of `RtkArcEpoch` objects and `config` a
|
|
6403
|
+
* `RtkStaticArcConfig` object. Delegates to
|
|
6404
|
+
* `sidereon_core::rtk_filter::arc::solve_static_rtk_arc`.
|
|
6405
|
+
*/
|
|
6406
|
+
export function solveStaticRtkArc(epochs: any, config: any): any;
|
|
6407
|
+
|
|
6408
|
+
/**
|
|
6409
|
+
* Solve receiver velocity over an SP3 precise product. See
|
|
6410
|
+
* [`solveVelocityBroadcast`] for the broadcast-ephemeris counterpart.
|
|
3804
6411
|
*/
|
|
3805
6412
|
export function solveVelocity(sp3: Sp3, observations: any, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): VelocitySolution;
|
|
3806
6413
|
|
|
6414
|
+
/**
|
|
6415
|
+
* Solve receiver ECEF velocity and clock drift from one epoch of observations
|
|
6416
|
+
* over a broadcast ephemeris store. Identical to [`solveVelocity`] except the
|
|
6417
|
+
* satellite states come from broadcast records. Delegates to
|
|
6418
|
+
* `sidereon_core::velocity::solve`.
|
|
6419
|
+
*/
|
|
6420
|
+
export function solveVelocityBroadcast(broadcast: BroadcastEphemeris, observations: any, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): VelocitySolution;
|
|
6421
|
+
|
|
3807
6422
|
/**
|
|
3808
6423
|
* Solve a receiver position, preferring precise SP3 products and falling back to
|
|
3809
6424
|
* broadcast ephemeris, reporting which source was used and how stale it is.
|
|
@@ -3817,6 +6432,33 @@ export function solveVelocity(sp3: Sp3, observations: any, receiver_ecef_m: Floa
|
|
|
3817
6432
|
*/
|
|
3818
6433
|
export function solveWithFallback(precise: Sp3[], broadcast: BroadcastEphemeris, request: any, policy: any): SourcedSolution;
|
|
3819
6434
|
|
|
6435
|
+
/**
|
|
6436
|
+
* Continuous seconds since J2000 for a split Julian date.
|
|
6437
|
+
*/
|
|
6438
|
+
export function splitJdToJ2000Seconds(jd_whole: number, jd_fraction: number): number;
|
|
6439
|
+
|
|
6440
|
+
/**
|
|
6441
|
+
* Sub-observer point (planetary central meridian) on a rotating body.
|
|
6442
|
+
*
|
|
6443
|
+
* `observerFromBody` is the observer position relative to the body center
|
|
6444
|
+
* (length-3 `Float64Array`) in an inertial (ICRF/J2000 equatorial) frame, and
|
|
6445
|
+
* `poleRaDeg` / `poleDecDeg` / `primeMeridianDeg` are the IAU WGCCRE pole right
|
|
6446
|
+
* ascension, declination, and prime-meridian angle. Returns the body-fixed
|
|
6447
|
+
* `{ latitudeDeg, longitudeDeg }` (planetocentric, longitude on `(-180, 180]`).
|
|
6448
|
+
* Delegates to `sidereon_core::astro::observation::sub_observer_point`.
|
|
6449
|
+
*/
|
|
6450
|
+
export function subObserverPoint(observer_from_body: Float64Array, pole_ra_deg: number, pole_dec_deg: number, prime_meridian_deg: number): any;
|
|
6451
|
+
|
|
6452
|
+
/**
|
|
6453
|
+
* Sub-solar point: the geographic point where the Sun is at the zenith.
|
|
6454
|
+
*
|
|
6455
|
+
* `sunEcef` is the geocentric Sun position (length-3 `Float64Array`) in an
|
|
6456
|
+
* Earth-fixed (ITRS/ECEF) frame; only its direction matters. Returns
|
|
6457
|
+
* `{ latitudeDeg, longitudeDeg }` (geocentric, degrees). Delegates to
|
|
6458
|
+
* `sidereon_core::astro::observation::sub_solar_point`.
|
|
6459
|
+
*/
|
|
6460
|
+
export function subSolarPoint(sun_ecef: Float64Array): any;
|
|
6461
|
+
|
|
3820
6462
|
/**
|
|
3821
6463
|
* Angle in degrees between satellite nadir and the Sun direction.
|
|
3822
6464
|
*/
|
|
@@ -3848,11 +6490,45 @@ export function sunMoonEci(epochs_unix_us: BigInt64Array): SunMoon;
|
|
|
3848
6490
|
*/
|
|
3849
6491
|
export function temeToGcrs(position_km: Float64Array, velocity_km_s: Float64Array, epochs_unix_us: BigInt64Array, skyfield_compat?: boolean | null): FrameStates;
|
|
3850
6492
|
|
|
6493
|
+
/**
|
|
6494
|
+
* Latitude (degrees) of the day-night terminator at a query longitude.
|
|
6495
|
+
*
|
|
6496
|
+
* `subSolarLatitudeDeg` / `subSolarLongitudeDeg` are the sub-solar point (see
|
|
6497
|
+
* `subSolarPoint`); `longitudeDeg` is the query longitude. Delegates to
|
|
6498
|
+
* `sidereon_core::astro::observation::terminator_latitude_deg`.
|
|
6499
|
+
*/
|
|
6500
|
+
export function terminatorLatitudeDeg(sub_solar_latitude_deg: number, sub_solar_longitude_deg: number, longitude_deg: number): number;
|
|
6501
|
+
|
|
3851
6502
|
/**
|
|
3852
6503
|
* Short uppercase identifier for a time scale, e.g. `"GPST"`.
|
|
3853
6504
|
*/
|
|
3854
6505
|
export function timeScaleAbbrev(scale: TimeScale): string;
|
|
3855
6506
|
|
|
6507
|
+
/**
|
|
6508
|
+
* Leap-aware inter-system offset `to_reading - from_reading`, in seconds, at a
|
|
6509
|
+
* given UTC instant. Add the result to a `from`-scale reading to get the
|
|
6510
|
+
* `to`-scale reading.
|
|
6511
|
+
*
|
|
6512
|
+
* `utcJd` is the UTC Julian date of the instant; it is consulted only to
|
|
6513
|
+
* resolve the leap-second count when `from` or `to` is UTC-based
|
|
6514
|
+
* (`Utc`/`Glonasst`), and is ignored for purely atomic pairs. Throws a
|
|
6515
|
+
* `RangeError` for `Tdb` or a non-finite `utcJd` when a leap count is needed.
|
|
6516
|
+
*/
|
|
6517
|
+
export function timescaleOffsetAtS(from: TimeScale, to: TimeScale, utc_jd: number): number;
|
|
6518
|
+
|
|
6519
|
+
/**
|
|
6520
|
+
* Fixed inter-system offset `to_reading - from_reading`, in seconds, for the
|
|
6521
|
+
* same physical instant. Add the result to a `from`-scale reading to get the
|
|
6522
|
+
* `to`-scale reading.
|
|
6523
|
+
*
|
|
6524
|
+
* Covers the atomic scales (TAI/TT/GPST/GST/QZSST/BDT), whose mutual offsets
|
|
6525
|
+
* are constants fixed by their ICDs. Throws a `RangeError` when either scale is
|
|
6526
|
+
* UTC-based (`Utc`/`Glonasst`) — those carry leap seconds, so their offset is
|
|
6527
|
+
* epoch-dependent and needs [`timescaleOffsetAtS`] — or for `Tdb` (no fixed
|
|
6528
|
+
* offset; resolve it through an `Instant`).
|
|
6529
|
+
*/
|
|
6530
|
+
export function timescaleOffsetS(from: TimeScale, to: TimeScale): number;
|
|
6531
|
+
|
|
3856
6532
|
/**
|
|
3857
6533
|
* Export records as the compact mapping CSV (`prn,norad_cat_id,active,sp3_id`).
|
|
3858
6534
|
*
|
|
@@ -3912,6 +6588,25 @@ export function validate(records: any): any;
|
|
|
3912
6588
|
*/
|
|
3913
6589
|
export function validateAgainstSp3Ids(records: any, ids: any): any;
|
|
3914
6590
|
|
|
6591
|
+
/**
|
|
6592
|
+
* Satellites visible above `minElevationDeg` from `station` at a single instant,
|
|
6593
|
+
* from already-initialized [`Tle`]s: the opsmode-preserving constellation
|
|
6594
|
+
* snapshot.
|
|
6595
|
+
*
|
|
6596
|
+
* Each `Tle` in `satellites` carries the opsmode it was constructed with, so a
|
|
6597
|
+
* deep-space / opsmode-sensitive object is evaluated in its own mode (unlike the
|
|
6598
|
+
* element-based core path, which hardcodes AFSPC). `ids` supplies the identity
|
|
6599
|
+
* out-of-band: `ids[i]` (a catalog number, name, or anything) becomes the
|
|
6600
|
+
* `catalogNumber` of `satellites[i]`, so the two arrays must be the same length.
|
|
6601
|
+
* The `Tle` instances are consumed by this call.
|
|
6602
|
+
*
|
|
6603
|
+
* `epochUnixUs` is a unix-microsecond UTC `bigint`. Per-satellite propagation or
|
|
6604
|
+
* frame failures are skipped; the result is filtered by `minElevationDeg` and
|
|
6605
|
+
* sorted by elevation descending. Throws an `Error` on an invalid station,
|
|
6606
|
+
* elevation threshold, or `ids`/`satellites` length mismatch.
|
|
6607
|
+
*/
|
|
6608
|
+
export function visibleFromSatellites(satellites: Tle[], ids: string[], station: GroundStation, epoch_unix_us: bigint, min_elevation_deg: number): VisibleSatellite[];
|
|
6609
|
+
|
|
3915
6610
|
/**
|
|
3916
6611
|
* Wavelength, metres, for frequency in Hz.
|
|
3917
6612
|
*/
|