Metadata-Version: 2.4
Name: aviconv-asterix
Version: 0.0.1
Summary: Decode-only EUROCONTROL ASTERIX reader: CAT021 (ADS-B) and CAT062 (system tracks) to JSON.
Project-URL: Homepage, https://github.com/ams-dev25/aviconv
Project-URL: Documentation, https://ams-dev25.github.io/aviconv/
Project-URL: Source, https://github.com/ams-dev25/aviconv
Project-URL: Issues, https://github.com/ams-dev25/aviconv/issues
Author: aviconv contributors
License: MIT
Keywords: ads-b,asterix,aviation,cat021,cat062,eurocontrol,surveillance
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: aviconv-core<0.1,>=0.0.2
Requires-Dist: click>=8.1
Requires-Dist: pydantic>=2.7
Description-Content-Type: text/markdown

# aviconv-asterix

Decode-only EUROCONTROL **ASTERIX** reader — part of the
[aviconv](https://github.com/ams-dev25/aviconv) converter family.

Supported categories (pinned editions):

| Category | Content | Edition |
| -------- | ------- | ------- |
| CAT021   | ADS-B Target Reports | **2.6** |
| CAT062   | SDPS System Track Data | **1.20** |

## Scope

**Decode-only by design.** ASTERIX is a binary sensor/tracker wire
format; aviconv's job here is getting surveillance data *out* of binary
into typed, JSON-serialisable records. Encoding (building ASTERIX from
records) is out of scope.

A *decode subset* of each category is mapped to typed fields (data
source, times, WGS-84 positions, flight levels, velocities, identity);
every other present data item is still measured via its UAP layout and
preserved hex-encoded in `raw_items`, so nothing on the wire is
silently dropped. If a record sets an FSPEC bit with no UAP entry
(edition mismatch), that data block is undecodable — the block LEN is
used to resynchronise at the next block (`--skip-errors`).

## Usage

```python
from aviconv_asterix import iter_records

records = list(iter_records(open("radar.ast", "rb").read()))
print(records[0].callsign, records[0].lat, records[0].lon)
```

CLI (NDJSON, one record per line):

```
aviconv asterix decode radar.ast
aviconv asterix decode - < radar.ast          # binary stdin
aviconv asterix decode radar.ast --skip-errors -o out.ndjson
```

## Licence

MIT. The ASTERIX category specifications are published by EUROCONTROL;
this package is not endorsed by or affiliated with EUROCONTROL.
