https://github.com/michealroberts/satelles
Modern, type-safe, zero-dependency python library for TLE, CPF, CRD et al. handling and orbit propagation to accurately locate your satellite
https://github.com/michealroberts/satelles
cpf crd laser-ranging omm orbit orbital-dynamics orbital-mechanics propagation satellite satellites sgp4 sgp4-xp tle
Last synced: 4 months ago
JSON representation
Modern, type-safe, zero-dependency python library for TLE, CPF, CRD et al. handling and orbit propagation to accurately locate your satellite
- Host: GitHub
- URL: https://github.com/michealroberts/satelles
- Owner: michealroberts
- License: mit
- Created: 2025-03-10T11:47:39.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-06-17T15:16:27.000Z (4 months ago)
- Last Synced: 2025-06-27T19:12:39.561Z (4 months ago)
- Topics: cpf, crd, laser-ranging, omm, orbit, orbital-dynamics, orbital-mechanics, propagation, satellite, satellites, sgp4, sgp4-xp, tle
- Language: Python
- Homepage: https://pypi.org/project/satelles/
- Size: 244 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README


[](https://opensource.org/licenses/MIT)
[](https://github.com/michealroberts/satelles/actions/workflows/test.yml)# Satelles
Modern, type-safe, zero-dependency python library for TLE, OMM et al. handling and orbit propagation to accurately locate your satellites in the sky.
## Installation
```bash
uv add satelles
```or
using your preferred environment / package manager of choice, e.g., `poetry`, `conda` or `pip`:
```bash
pip install satelles
``````bash
poetry add satelles
``````bash
conda install satelles
```## Usage
```python
from datetime import datetime, timezonefrom satelles import TLE
issTLE: str = """
1 25544U 98067A 20062.59097222 .00016717 00000-0 10270-3 0 9006
2 25544 51.6442 147.1064 0004607 95.6506 329.8285 15.49249062 2423
"""satellite = TLE(tle_string=issTLE).as_satellite()
satellite.at(when=datetime(2021, 5, 15, 0, 0, 0, tzinfo=timezone.utc))
# Get the Earth Centric Inertial (ECI) coordinate of the satellite at the given time:
eci = satellite.eci_coordinate# Get the Equatorial Coordinate of the satellite at the given time:
equatorial = satellite.equatorial_coordinate
...
```As the API is fully typed, you can use your IDE's autocompletion to see all the available methods and properties.
We have also provided further usage examples in the [examples](./examples) directory.
## Milestones
- [X] Type-safe modern 3.6+ Python
- [X] Fully unit tested
- [X] Simpler API using Pydantic base models for validation
- [X] Zero-external dependencies (pure Python 3.6+ with no external C/C++ dependencies)
- [ ] Example API usage
- [X] Fully supported Two-Line Element (TLE) parsing and operations
- [ ] Fully supported Orbital Mean Elements Message (OMM) parsing and operations
- [ ] Fully supported TLE to OMM conversion
- [X] Fully supported Earth Centric Inertial (ECI) to Equatorial Coordinate System (ECS) conversion
- [X] Fully supported Earth Centric Inertial (ECI) to Topocentric Coordinate System (TCS) conversion
- [ ] Fully supported SPG4-XP propagation from TLE or OMM
- [X] Fully supported symplectic Verlet numerical propagation
- [X] Fully supported Runge-Kutta 4th order numerical propagation---
### License
This project is licensed under the terms of the MIT license.