satkit 0.8.5__cp38-cp38-win_amd64.whl → 0.9.1__cp38-cp38-win_amd64.whl
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.
- satkit/_version.py +2 -2
- satkit/satkit.cp38-win_amd64.pyd +0 -0
- satkit/satkit.pyi +67 -26
- {satkit-0.8.5.dist-info → satkit-0.9.1.dist-info}/METADATA +42 -32
- {satkit-0.8.5.dist-info → satkit-0.9.1.dist-info}/RECORD +8 -8
- {satkit-0.8.5.dist-info → satkit-0.9.1.dist-info}/LICENSE +0 -0
- {satkit-0.8.5.dist-info → satkit-0.9.1.dist-info}/WHEEL +0 -0
- {satkit-0.8.5.dist-info → satkit-0.9.1.dist-info}/top_level.txt +0 -0
satkit/_version.py
CHANGED
satkit/satkit.cp38-win_amd64.pyd
CHANGED
|
Binary file
|
satkit/satkit.pyi
CHANGED
|
@@ -261,7 +261,7 @@ class TLE:
|
|
|
261
261
|
"""
|
|
262
262
|
|
|
263
263
|
def sgp4(
|
|
264
|
-
tle: TLE | list[TLE],
|
|
264
|
+
tle: TLE | list[TLE] | dict,
|
|
265
265
|
tm: time | list[time] | npt.ArrayLike,
|
|
266
266
|
**kwargs,
|
|
267
267
|
) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
|
|
@@ -276,7 +276,7 @@ def sgp4(
|
|
|
276
276
|
https://celestrak.org/publications/AIAA/2008-6770/AIAA-2008-6770.pdf
|
|
277
277
|
|
|
278
278
|
Args:
|
|
279
|
-
tle (TLE | list[TLE]): TLE (or list of TLES) on which to operate
|
|
279
|
+
tle (TLE | list[TLE] | dict): TLE or OMM (or list of TLES) on which to operate
|
|
280
280
|
tm (time | list[time] | npt.ArrayLike[time]): time(s) at which to compute position and velocity
|
|
281
281
|
|
|
282
282
|
Keyword Args:
|
|
@@ -294,6 +294,12 @@ def sgp4(
|
|
|
294
294
|
Additional return value if errflag is True:
|
|
295
295
|
list[sgp4_error]: list of errors for each TLE and time output, if errflag is True
|
|
296
296
|
|
|
297
|
+
Note:
|
|
298
|
+
Now supports propagation of OMM (Orbital Mean-Element Message) dictionaries
|
|
299
|
+
The dictionaries must follow the structure used by https://www.celestrak.org or
|
|
300
|
+
https://www.space-track.org.
|
|
301
|
+
|
|
302
|
+
|
|
297
303
|
Example:
|
|
298
304
|
>>> lines = [
|
|
299
305
|
>>> "0 INTELSAT 902",
|
|
@@ -317,6 +323,20 @@ def sgp4(
|
|
|
317
323
|
>>> # Print ITRF coordinate object location
|
|
318
324
|
>>> print(coord)
|
|
319
325
|
ITRFCoord(lat: -0.0363 deg, lon: -2.2438 deg, hae: 35799.51 km)
|
|
326
|
+
|
|
327
|
+
Example 2:
|
|
328
|
+
>>> import requests
|
|
329
|
+
>>> import json
|
|
330
|
+
>>>
|
|
331
|
+
>>> # Query ephemeris for the International Space Station (ISS)
|
|
332
|
+
>>> url = 'https://celestrak.org/NORAD/elements/gp.php?CATNR=25544&FORMAT=json'
|
|
333
|
+
>>> with requests.get(url) as response:
|
|
334
|
+
>>> omm = response.json()
|
|
335
|
+
>>> # Get a representative time from the output
|
|
336
|
+
>>> epoch = sk.time(omm[0]['EPOCH'])
|
|
337
|
+
>>> # Compute TEME position & velocity at epoch
|
|
338
|
+
>>> pteme, vteme = satkit.sgp4(omm[0], epoch)
|
|
339
|
+
|
|
320
340
|
"""
|
|
321
341
|
|
|
322
342
|
class sgp4_gravconst:
|
|
@@ -968,9 +988,30 @@ class time:
|
|
|
968
988
|
satkit.time: Time object representing the same instant in time as the input "datetime.datetime" object
|
|
969
989
|
"""
|
|
970
990
|
|
|
971
|
-
def
|
|
991
|
+
def as_datetime(self, utc: bool = True) -> datetime.datetime:
|
|
972
992
|
"""Convert object to "datetime.datetime" object representing same instant in time.
|
|
973
993
|
|
|
994
|
+
Args:
|
|
995
|
+
utc (bool, optional): Whether to make the "datetime.datetime" object represent time in the local timezone or "UTC". Default is True
|
|
996
|
+
|
|
997
|
+
Returns:
|
|
998
|
+
datetime.datetime: "datetime.datetime" object representing the same instant in time as the "satkit.time" object
|
|
999
|
+
|
|
1000
|
+
Example:
|
|
1001
|
+
>>> dt = satkit.time(2023, 6, 3, 6, 19, 34).as_datetime(True)
|
|
1002
|
+
>>> print(dt)
|
|
1003
|
+
2023-06-03 06:19:34+00:00
|
|
1004
|
+
>>>
|
|
1005
|
+
>>> dt = satkit.time(2023, 6, 3, 6, 19, 34).as_datetime(False)
|
|
1006
|
+
>>> print(dt)
|
|
1007
|
+
2023-06-03 02:19:34
|
|
1008
|
+
"""
|
|
1009
|
+
|
|
1010
|
+
def datetime(self, utc: bool = True) -> datetime.datetime:
|
|
1011
|
+
"""Deprecated: use :meth:`satkit.time.as_datetime`.
|
|
1012
|
+
|
|
1013
|
+
Convert object to "datetime.datetime" object representing same instant in time.
|
|
1014
|
+
|
|
974
1015
|
Args:
|
|
975
1016
|
utc (bool, optional): Whether to make the "datetime.datetime" object represent time in the local timezone or "UTC". Default is True
|
|
976
1017
|
|
|
@@ -2235,7 +2276,7 @@ class propresult:
|
|
|
2235
2276
|
|
|
2236
2277
|
Notes:
|
|
2237
2278
|
|
|
2238
|
-
* If "enable_interp" is set to True in the propagation settings, the propresult object can be used to interpolate solutions at any time between the
|
|
2279
|
+
* If "enable_interp" is set to True in the propagation settings, the propresult object can be used to interpolate solutions at any time between the begin and end times of the propagation via the "interp" method
|
|
2239
2280
|
|
|
2240
2281
|
"""
|
|
2241
2282
|
|
|
@@ -2276,10 +2317,10 @@ class propresult:
|
|
|
2276
2317
|
"""
|
|
2277
2318
|
|
|
2278
2319
|
@property
|
|
2279
|
-
def
|
|
2280
|
-
"""6-element state (pos + vel) of satellite in meters & meters/second at
|
|
2320
|
+
def state_begin(self) -> npt.NDArray[np.float64]:
|
|
2321
|
+
"""6-element state (pos + vel) of satellite in meters & meters/second at begin of propagation
|
|
2281
2322
|
Returns:
|
|
2282
|
-
npt.NDArray[np.float64]: 6-element numpy array representing state of satellite in meters & meters/second at
|
|
2323
|
+
npt.NDArray[np.float64]: 6-element numpy array representing state of satellite in meters & meters/second at begin of propagation
|
|
2283
2324
|
"""
|
|
2284
2325
|
|
|
2285
2326
|
@property
|
|
@@ -2302,12 +2343,12 @@ class propresult:
|
|
|
2302
2343
|
"""
|
|
2303
2344
|
|
|
2304
2345
|
@property
|
|
2305
|
-
def
|
|
2306
|
-
"""Time at which
|
|
2346
|
+
def time_begin(self) -> time:
|
|
2347
|
+
"""Time at which state_begin is valid
|
|
2307
2348
|
|
|
2308
2349
|
|
|
2309
2350
|
Returns:
|
|
2310
|
-
satkit.time: Time at which
|
|
2351
|
+
satkit.time: Time at which state_begin is valid
|
|
2311
2352
|
"""
|
|
2312
2353
|
|
|
2313
2354
|
@property
|
|
@@ -2398,7 +2439,7 @@ class propsettings:
|
|
|
2398
2439
|
* use_jplephem: True
|
|
2399
2440
|
* enable_interp: True
|
|
2400
2441
|
|
|
2401
|
-
|
|
2442
|
+
* enable_interp enables high-preciion interpolation of state between begin and end times via the returned function,
|
|
2402
2443
|
it is enabled by default. There is a small increase in computational efficiency if set to false
|
|
2403
2444
|
|
|
2404
2445
|
"""
|
|
@@ -2412,7 +2453,7 @@ class propsettings:
|
|
|
2412
2453
|
gravity_order (int, optional keyword): Earth gravity order to use in ODE integration. Default is 4
|
|
2413
2454
|
use_spaceweather (bool, optional keyword): Use space weather data when computing atmospheric density for drag forces. Default is True
|
|
2414
2455
|
use_jplephem (bool, optional keyword): Use JPL ephemeris for solar system bodies. Default is True
|
|
2415
|
-
enable_interp (bool, optional keyword): Store intermediate data that allows for fast high-precision interpolation of state between
|
|
2456
|
+
enable_interp (bool, optional keyword): Store intermediate data that allows for fast high-precision interpolation of state between begin and end times. Default is True
|
|
2416
2457
|
|
|
2417
2458
|
|
|
2418
2459
|
Returns:
|
|
@@ -2471,30 +2512,30 @@ class propsettings:
|
|
|
2471
2512
|
def use_spaceweather(self, value: bool) -> None: ...
|
|
2472
2513
|
@property
|
|
2473
2514
|
def enable_interp(self) -> bool:
|
|
2474
|
-
"""Store intermediate data that allows for fast high-precision interpolation of state between
|
|
2515
|
+
"""Store intermediate data that allows for fast high-precision interpolation of state between begin and end times
|
|
2475
2516
|
If not needed, there is a small computational advantage if set to False
|
|
2476
2517
|
"""
|
|
2477
2518
|
|
|
2478
2519
|
@enable_interp.setter
|
|
2479
2520
|
def enable_interp(self, value: bool) -> None: ...
|
|
2480
2521
|
def precompute_terms(
|
|
2481
|
-
self,
|
|
2522
|
+
self, begin: time, end: time, step: Optional[duration] = None
|
|
2482
2523
|
):
|
|
2483
|
-
"""Precompute terms for fast interpolation of state between
|
|
2524
|
+
"""Precompute terms for fast interpolation of state between begin and end times
|
|
2484
2525
|
|
|
2485
2526
|
This can be used, for example, to compute sun and moon positions only once if propagating many satellites over the same time period
|
|
2486
2527
|
|
|
2487
2528
|
Args:
|
|
2488
|
-
|
|
2489
|
-
|
|
2529
|
+
begin (satkit.time): Begin time of propagation
|
|
2530
|
+
end (satkit.time): End time of propagation
|
|
2490
2531
|
step (satkit.duration, optional): Step size for interpolation. Default = 60 seconds
|
|
2491
2532
|
|
|
2492
2533
|
"""
|
|
2493
2534
|
|
|
2494
2535
|
def propagate(
|
|
2495
2536
|
state: npt.NDArray[np.float64],
|
|
2496
|
-
|
|
2497
|
-
|
|
2537
|
+
begin: time,
|
|
2538
|
+
end: time,
|
|
2498
2539
|
**kwargs,
|
|
2499
2540
|
) -> propresult:
|
|
2500
2541
|
"""High-precision orbit propagator
|
|
@@ -2503,12 +2544,12 @@ def propagate(
|
|
|
2503
2544
|
|
|
2504
2545
|
Args:
|
|
2505
2546
|
state (npt.ArrayLike[float], optional): 6-element numpy array representing satellite GCRF position and velocity in meters and meters/second
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
duration (satkit.duration, optional keyword): duration from "
|
|
2509
|
-
duration_secs (float, optional keyword): duration in seconds from "
|
|
2510
|
-
duration_days (float, optional keyword): duration in days from "
|
|
2511
|
-
output_phi (bool, optional keyword): Output 6x6 state transition matrix between "
|
|
2547
|
+
begin (satkit.time, optional): satkit.time object representing instant at which satellite is at "pos" & "vel"
|
|
2548
|
+
end (satkit.time, optional keyword): satkit.time object representing instant at which new position and velocity will be computed
|
|
2549
|
+
duration (satkit.duration, optional keyword): duration from "begin" at which new position & velocity will be computed.
|
|
2550
|
+
duration_secs (float, optional keyword): duration in seconds from "begin" for at which new position and velocity will be computed.
|
|
2551
|
+
duration_days (float, optional keyword): duration in days from "begin" at which new position and velocity will be computed.
|
|
2552
|
+
output_phi (bool, optional keyword): Output 6x6 state transition matrix between "begintime" and "endtime" (and at intervals, if specified)
|
|
2512
2553
|
propsettings (propsettings, optional keyword): "propsettings" object with input settings for the propagation. if left out, default will be used.
|
|
2513
2554
|
satproperties (satproperties_static, optional keyword): "sat_properties_static" object with drag and radiation pressure succeptibility of satellite.
|
|
2514
2555
|
|
|
@@ -2524,7 +2565,7 @@ def propagate(
|
|
|
2524
2565
|
* Sun, Moon gravity
|
|
2525
2566
|
* Radiation pressured
|
|
2526
2567
|
* Atmospheric drag: NRL-MISE 2000 density model, with option to include space weather effects (which can be large)
|
|
2527
|
-
*
|
|
2568
|
+
* End time must be set by keyword argument, either explicitely or by duration
|
|
2528
2569
|
* Solid Earth tides are not (yet) included in the model
|
|
2529
2570
|
|
|
2530
2571
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: satkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.1
|
|
4
4
|
Summary: Satellite Orbital Dynamics Toolkit
|
|
5
5
|
Author-email: Steven Michael <ssmichael@gmail.com>
|
|
6
6
|
Maintainer-email: Steven Michael <ssmichael@gmail.com>
|
|
@@ -40,6 +40,9 @@ Description-Content-Type: text/markdown
|
|
|
40
40
|
License-File: LICENSE
|
|
41
41
|
Requires-Dist: numpy >=1.0.0
|
|
42
42
|
Requires-Dist: satkit-data >=0.7.0
|
|
43
|
+
Provides-Extra: test
|
|
44
|
+
Requires-Dist: pytest ; extra == 'test'
|
|
45
|
+
Requires-Dist: xmltodict ; extra == 'test'
|
|
43
46
|
|
|
44
47
|
# Satellite Toolkit (satkit)
|
|
45
48
|
|
|
@@ -47,7 +50,7 @@ Requires-Dist: satkit-data >=0.7.0
|
|
|
47
50
|
|
|
48
51
|
Satkit provides robust, high-performance satellite orbital mechanics calculations with a clean, intuitive API. Built from the ground up in Rust for maximum performance and memory safety, it offers complete Python bindings for all functionality, making advanced orbital mechanics accessible to both systems programmers and data scientists.
|
|
49
52
|
|
|
50
|
-
-----
|
|
53
|
+
-----
|
|
51
54
|
|
|
52
55
|

|
|
53
56
|

|
|
@@ -61,7 +64,7 @@ Satkit provides robust, high-performance satellite orbital mechanics calculation
|
|
|
61
64
|

|
|
62
65
|

|
|
63
66
|

|
|
64
|
-
|
|
67
|
+
|
|
65
68
|
------
|
|
66
69
|
|
|
67
70
|
## Language Bindings
|
|
@@ -73,17 +76,22 @@ Satkit provides robust, high-performance satellite orbital mechanics calculation
|
|
|
73
76
|
- Python versions 3.8 through 3.14 supported
|
|
74
77
|
- Full documentation at <https://satellite-toolkit.readthedocs.io/latest/>
|
|
75
78
|
|
|
79
|
+
## Optional Features
|
|
80
|
+
|
|
81
|
+
- **chrono**: Enables interoperability with `chrono::DateTime` by implementing the `TimeLike` trait.
|
|
82
|
+
Activate with Cargo feature `chrono`.
|
|
83
|
+
|
|
76
84
|
## Key Capabilities
|
|
77
85
|
|
|
78
86
|
### Coordinate Frame Transformations
|
|
79
87
|
High-precision conversions between multiple reference frames with full support for time-varying Earth orientation:
|
|
80
88
|
- **ITRF** - International Terrestrial Reference Frame (Earth-fixed)
|
|
81
89
|
- **GCRF** - Geocentric Celestial Reference Frame using IAU-2000/2006 reduction (inertial)
|
|
82
|
-
- **TEME** - True Equinox Mean Equator frame used in SGP4 propagation
|
|
90
|
+
- **TEME** - True Equinox Mean Equator frame used in SGP4 propagation (almost inertial)
|
|
83
91
|
- **CIRF** - Celestial Intermediate Reference Frame (IAU-2006 intermediate)
|
|
84
92
|
- **TIRF** - Terrestrial Intermediate Reference Frame (Earth-rotation intermediate)
|
|
85
93
|
- **Geodetic** - Latitude, longitude, altitude with WGS-84 ellipsoid
|
|
86
|
-
|
|
94
|
+
|
|
87
95
|
### Orbit Propagation
|
|
88
96
|
Multiple propagation methods optimized for different accuracy and performance requirements:
|
|
89
97
|
- **Numerical Integration**: High-precision propagation using adaptive Runge-Kutta 9(8) methods with dense output
|
|
@@ -94,46 +102,48 @@ Multiple propagation methods optimized for different accuracy and performance re
|
|
|
94
102
|
- Full AFSPC and improved mode support
|
|
95
103
|
- TLE fitting from high-precision states with drag estimation
|
|
96
104
|
- Batch processing for multiple satellites
|
|
105
|
+
- Support TLE and Orbital Mean-Element Messages inputs
|
|
97
106
|
- **Keplerian**: Fast analytical two-body propagation for preliminary analysis
|
|
98
|
-
|
|
99
|
-
### Force Models
|
|
107
|
+
|
|
108
|
+
### Numerical Integration Force Models
|
|
100
109
|
Comprehensive perturbation modeling for high-fidelity orbit propagation:
|
|
101
110
|
- **Earth Gravity**: Spherical harmonic models up to degree/order 360
|
|
102
111
|
- Multiple models: JGM2, JGM3, EGM96, ITU GRACE16
|
|
103
112
|
- Efficient computation with configurable truncation order
|
|
104
113
|
- Gravity gradient support for state transition matrix
|
|
105
114
|
- **Third-Body Gravity**: Solar and lunar perturbations using JPL ephemerides
|
|
106
|
-
- **Atmospheric Drag**:
|
|
115
|
+
- **Atmospheric Drag**:
|
|
116
|
+
- NRLMSISE-00 density model with space weather integration
|
|
107
117
|
- Automatic space weather data updates (F10.7, Ap index)
|
|
108
118
|
- Configurable ballistic coefficients
|
|
109
119
|
- **Solar Radiation Pressure**: Cannon-ball model with shadow function
|
|
110
|
-
|
|
111
|
-
### Ephemerides
|
|
120
|
+
|
|
121
|
+
### Solar System Ephemerides
|
|
112
122
|
Access to high-precision solar system body positions:
|
|
113
123
|
- **JPL DE440/DE441**: State-of-the-art planetary ephemerides
|
|
114
124
|
- Chebyshev polynomial interpolation for accuracy
|
|
115
125
|
- Support for all major planets, sun, moon, and solar system barycenter
|
|
116
126
|
- **Low-Precision Models**: Fast analytical models for sun and moon when high precision isn't required
|
|
117
|
-
|
|
127
|
+
|
|
118
128
|
### Time Systems
|
|
119
129
|
Comprehensive support for all standard astronomical time scales:
|
|
120
130
|
- **UTC** - Coordinated Universal Time with leap second handling
|
|
121
131
|
- **TAI** - International Atomic Time
|
|
122
|
-
- **TT**
|
|
132
|
+
- **TT** - Terrestrial Time
|
|
123
133
|
- **TDB** - Barycentric Dynamical Time
|
|
124
134
|
- **UT1** - Universal Time with Earth orientation corrections
|
|
125
135
|
- **GPS** - GPS Time
|
|
126
136
|
- Automatic conversion between all time scales with microsecond precision
|
|
127
|
-
|
|
137
|
+
|
|
128
138
|
### Geodetic Utilities
|
|
129
|
-
- **Geodesic Calculations
|
|
130
|
-
- **Coordinate Conversions
|
|
131
|
-
- **Elevation/Azimuth
|
|
139
|
+
- **Geodesic Calculations** - Accurate distance and azimuth between ground locations using Vincenty's formulae
|
|
140
|
+
- **Coordinate Conversions** - ITRF ↔ Geodetic ↔ East-North-Up ↔ North-East-Down
|
|
141
|
+
- **Elevation/Azimuth** - Topocentric coordinate transformations for ground station analysis
|
|
132
142
|
|
|
133
143
|
### Sun / Moon Calculations
|
|
134
|
-
- **Sun rise / set
|
|
135
|
-
- **Moon Phase
|
|
136
|
-
- **Ephemeris
|
|
144
|
+
- **Sun rise / set** - Compute sun rise / set times as function of day & location
|
|
145
|
+
- **Moon Phase** - Phase of moon and fraction illuminated
|
|
146
|
+
- **Ephemeris** - Fast low-precision ephemeris for sun & moon
|
|
137
147
|
|
|
138
148
|
## Technical Details
|
|
139
149
|
|
|
@@ -177,12 +187,12 @@ The library requires external data files for various calculations. These are aut
|
|
|
177
187
|
- DE440/DE441 planetary ephemerides (~100 MB)
|
|
178
188
|
- Provides positions of sun, moon, planets, and solar system barycenter
|
|
179
189
|
- Valid for years 1550-2650 CE
|
|
180
|
-
|
|
190
|
+
|
|
181
191
|
- **Gravity Models** ([ICGEM](http://icgem.gfz-potsdam.de/home))
|
|
182
192
|
- JGM2, JGM3, EGM96, ITU GRACE16 spherical harmonic coefficients
|
|
183
193
|
- International Centre for Global Earth Models standardized format
|
|
184
194
|
- Up to degree/order 360 for high-fidelity propagation
|
|
185
|
-
|
|
195
|
+
|
|
186
196
|
- **IERS Nutation Tables** ([IERS Conventions](https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html))
|
|
187
197
|
- IAU-2006 nutation series coefficients
|
|
188
198
|
- Required for GCRF ↔ ITRF transformations
|
|
@@ -195,7 +205,7 @@ The library requires external data files for various calculations. These are aut
|
|
|
195
205
|
- Ap geomagnetic index
|
|
196
206
|
- Critical for atmospheric density modeling and drag calculations
|
|
197
207
|
- Updated daily by NOAA Space Weather Prediction Center
|
|
198
|
-
|
|
208
|
+
|
|
199
209
|
- **Earth Orientation Parameters** ([Celestrak](https://celestrak.org/SpaceData/))
|
|
200
210
|
- Polar motion (x, y)
|
|
201
211
|
- UT1-UTC time difference
|
|
@@ -217,15 +227,15 @@ The library includes comprehensive test suites ensuring correctness of calculati
|
|
|
217
227
|
- **JPL Ephemerides**: Validated against JPL-provided test vectors for Chebyshev polynomial interpolation
|
|
218
228
|
- Over 10,000 test cases covering all planets and time ranges
|
|
219
229
|
- Accuracy verified to within JPL's published tolerances (sub-meter precision)
|
|
220
|
-
|
|
230
|
+
|
|
221
231
|
- **SGP4**: Verified using official test vectors from the original C++ distribution
|
|
222
232
|
- All test cases from Vallado's SGP4 implementation
|
|
223
233
|
- Includes edge cases and error conditions
|
|
224
|
-
|
|
234
|
+
|
|
225
235
|
- **Coordinate Transformations**: Cross-validated against multiple reference implementations
|
|
226
236
|
- SOFA library comparisons for IAU-2006 transformations
|
|
227
237
|
- Vallado test cases for GCRF ↔ ITRF conversions
|
|
228
|
-
|
|
238
|
+
|
|
229
239
|
- **Numerical Propagation**: Validated against high-precision commercial tools
|
|
230
240
|
- Orbit fits to GPS SP3 ephemerides
|
|
231
241
|
- Multi-day propagations with sub-meter accuracy
|
|
@@ -265,7 +275,7 @@ pip install satkit
|
|
|
265
275
|
|
|
266
276
|
Pre-built binary wheels are available for:
|
|
267
277
|
- **Windows**: AMD64
|
|
268
|
-
- **macOS**: Intel (x86_64) and Apple Silicon (ARM64)
|
|
278
|
+
- **macOS**: Intel (x86_64) and Apple Silicon (ARM64)
|
|
269
279
|
- **Linux**: x86_64 and ARM64 (aarch64)
|
|
270
280
|
- **Python versions**: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
|
|
271
281
|
|
|
@@ -335,9 +345,9 @@ settings.gravity_order = 8
|
|
|
335
345
|
|
|
336
346
|
# Propagate for 1 day
|
|
337
347
|
result = sk.propagate(
|
|
338
|
-
state0,
|
|
339
|
-
time0,
|
|
340
|
-
|
|
348
|
+
state0,
|
|
349
|
+
time0,
|
|
350
|
+
end=time0 + sk.duration.from_days(1),
|
|
341
351
|
propsettings=settings
|
|
342
352
|
)
|
|
343
353
|
|
|
@@ -374,13 +384,13 @@ use satkit::{Instant, SolarSystem, jplephem};
|
|
|
374
384
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
375
385
|
// Create time instant
|
|
376
386
|
let time = Instant::from_datetime(2024, 1, 1, 0, 0, 0.0)?;
|
|
377
|
-
|
|
387
|
+
|
|
378
388
|
// Get Moon position and velocity in GCRF
|
|
379
389
|
let (pos, vel) = jplephem::geocentric_state(SolarSystem::Moon, &time)?;
|
|
380
|
-
|
|
390
|
+
|
|
381
391
|
println!("Moon position: {:?}", pos);
|
|
382
392
|
println!("Moon velocity: {:?}", vel);
|
|
383
|
-
|
|
393
|
+
|
|
384
394
|
Ok(())
|
|
385
395
|
}
|
|
386
396
|
```
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
satkit/__init__.py,sha256=_N6_4wz07lz7HhjdL-8bUKOlubFC4WJHyTumLoS1ru4,622
|
|
2
2
|
satkit/__init__.pyi,sha256=zqMluH0ZKLDXQK9Z32yiEf2LncSDE8yiHHj9X0DS6Ww,732
|
|
3
|
-
satkit/_version.py,sha256=
|
|
3
|
+
satkit/_version.py,sha256=buZKfNGuzXBT3FupuFl07CI3K1xUguzS061W7pb0kvo,446
|
|
4
4
|
satkit/density.pyi,sha256=j_25g_QI7LKo0IEq13Y2daSMYnb4pE5ZPHFX6H8gscE,2211
|
|
5
5
|
satkit/frametransform.pyi,sha256=UeVyVbWJppoPkCNWOvUM-MGs7FShVVP0wWh6LE8BPus,15806
|
|
6
6
|
satkit/jplephem.pyi,sha256=5W0tK3-kv5Si-aS7cci1QGTtXC5cAeEbUj5mwIu7IU8,3506
|
|
7
7
|
satkit/moon.pyi,sha256=r151F1_D2J_Zp9YgZfAuuUlqb8OMPUjk610UwhJ0OXs,3510
|
|
8
8
|
satkit/planets.pyi,sha256=MX_4waUoTVM11ftaIEDg8kmdZDId9nuRWUUiMYP6Zvg,1110
|
|
9
9
|
satkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
satkit/satkit.cp38-win_amd64.pyd,sha256=
|
|
11
|
-
satkit/satkit.pyi,sha256=
|
|
10
|
+
satkit/satkit.cp38-win_amd64.pyd,sha256=b0PWshONv8_tdlI8gVr3FFLmGMuPOoQta7r602TaH94,4584448
|
|
11
|
+
satkit/satkit.pyi,sha256=Bb0rhJN9EVbAeVSFO2vBmLcWZUme4CzzItub3_eEjiA,88098
|
|
12
12
|
satkit/sun.pyi,sha256=Ox7n-JJTNRXFjIR1U0ehbEeecoVss11KFiiKhl28wQs,4217
|
|
13
13
|
satkit/utils.pyi,sha256=f087jRMh4Y4Lghrn-ncIvt16KCQ4Sto_icicvaXgXk4,3085
|
|
14
|
-
satkit-0.
|
|
15
|
-
satkit-0.
|
|
16
|
-
satkit-0.
|
|
17
|
-
satkit-0.
|
|
18
|
-
satkit-0.
|
|
14
|
+
satkit-0.9.1.dist-info/LICENSE,sha256=_G_hwbOSJZqdIWNjgzjFB91eZKvherjtmFfvVvy9wCA,1092
|
|
15
|
+
satkit-0.9.1.dist-info/METADATA,sha256=2ijvMDAEau0R6F2qTbyWzHVGmFfpW-mFM-1kOeyGcss,17750
|
|
16
|
+
satkit-0.9.1.dist-info/WHEEL,sha256=q-8g9petFnV9NMO9vJ2udYt2PFlnDjFGlAmDhUgQ79c,99
|
|
17
|
+
satkit-0.9.1.dist-info/top_level.txt,sha256=1gsJ2XQ64FuUfw4z-i3CDi4Y4z9qcKNcm8Fy6-8xSVE,7
|
|
18
|
+
satkit-0.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|