Initial commit: offline flight planner (Rust, PFPX-class)
Clean-room reproduction of PFPX: route generation + IFPS validation + OFP. Independent design — official ICAO/EUROCONTROL data only (RAD, FRA points, IFPUV oracle); no community FPL sources. Workspace crates: core (routing/discover/rad/navdata/perf/export), cli, server, rad (Annex parser), gui (Tauri v2 + React + MapLibre). Route discovery: oracle-in-the-loop repair against Eurocontrol IFPUV. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# flightplanner
|
||||
|
||||
Outil de *flight planning* **local et offline** pour la simulation de vol
|
||||
(MSFS / P3D / X-Plane), dans l'esprit de PFPX en plus simple. Aucune dépendance
|
||||
cloud : navdata X-Plane importée en base SQLite locale, routing par réseau
|
||||
d'airways, plan carburant, export `.pln` / `.fms` / OFP texte.
|
||||
|
||||
> État : **MVP en construction**. Voir [`TODO.md`](TODO.md) pour l'avancement,
|
||||
> et [`IDEAS.md`](IDEAS.md) pour la vision produit long terme (briefing complet
|
||||
> type SkyNexus/SimBrief : météo, NOTAM, carte enroute, charts…).
|
||||
|
||||
## Architecture
|
||||
|
||||
Workspace Cargo à deux crates :
|
||||
|
||||
| Crate | Rôle |
|
||||
|-----------------------|------------------------------------------------------------------|
|
||||
| `flightplanner-core` | Logique métier : parsing navdata, base SQLite, routing, perf, export |
|
||||
| `flightplanner-cli` | Binaire `flightplanner` (interface `clap`) |
|
||||
|
||||
Une interface web locale (Axum) pourra s'ajouter plus tard sans toucher au cœur.
|
||||
|
||||
## Prérequis
|
||||
|
||||
- **Rust stable** (toolchain MSVC sous Windows) — https://rustup.rs
|
||||
- Un **compilateur C** : `rusqlite` est utilisé en mode `bundled` (SQLite compilé
|
||||
depuis la source). Sous Windows, installer les *Visual Studio Build Tools*
|
||||
(workload « Développement Desktop en C++ »).
|
||||
|
||||
## Récupérer la navdata X-Plane (gratuit)
|
||||
|
||||
L'outil lit le format texte X-Plane. La donnée par défaut, **libre**, est fournie
|
||||
avec X-Plane 11/12 dans :
|
||||
|
||||
```
|
||||
<dossier X-Plane>/Resources/default data/
|
||||
```
|
||||
|
||||
Fichiers utilisés :
|
||||
|
||||
| Fichier | Contenu |
|
||||
|------------------|------------------------------------------|
|
||||
| `earth_fix.dat` | Waypoints / fixes |
|
||||
| `earth_nav.dat` | Navaids (VOR, DME, NDB, ILS...) |
|
||||
| `earth_awy.dat` | Airways (segments entre waypoints) |
|
||||
|
||||
Copier ces fichiers dans un dossier local, p. ex. `./navdata/` (ignoré par git).
|
||||
|
||||
> Pour une navdata à jour (cycle AIRAC courant), une souscription Navigraph est
|
||||
> possible, mais **hors périmètre du MVP** : ici on part de la donnée X-Plane
|
||||
> gratuite, importée manuellement.
|
||||
|
||||
## Utilisation
|
||||
|
||||
```sh
|
||||
# 1) Importer la navdata en base SQLite locale
|
||||
flightplanner import-navdata --source ./navdata/ --db flightplanner.db
|
||||
|
||||
# 2) Router (FL-aware si --cruise-fl ou profil avion fourni)
|
||||
flightplanner route --from LFPG --to EGLL --db flightplanner.db
|
||||
|
||||
# 3) Route + carburant + pré-check IFPS + exports
|
||||
flightplanner route --from LFPG --to EGLL --db flightplanner.db \
|
||||
--aircraft A320 --cruise-fl 340 \
|
||||
--check-ifps --ofp \
|
||||
--pln LFPG-EGLL.pln --fms LFPG-EGLL.fms
|
||||
|
||||
# Pré-check IFPS d'une chaîne de route arbitraire
|
||||
flightplanner ifps-check --route "LFPG DCT PON UT300 ... MODMI DCT EGLL" --fl 340 --db flightplanner.db
|
||||
```
|
||||
|
||||
> **Aéroports** : les coordonnées viennent des seuils de piste des fichiers
|
||||
> `CIFP/<ICAO>.dat`. Pour router au-delà de la paire testée, extraire tout le
|
||||
> dossier `CIFP/` de l'archive navdata dans `./navdata/CIFP/` avant l'import.
|
||||
|
||||
> **Check IFPS** : le `--check-ifps` est un **pré-check local best-effort** (non
|
||||
> officiel). Un vrai check IFPS *fiable* nécessite un validateur online
|
||||
> (Autorouter / Eurocontrol NM) — voir [`IDEAS.md`](IDEAS.md).
|
||||
|
||||
## Développement
|
||||
|
||||
```sh
|
||||
cargo build
|
||||
cargo test
|
||||
cargo fmt && cargo clippy
|
||||
```
|
||||
|
||||
## Licence
|
||||
|
||||
MIT OR Apache-2.0. La navdata X-Plane est soumise à sa propre licence et n'est
|
||||
pas redistribuée dans ce dépôt.
|
||||
Reference in New Issue
Block a user