ADS-B (Automatic Dependent Surveillance–Broadcast) is the backbone of modern global aviation tracking. Aircraft continuously broadcast their satellite-derived position, altitude, velocity, and transponder identification over 1090 MHz and 978 MHz RF links.

ADS-B Exchange provides historical trace dumps containing billions of aircraft observation records. However, querying raw monthly archives formatted as deeply nested, multi-gigabyte JSON files creates a massive data processing bottleneck.

adsb_to_parquet is a high-throughput C++ data processing tool designed to parse raw ADS-B trace dumps and stream them directly into columnar Apache Parquet format.


Ingestion & Transformation

Raw transponder transmissions arrive as sparse JSON records with dozens of optional telemetry fields. The parser normalizes and projects these into a strongly typed tabular schema:

  • Aircraft Identification: 24-bit ICAO transponder hex address (hex), registration tail number, operator callsign (flight), and aircraft category.
  • 3D Spatial Position: WGS-84 latitude, longitude, barometric altitude, and geometric/GPS altitude.
  • Kinematics & Dynamics: Ground speed (knots), true track heading angle (degrees), and vertical climb/descent rate (ft/min).
  • Avionics State: Transponder squawk code, emergency flags, and Navigation Integrity Category (NIC) parameters.

Why Parquet?

Converting raw ADS-B JSON to Apache Parquet yields immense performance and storage gains:

Metric Raw JSON Dumps Compressed Parquet Gain
Disk Footprint ~45 GB / month ~3.8 GB / month > 90% reduction
Query Speed Minutes (grep / python) < 250ms (DuckDB) ~100x speedup
Encoding Uncompressed Text Snappy / ZSTD Columnar Zero-copy vector loads

Analytics & Trajectory Visualization

With flight records stored in Parquet, analytical queries become trivial using embedded SQL engines like DuckDB:

-- Find all aircraft exceeding 600 knots below 15,000 feet
SELECT hex, flight, MAX(ground_speed) AS max_speed, MIN(alt_baro) AS min_alt
FROM 'flights_2025_12.parquet'
WHERE ground_speed > 600 AND alt_baro < 15000
GROUP BY hex, flight
ORDER BY max_speed DESC;

High-Density ADS-B Flight Traces Correlated and Tracked in tsim High-density ADS-B flight trajectories ingested and correlated in tsim across the Gulf Coast and Texas corridor.

The repository also includes py_adsb_converter bindings and adsb_plot.py, enabling rapid geospatial trajectory plots, route mapping, and radar corridor visualization directly in Python.