A new open source TypeScript library fills a gap in the aviation data ecosystem. aixm-parser is the first JavaScript and TypeScript implementation capable of reading AIXM 5.1.1 files, the XML-based standard used by civil aviation authorities worldwide to exchange aeronautical information.

What AIXM is and why it matters

AIXM stands for Aeronautical Information Exchange Model. It is the format that national aviation agencies, including Eurocontrol and the FAA, use to publish data about airports, airspaces, navigation aids, routes, obstacles, and services. The 5.1.1 version defines how this information should be structured in XML, and it includes a temporal model so that changes to aeronautical data can be tracked over time.

Before this library, developers working with AIXM data in JavaScript or TypeScript had no native parsing option. They either relied on Python tools, used generic XML parsers that require writing custom extraction logic for each feature type, or avoided the format entirely. The new library handles all 30 AIXM feature types with typed TypeScript interfaces, giving developers autocomplete and compile-time safety when accessing properties like airport names, ICAO location indicators, or airspace boundaries.

How it handles large files

AIXM files can be enormous. A single file covering European airspace might contain millions of XML elements. The parser uses a SAX and DOM hybrid approach: it streams through the document to extract feature chunks without loading the entire tree into memory, then parses each chunk individually. This lets it process files that would otherwise exhaust available RAM.

The library also manages cross-references between features. AIXM uses xlink:href attributes to link related elements, for example connecting a runway to the airport it belongs to. The built-in registry resolves these references, detects circular dependencies, and provides reverse lookup to find which features reference a given element.

Geometry conversion and geodesic accuracy

One of the more technically involved pieces is converting GML geometry to GeoJSON. AIXM uses GML (Geography Markup Language) for spatial data, including point locations, arcs, circles, curves, and polygons. The library converts all of these to GeoJSON, with a few specific improvements.

Circles and arcs are computed on the WGS84 ellipsoid using the Karney algorithm rather than assuming a spherical Earth. This matters for aviation, where a 15 nautical mile radius around a navigation aid needs to account for the planet's actual shape. The library densifies these curves into line segments with configurable tolerance, so the output renders correctly in mapping tools.

Elevation data is preserved as a third coordinate in GeoJSON output, stored in meters. Route features are assembled from their individual segments into MultiLineString geometries.

Querying historical states

AIXM's temporal model is one of its more complex features. A navigation aid or airspace does not just exist as a static record. It has a baseline state, and then a series of changes (PERMDELTA and TEMPDELTA) that modify it over time. The library lets you query the state of any feature at a specific date, merging the baseline with all active deltas to produce the correct properties for that moment.

This is essential for applications that need to know what the airspace looked like on a particular day, for example when reconstructing a flight path or validating that a route was legal at the time it was flown.

CLI and output options

The library ships with a command line tool that converts AIXM XML files directly to GeoJSON. You can control densification tolerance, choose whether to include features without geometry, and output pretty-printed JSON. The stats flag gives you a breakdown of feature types in the file.

The package is available on npm, builds to both ESM and CommonJS, and requires Node.js 20 or later. It is MIT licensed.

What this means for aviation developers

Teams building flight planning tools, airspace visualization systems, or aeronautical databases no longer need to reach for Python or write custom XML extraction logic. The library provides a single install and a consistent API for working with AIXM data in the JavaScript ecosystem. The typed interfaces also make it straightforward to build applications on top of the parsed data without constantly referring back to the AIXM specification.

The project is still early, with six commits on the main branch, but it covers the core requirements for working with AIXM 5.1.1 data. For developers in the aviation space, it removes one of the more annoying friction points in the toolchain.