#ads-b #python-bindings #decoding #aircraft #modes #format

rs1090-python

Python binding to rs1090, a library to decode Mode S and ADS-B signals

19 unstable releases (3 breaking)

new 0.4.4 Jan 12, 2025
0.4.2 Dec 29, 2024
0.3.8 Oct 16, 2024
0.2.5 Jun 28, 2024
0.1.3 Mar 8, 2024

#1381 in Encoding

Download history 20/week @ 2024-09-17 137/week @ 2024-09-24 151/week @ 2024-10-01 76/week @ 2024-10-08 165/week @ 2024-10-15 4/week @ 2024-10-22 302/week @ 2024-12-10 16/week @ 2024-12-17 91/week @ 2024-12-24 13/week @ 2024-12-31

422 downloads per month

MIT license

6.5MB
8K SLoC

rs1090

rs1090 is a Python binding to the rs1090 Rust library to decode Mode S, ADS-B and FLARM messages. It takes its inspiration from the Python pyModeS library.

The direction ambitioned by rs1090 boils down to:

  • improving the performance of Mode S decoding in Python;
  • exporting trajectory data to cross-platform formats such as JSON or parquet;
  • providing efficient multi-receiver Mode S decoding;
  • serving real-time enriched trajectory data to external applications.

Installation

pip install rs1090

Usage

For single messages:

>>> import rs1090
>>> rs1090.decode("8c4841753a9a153237aef0f275be")
{'df': '17', 'icao24': '484175', 'bds': '06', 'NUCp': 7, 'groundspeed': 17.0, 'track': 92.8125, 'parity': 'odd', 'lat_cpr': 39195, 'lon_cpr': 110320}

For batches of messages:

>>> import rs1090
>>> rs1090.decode(msg_list)
...
>>> rs1090.decode(msg_list, ts_list)  # includes CPR to position decoding
...
>>> rs1090.decode(msg_list, ts_list, reference=(lat0, lon0))  # useful for surface messages
...

For FLARM messages (also as batches):

>>> msg = "7bf2381040ccc7e2395ecaa28e033a655d47e1d91d0bf986e1b0"
>>> rs1090.flarm(msg, 1655279476, 43.61924, 5.11755)
{'timestamp': 1655279476,
 'reference_lat': 43.61924,
 'reference_lon': 5.11755,
 'icao24': '38f27b',
 'is_icao24': True,
 'actype': 'Glider',
 'latitude': 43.6812864,
 'longitude': 5.150585599999999,
 'geoaltitude': 970,
 'vertical_speed': 1.0,
 'groundspeed': 18.698261951315153,
 'track': 29.655457935479006,
 'no_track': False,
 'stealth': False,
 'gps': 129}

Dependencies

~10–18MB
~257K SLoC