OrbitOps
OrbitOps is a Python command-line toolkit for satellite tracking and basic orbital analysis using publicly available CelesTrak data.
It uses Two-Line Element (TLE) data and the SGP4 propagation model to calculate spacecraft positions, velocities, and distances.
Features
-
Calculate current latitude, longitude, and altitude
-
Display TEME Cartesian position and velocity
-
View satellite catalog information
-
Search satellites by name
-
Calculate 3D distance between two spacecraft
-
Continuously monitor a spacecraft's calculated position
-
Generate predicted satellite ground tracks on a Mercator projection
Installation
OrbitOps requires Python 3.14 or later.
Install from PyPI:
pip install orbitops
Then verify the installation:
orbitops help
Usage
OrbitOps uses NORAD Catalog Numbers to identify spacecraft.
For example, the International Space Station (ISS) has catalog number 25544.
Position
Show the calculated latitude, longitude, and altitude of a spacecraft.
orbitops position 25544
Example:
Geographic position of ISS (ZARYA)
--------------------
Latitude: -32.7625°
Longitude: -54.1085°
Altitude: 432.53 km
TEME State
Show the spacecraft's TEME Cartesian position and velocity.
orbitops teme 25544
Position is reported in kilometers and velocity in kilometers per second.
Satellite Information
View catalog information for a spacecraft.
orbitops info 25544
This may include information such as the spacecraft name, NORAD catalog number, launch date, owner, inclination, apogee, and perigee.
Search
Search the satellite catalog by name.
orbitops search ISS
You can also use broader searches:
orbitops search STARLINK
Broad searches may match many spacecraft. The current version of OrbitOps displays the first returned result.
Distance
Calculate the current straight-line 3D distance between two spacecraft.
orbitops distance 25544 69012
The result is reported in kilometers.
The distance is calculated from both spacecraft's propagated TEME Cartesian positions and represents their instantaneous 3D separation, not distance along Earth's surface.
Watch
Continuously monitor the calculated geographic position of a spacecraft.
orbitops watch 25544
Example:
ISS (ZARYA) | Lat: 38.2841° | Lon: -72.1832° | Alt: 421.72 km
Press Ctrl+C to stop.
Ground Track
Generate a predicted ground-track visualization for a spacecraft over a specified number of minutes.
orbitops gtrack 25544 180
The ground track is displayed on a Mercator projection and includes predicted spacecraft positions over the requested time period.
The visualization includes orbital revolution coloring, UTC reference times, starting and ending positions, orbital period information, sampling information, and the TLE epoch used for propagation.
Command Reference
| Command | Usage | Description |
|---|---|---|
position |
orbitops position <CATNR> |
Show latitude, longitude, and altitude |
teme |
orbitops teme <CATNR> |
Show TEME position and velocity |
info |
orbitops info <CATNR> |
Show satellite catalog information |
search |
orbitops search <name> |
Search satellites by name |
distance |
orbitops distance <CATNR1> <CATNR2> |
Calculate 3D spacecraft separation |
watch |
orbitops watch <CATNR> |
Continuously monitor spacecraft position |
gtrack |
orbitops gtrack <CATNR> <MINUTES> |
Generate a predicted satellite ground track |
help |
orbitops help |
Display the help menu |
How It Works
OrbitOps retrieves publicly available orbital data from CelesTrak.
For position calculations, OrbitOps retrieves a spacecraft's TLE and uses SGP4 to propagate its orbit to the current time.
CelesTrak
|
| TLE
v
OrbitOps
|
| SGP4
v
Calculated spacecraft state
|
+--> TEME position and velocity
|
+--> Latitude / Longitude / Altitude
For continuous tracking, the TLE does not need to be downloaded every second. OrbitOps retrieves the orbital elements and performs subsequent propagation locally.
Data and Accuracy
OrbitOps does not receive live spacecraft telemetry.
Positions are calculated from publicly available orbital elements using SGP4. They should therefore be treated as calculated or predicted positions, not authoritative spacecraft positions.
Accuracy can be affected by factors including:
-
Age of the orbital elements
-
Atmospheric drag
-
Spacecraft maneuvers
-
Spacecraft orbit
-
Time elapsed from the TLE epoch
OrbitOps is intended for educational, informational, satellite-tracking, visualization, and general orbital-analysis purposes.
Development
Clone the repository:
git clone <repository-url>
cd OrbitOps
Install the development environment:
uv sync
Run OrbitOps:
uv run orbitops position 25544
License
OrbitOps is licensed under the MIT License.
See the LICENSE file for the full license terms.
Disclaimer
OrbitOps is provided for educational, informational, and general satellite tracking purposes only.
OrbitOps does not provide authoritative spacecraft telemetry, precision orbit determination, or mission-operational data. Satellite positions and other orbital information produced by OrbitOps are calculated from publicly available orbital elements using mathematical propagation models and may contain errors or become inaccurate over time.
OrbitOps is not intended for spacecraft navigation, collision avoidance, rendezvous operations, launch operations, flight safety, mission-critical decision-making, or any other safety-critical application.
Users are responsible for independently verifying any data produced by OrbitOps before relying on it for operational purposes.
THE SOFTWARE AND ALL OUTPUT GENERATED BY THE SOFTWARE ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. USE OF ORBITOPS AND RELIANCE ON ITS OUTPUT IS AT THE USER'S OWN RISK.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orbitops-0.2.0.tar.gz.
File metadata
- Download URL: orbitops-0.2.0.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e6d6c35cd0cd77fafcc682754cc5ce5fba4074555fd7d31ccb5974df76bb0d2
|
|
| MD5 |
4292be3a53d5724b54fc66254dbaeebd
|
|
| BLAKE2b-256 |
2ca7ec20ef37c430dc88f8c4a027ce0f33459cacfd420e9dbd8fb923ccbf333f
|
File details
Details for the file orbitops-0.2.0-py3-none-any.whl.
File metadata
- Download URL: orbitops-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
611a83c5951326037b9af9914e900fc2a53393dd7f33efc6756d1e49fd20275a
|
|
| MD5 |
f7fc118a9dfb99e8f34510255c29ddd6
|
|
| BLAKE2b-256 |
df1639da7cf50477b15abc648ed5b5ca90d4fb25e14e716b4df5e20c9752592e
|