Skip to main content

Python library to propagate satellite orbits.

Project description

https://github.com/satellogic/orbit-predictor/workflows/Python%20package/badge.svg https://coveralls.io/repos/github/satellogic/orbit-predictor/badge.svg?branch=master

Orbit Predictor is a Python library to propagate orbits of Earth-orbiting objects (satellites, ISS, Santa Claus, etc) using TLE (Two-Line Elements set)

All the hard work is done by Brandon Rhodes implementation of SGP4.

We can say Orbit predictor is kind of a “wrapper” for the python implementation of SGP4

To install it

You can install orbit-predictor from pypi:

pip install orbit-predictor

Use example

When will be the ISS over Argentina?

In [1]: from orbit_predictor.sources import EtcTLESource

In [2]: from orbit_predictor.locations import ARG

In [3]: source = EtcTLESource(filename="examples/iss.tle")

In [4]: predictor = source.get_predictor("ISS")

In [5]: predictor.get_next_pass(ARG)
Out[5]: <PredictedPass ISS over ARG on 2017-11-10 22:48:10.607212>

In [6]: predicted_pass = _

In [7]: position = predictor.get_position(predicted_pass.aos)

In [8]: ARG.is_visible(position)  # Can I see the ISS from this location?
Out[8]: True

In [9]: import datetime

In [10]: position_delta = predictor.get_position(predicted_pass.los + datetime.timedelta(minutes=20))

In [11]: ARG.is_visible(position_delta)
Out[11]: False

In [12]: tomorrow = datetime.datetime.utcnow() + datetime.timedelta(days=1)

In [13]: predictor.get_next_pass(ARG, tomorrow, max_elevation_gt=20)
Out[13]: <PredictedPass ISS over ARG on 2017-11-11 23:31:36.878827>

Simplified creation of predictor from TLE lines:

In [1]: import datetime

In [2]: from orbit_predictor.sources import get_predictor_from_tle_lines

In [3]: TLE_LINES = (
            "1 43204U 18015K   18339.11168986  .00000941  00000-0  42148-4 0  9999",
            "2 43204  97.3719 104.7825 0016180 271.1347 174.4597 15.23621941 46156")

In [4]: predictor = get_predictor_from_tle_lines(TLE_LINES)

In [5]: predictor.get_position(datetime.datetime(2019, 1, 1))
Out[5]: Position(when_utc=datetime.datetime(2019, 1, 1, 0, 0),
    position_ecef=(-5280.795613274576, -3977.487633239489, -2061.43227648734),
    velocity_ecef=(-2.4601788971676903, -0.47182217472755117, 7.167517631852518),
    error_estimate=None)

Currently you have available these sources

  • Memorytlesource: in memory storage.

  • EtcTLESource: a uniq TLE is stored in /etc/latest_tle

  • WSTLESource: It reads a REST API currently used inside Satellogic. We are are working to make it publicly available.

How to contribute

  • Write pep8 complaint code.

  • Wrap the code on 100 collumns.

  • Always use a branch for each feature and Merge Proposals.

  • Always run the tests before to push. (test implies pep8 validation)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orbit-predictor-1.15.0.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

orbit_predictor-1.15.0-py3-none-any.whl (42.2 kB view details)

Uploaded Python 3

File details

Details for the file orbit-predictor-1.15.0.tar.gz.

File metadata

  • Download URL: orbit-predictor-1.15.0.tar.gz
  • Upload date:
  • Size: 31.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for orbit-predictor-1.15.0.tar.gz
Algorithm Hash digest
SHA256 d334d33a63d24c5aa8c52f977263dd35993615cc360c9f8bc88754bba39fbaf2
MD5 19c68e2294c92ea2649dbe9aacccf872
BLAKE2b-256 c298c1497925d73f522d17a2db3e704a85fdad17fcd191464b82fad82e73aedb

See more details on using hashes here.

File details

Details for the file orbit_predictor-1.15.0-py3-none-any.whl.

File metadata

File hashes

Hashes for orbit_predictor-1.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0a00bec8bf905b4bb14c7e0713d66ebd1e82a6fab0c02e48266fb81c6b94a24
MD5 06feae9a2237f6e7c6964b231dae4950
BLAKE2b-256 3b68d180d44da715d62bf7d69cf0d8410f1c7b6124180c59ebbfcb315c669917

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page