Files
Alexandre 2cb633e99d 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>
2026-08-21 11:10:35 +02:00

92 lines
3.4 KiB
Markdown

# 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.