#AIXM

delorean-aixmdelorean_aixm
2026-01-21

The TimeSlice is central to AIXM temporality concept. Each aeronautical feature is composed of multiple TimeSlices, where each TimeSlice describes the state of the feature during a specific period of validity. This allows to plan and distribute future updates to the dataset.

delorean-aixmdelorean_aixm
2026-01-21

AIXM (Aeronautical Information Exchange Model) is an internationally standardized information model used to represent aeronautical data in a structured, digital, and interoperable way. It supports the exchange of static and dynamic aeronautical information between systems while ensuring consistency, traceability, and semantic clarity.

delorean-aixmdelorean_aixm
2026-01-13

The AIRAC cycle is a global aviation information synchronisation that defines special dates on which information, procedures, schedules, etc. can be changed. These changes are then displayed on the AIP for that country.

Frank Abelbeckfrank@troet.cafe
2025-07-27

I'm seeking to generalise my AIP processing setup and to port it to asyncio. Thus I took a short look around.

DE: single pages as PNG; AIXM data.

NL: page collections as PDF; no AIXM data.

DK: all pages in one PDF; no AIXM data.

So I'll design my server's AIP arch around the apparent lowest common denominator: one PDF per page, referenced by the page designator (eg GEN-1.1) as URI.

Each country gets its own AIP #Python3 module; AIXM support is optional.

#aviationgeek #aip #aixm

Frank Abelbeckfrank@troet.cafe
2025-07-14

Slowly making progress:

✅ collect German AIP pages, OCR-ed
✅ allow search on German AIP (using grep on the transcripts; parsing ANSI colour codes to get structured results)
✅ download German electronic AIP (AIXM 5.1) and build SQLite DB

next on: integrate these parts so that they work robustly in my local server, providing feedback of what is going on.

#aviationnerd #aviationgeek #aixm #aip #python3 #tesseract

Frank Abelbeckfrank@troet.cafe
2025-07-08

Now I have German airspace data in a database.

Ho. Ho. Ho.

#AIXM uses a #GML subset to define surfaces and curves. Arbitrary sets of primitives don't go well with relational databases, imo. Thus I converted the GML structures to semicolon-separated command strings (arc, circle, geodesic, line, curve).

#aviationnerd #python #sqlite3

screenshot of a Terminal window, showing output of an SQLite dump file
Frank Abelbeckfrank@troet.cafe
2025-07-07

Work in progress: declaring #AIXM objects in my #Python class structure. Most AIXM features (like aixm:AirportHeliport) of the datasets at aip.dfs.de/datasets are already defined.

Added a global linker set as class variable to the abstract object class, so that all links (like aixm:onRunway) can be collected and stored in one #sqlite3 helper table.

#aviationnerd

Frank Abelbeckfrank@troet.cafe
2025-07-04

Success! Completed a #Python #AIXM parser, based on xml.parsers.expat and a hierarchy of custom classes.

AIXM features and objects are declared as dictionairies, mapping tag names to AIXM value classes.

While expat traverses the document, features and objects are collected, and values are converted and attached.

In the end all features and objects generate their own SQL commands for creation and inserts.

It even got wait&space capacity for features I currently don't need.

💪

Frank Abelbeckfrank@troet.cafe
2025-06-30

Work in progress: porting my AIXM XSLT back to Python's xml.etree.ElementTree.

Functional programming approach ftw! parseNode() calling parseNode(), doing tag-dependend things.

Downside: xml.etree's namespace handling and XPath parsing is rudimentary at its best. 😐

#aviationnerd #python #xml #xslt #xpath #aixm

Frank Abelbeckfrank@troet.cafe
2025-03-05

Finally! My #Javascript planning module can access data from the German electronic AIP.

🙂 💪

Behind the scenes it downloads the current metadata from aip.dfs.de, updates the local AIXM files if necessary, and uses XSLT stylesheets to translate the original XML into JSON-compatible text.

*sigh*

XSLT 1.0 is rather... awkward... unwieldy. And JSON is not forgiving when it comes to control chars and dangling commas. Had to develop JSON building block templates.

#javascript #aixm #xslt #json

screenshot of the Firefox developer console, showing a Javascript object with data of the Wilhelmshaven aerodrome
Frank Abelbeckfrank@troet.cafe
2025-03-01

My #XSLT sheets for the German AIP #AIXM data are ready. They transform the rather complex AIXM to an intermediate simpler form, allowing retrieval of official aerodrome data (runway dimensions, radio frequencies, supplies, services) and VOR/NDB information.

So far, so fine.

Intermediate form means another bunch of files to check for updates. 🤔

Well, let's modify the XSLT. Either pull lists of aerodromes or navaids, or retrieve data of a specific entity. Global xsl:param ftw!

#aviationgeeks

Frank Abelbeckfrank@troet.cafe
2025-02-24

Hello #XSLT my old friend,
I′ve come to talk with you again...

Parsing complex XML in Javascript is possible, but tedious.

So I picked up XSLT again. From 2005 to 2008 I used it to construct our institute's website. Now it will produce intermediate representations of the German AIP datasets.

#deutscheflugsicherung #aip #aixm

Frank Abelbeckfrank@troet.cafe
2024-04-01

A rainy morning is also an opportunity for some quick hacking.

Wrote a script to read the German AIP AIXM dataset of waypoints and to produce GeoJSON compatible with the Enroute Flight Navigation app.

My Enroute is now RNAV-ready. 🙂

#aviation #avgeek #python #aixm #geojson

screenshot of the waypoint library page of the Enroute Flight Navigation app, showing RNAV waypoints like ABAMI or ABGASscreenshot of the map screen of the Enroute Flight Navigation app, showing a route via waypoint OSTOR to EDXR

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst