Planificateur d'Itinéraires & Carte Interactive
Une application GUI moderne développée en C++17 et Qt pour interroger, calculer et visualiser les trajets optimaux entre villes françaises grâce à l'algorithme de Floyd-Warshall.

"Langage & Standard":
C++17
"Framework GUI":
Qt 5 / Qt 6 (Widgets)
"Algorithmique":
Floyd-Warshall (Graphes)
"API Extérieure":
OpenWeatherMap REST API
Villes couvertes
France entière
Algorithme
Floyd-Warshall
Requête
O(1)
Présentation du Projet
Pas de service web, pas de clé API cachée dans un fichier de config : le calcul d'itinéraire tourne entièrement en local, en C++, sur une matrice de distances pré-calculée au démarrage. Interroger n'importe quel trajet entre deux villes devient une simple lecture - pas un nouveau calcul à chaque clic.
$ ls -la
- villes.csv - Coordonnées GPS & population
- temps.csv - Matrice des durées de trajet
Focus Algorithmique : Floyd-Warshall
Plutôt que d'exécuter un algorithme de Dijkstra à chaque nouvelle recherche de chemin (qui recalculerait les chemins à partir d'un seul sommet source), ce projet utilise l'algorithme de Floyd-Warshall pré-calculé au chargement des données.
- Temps de réponse instantané (O(1)) : La matrice
prochainpermet de reconstituer immédiatement n'importe quel itinéraire entre deux villes sans re-parcourir le graphe. - Adapté aux comparateurs multi-villes : Permet de générer instantanément les matrices comparatives entre toutes les villes sélectionnées.
Fonctionnalités Principales
Calcul d'Itinéraire Multi-étapes
Recherche du chemin le plus rapide entre deux villes avec possibilité d'ajouter des étapes intermédiaires personnalisables et calcul dynamique du temps cumulé.
Carte Vectorielle & Level of Detail (LOD)
Rendu interactif via QGraphicsView avec projection GPS adaptative, tracé en courbes de Bézier, zoom au curseur et affichage progressif des villes selon le niveau de zoom.
Animation de Trajet Pas à Pas
Simulation visuelle du déplacement d'un véhicule le long du tracé calculé avec suivi dynamique.
Météo en Temps Réel (API OpenWeatherMap)
Appels HTTP asynchrones (QNetworkAccessManager) pour récupérer les conditions météorologiques (température, vent, humidité) au départ, à l'arrivée et sur chaque étape.
Comparateur de Distances & Export
Tableau croisé des temps de parcours entre une sélection de villes, bascule en mode sombre et exportation d'image de la carte (.png / .jpg).
Défis Techniques & Solutions
1. Rendu Graphique & Projection GPS
La projection GPS → pixels, c'est le genre de détail qu'on croit trivial jusqu'à devoir le garder fluide au zoom. QGraphicsView aide, mais la logique de conversion elle-même reste entièrement maison.
2. Requêtes Asynchrones sans Gel de l'UI
Utilisation des signaux/slots de Qt et de QNetworkAccessManager pour effectuer les appels REST vers l'API OpenWeatherMap de façon asynchrone sans bloquer l'interface graphique.
Ce que j'ai appris
C++ Avancé & Qt Framework
Maîtrise de l'architecture événementielle (Signals & Slots), de la gestion de la mémoire, de la manipulation des widgets complexes et de la séparation entre la vue (IHM) et la logique métier.
Théorie des Graphes
Implémentation concrète de graphes via des matrices d'adjacence, manipulation de l'algorithme de Floyd-Warshall et reconstruction dynamique de plus courts chemins.
Intégration d'API REST & JSON
Consommation de services Web externe, parsing de flux JSON via QJsonDocument et gestion robuste des erreurs réseau et d'accès API.
Parsing & Structuration
Création de parsers CSV personnalisés et fiables pour charger dynamiquement les données géographiques et temporelles au démarrage.