-
Notifications
You must be signed in to change notification settings - Fork 5
Add support for extended French OpenAir classes #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add support for extended French OpenAir classes #12
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for extended French OpenAir airspace classes to improve compatibility with French airspace files. The implementation follows the extended OpenAir format specification documented by BPascal-91.
- Added 14 new airspace classes specific to French aviation (FFVL, FFVP, ZSM, etc.)
- Implemented parsing logic for all new class identifiers with multiple format variations
- Added comprehensive test coverage with real-world French airspace examples
Reviewed Changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/lib.rs | Adds new French airspace classes to enum, implements parsing logic, and includes extensive test cases |
| FORMAT.txt | Fixes typo "begining" → "beginning" in documentation |
|
Another airspace was found that didn't parse: It's a class |
…nd log debug information
Nice! 🙂 Your visualizer looks better than mine. Regarding the changes: I'll try to review them soon-ish. If I forget about it, feel free to ping me! (About Copilot: It's the first time I see a review like this. So far it doesn't look like a big help yet 😅) |
| /// Zone Sensibilité Majeur | ||
| Zsm, | ||
| /// FFVL Protocole for PARAGLIDER | ||
| Ffvl, | ||
| /// FFVP Protocole for GLIDER | ||
| Ffvp, | ||
| /// Service d'Information en Vol | ||
| Siv, | ||
| /// Regulated Air Space | ||
| Ras, | ||
| /// Air Defense Identification Zone | ||
| Adiz, | ||
| /// Minimum Altitude Area | ||
| Ama, | ||
| /// PART of airspace | ||
| Part, | ||
| /// Flight Information Region | ||
| Fir, | ||
| /// Upper Flight Information Region | ||
| Uir, | ||
| /// Oceanic Control Area | ||
| Oca, | ||
| /// Political-administrative area | ||
| Political, | ||
| /// Airspace for which not even an FIR is defined | ||
| NoFir, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wouldn't it be easier to use something like Other(String) to cover all of these non-standard values?
side note: the Naviter folks are supporting these kinds of airspace types via AY instead (see https://github.com/naviter/seeyou_file_formats/blob/main/OpenAir_File_Format_Support.md#ay-airspace-type)
Hi Danilo,
Thanks for your work on this excellent library!
I've created a fork with Python bindings here: simonsteiner/openair-rs-py, and I've also adapted the airspace visualizer for Python: airspace-viewer.fly.dev.
While working with airspace files from the Palz Alsace Open 2025, I encountered an issue when parsing their OpenAir file:
Error: Failed to parse OpenAir file 'example_data/pao2025.txt': Invalid class: FFVLIt turns out that the French use an extended set of OpenAir classes. I have referenced BPascal-91/eAirspacesFormats and have added support for these additional airspace classes.
You can find extensive information about French airspace on Pascal Bazile's website.
Airspace class enhancements
Notam,Zsm,Ffvl,Ffvp,Siv,Ras,Adiz,Ama,Part,Fir,Uir,Oca,Political, andNoFir.impl Classblock has been extended to parse the new airspace classes.Parsing tests for new airspace classes
parse_ffvl_mundolsheim: tests the parsing of an FFVL airspace for paragliders.parse_zsm_gypaete_barbu: tests the parsing of a ZSM airspace for bird protection zones.parse_ffvp_echo2: tests the parsing of an FFVP airspace for gliders with detailed frequency and altitude specifications.Other improvements
Prohibitedairspace class has been reordered within theClassenum for consistency with other class definitions.example_datafolder.FORMAT.txthas been fixed (replacing "begining" with "beginning").Please let me know if you would like any changes to the PR.
Cheers,
Simon