« 3D Flights Map »

Projet Java - Graphique - IHM
Spécialité Informatique, 3ème année
2014 - 2015
« 3D Flights Map »
1. Contexte
Le but du projet est de réaliser une application permettant de visualiser en 3D sur le globe terrestre les
différents trajets réalisés par les avions de ligne autour de la terre. Cette application devra permettre à
l’utilisateur de sélectionner une sous-partie de ces trajets afin de visualiser, par exemple, tous les trajets d’une
certaine compagnie aérienne, tous les trajets au départ d’une ville donnée, tous les trajets d’un pays à un
autre pays, etc. L’utilisateur pourra définir ces différents critères de recherche et ajuster les différents
paramètres de visualisation à partir d’une interface 2D. L’interface graphique de l’application sera donc
constituée d’une interface 2D incluant une fenêtre de visualisation 3D contenant une représentation du globe
terrestre (cf. image en partie n°4).
Les données utilisées seront celles disponibles sur le site internet http://openflights.org/data.html où l’on peut
trouver une liste des aéroports de la planète, une liste des différentes compagnies aériennes, ainsi que la liste
des vols réguliers opérés par ces compagnies aériennes dans le monde entier.
L’application sera réalisée en Java, tandis que l’interface graphique utilisera Java Swing pour la partie 2D et
le moteur JMonkeyEngine 3.0 (http://jmonkeyengine.org/) pour la partie 3D. Un tutoriel vous sera proposé
lors de la première séance de projet afin de vous initier à l’utilisation de JMonkeyEngine en utilisant
l’environnement de développement Eclipse et de vous aider à intégrer du contenu JMonkeyEngine dans une
fenêtre Java Swing.
2. Déroulement du projet
Le projet se compose en deux parties principales :
• Une partie applicative qui devra implémenter les différentes fonctionnalités de l’application (cf. partie n°3)
• Une partie interface graphique qui permettre à l’utilisateur de contrôler l’application et de visualiser les
informations (cf. partie n°4).
Il est important de s’assurer que ces deux parties soient le plus indépendant possible l’une de l’autre. Pour
cela, il vous est demandé de réaliser, dans un premier temps, seulement la partie applicative en utilisant un
affichage dans la console pour tester les différentes fonctionnalités. Une fois que la partie applicative sera
fonctionnelle et qu’elle aura été validée par les encadrants de projet, vous pourrez passer à la partie
interface graphique.
Par ailleurs, un accent particulier sera mis sur la conception logicielle tout au long du projet :
• Pour la partie applicative, il vous est demandé de rendre un diagramme UML modélisant votre
application dés la 2ème séance. Ce diagramme pourra évoluer au fur à mesure si vous vous rendez compte
que des choses ne vont pas, mais vous devrez en rendre une version mise à jour à la fin du projet.
• Pour la partie interface graphique, il vous est demandé de rentre un court storyboard de quelques pages
expliquant le fonctionnement de votre interface utilisateur avant de passer à l’implémentation (à rendre
vers le milieu du projet, lorsque vous aurez fini la partie applicative).
Le travail est à réaliser en binôme. L’environnement de développement conseillé est Eclipse. L’utilisation
d’un outil de gestion de versions (SVN ou Git) est fortement conseillé pour faciliter le travail en groupe.
3. Partie applicative
L’application « 3D Flights Map » doit être capable de :
• Charger la liste des aéroports (airports.dat), des compagnies aériennes (airlines.dat) et des vols réguliers
(routes.dat) et de les stocker dans des structures de données appropriées.
• Permettre à l’utilisateur d’effectuer différentes requêtes sur ces données, comme sélectionner les vols en
fonction de différents critères ou trouver un itinéraire (voir la liste de fonctionnalités ci-dessous).
Les listes airports.dat, airlines.dat et routes.dat sont disponibles sur le site internet http://openflights.org/
data.html. Ce site fournit aussi toutes les informations nécessaires sur le format et le contenu des fichiers.
Les structures de données utilisées devront, d’une part, permettre de recréer les liens existants entre les vols
réguliers, les compagnies aériennes qui opèrent ces vols, ainsi que les aéroports de départ et d’arrivé. D’autre
par, elles devront aussi permettre à l’application d’effectuer les fonctionnalités décrites dans le tableau cidessous de la façon la plus performante possible (i.e. en évitant, par exemple, de parcourir exhaustivement la
liste de tous les aéroports du monde pour savoir lesquels appartiennent à une ville ou un pays).
Les fonctionnalités demandées doivent être effectuées en fonction de l’ordre de priorité indiqué ci-dessous :
Fonctionnalités
Niveau de priorité
Parser les fichiers "airports.dat", "airlines.dat", "routes.dat" et stocker leur contenu
1
Donner la liste des compagnies aériennes, des aéroports, des villes ou des pays
commençant par une lettre ou une chaine de caractère donnée (par exemple, "A" ou
"Air F"). On pensera à utiliser une solution générique qui pourra être appliquée aux
4 types de données différentes (compagnies, aéroport, ville, pays)
1
Donner la liste des villes desservies pour un pays donné
1
Donner la liste des aéroports d’une ville donnée
1
Donner la liste des vols effectués par une compagnie aérienne (afficher l’aéroport de départ et l’aéroport d’arrivé dans la console lors des tests)
2
Donner la liste des vols au départ/à l’arrivé d’un lieu donné : aéroport, ville ou pays
2
Fonctionnalités
Niveau de priorité
Donner la liste des vols en combinant les deux critères : lieux (aéroport, ville ou
pays) + compagnie aérienne (on ré-utilisera les deux fonctionnalités précédentes)
2
Donner la liste des vols directs d’un lieu à un autre lieu (par exemple, d’une ville à
une ville ou d’un pays à un pays)
3
Effectuer un itinéraire d’un lieu à un autre lieu (vols directs s’il en existe + vols avec
escales)
3
Toutes ces fonctionnalités devront être testés en console avant de passer à l’implémentation de l’interface
graphique.
Toute fonctionnalité non listée sera comptabilisée en bonus.
4. Interface graphique
Exemple d’interface graphique
La partie interface graphique doit permettre à l’utilisateur accéder intuitivement aux fonctionnalités
développées dans la partie applicative et de visualiser en 3D les différents vols sélectionnés grâce à
l’interface 2D. Il est demandé que l’interface graphique permette de :
Fonctionnalités
Niveau de priorité
Sélectionner une compagnie aérienne de façon intuitive (i.e. sans avoir à parcourir la
liste de toutes les compagnies aériennes)
1
Sélectionner un lieu de départ ou d’arrivé de façon hiérarchique : d’abord le pays,
puis la ville, puis l’aéroport (on peut imaginer que l’utilisateur puisse d’arrêter au
pays ou à la ville s’il veut effectuer une requête plus générique. On peut aussi
imaginer que l’utilisateur ne sélectionne que le lieu de départ ou le lieu d’arrivé s’il
veut voir tous les vols au départ ou à l’arrivé de ce lieu)
1
Afficher / Masquer tous les aéroports du globe
1
Afficher en 3D sur le globe terrestre les aéroports et les vols qui sont le résultat de la
requête de l’utilisateur (exemple sur l’image : tous les vols au départ de Genève)
2
Permettre à l'utilisateur de régler les paramètres d’affichage (couleur et taille des
aéroports, couleur et taille des tracés représentants les vols)
2
Fonctionnalités
Niveau de priorité
Afficher les itinéraires entre deux lieux en 3D sur le globe
3
Permettre à l’utilisateur de sélectionner un itinéraire particulier et d’en afficher le
détail dans l’interface 2D
3
Sélectionner directement des aéroports sur le globe (pour obtenir les infos d’un
aéroport ou pour rechercher des itinéraires entre deux aéroports, par exemple)
Bonus
Proposer une représentation artistique de tous les vols autour de la terre
Bonus
Rappel : vous devez d’abord réaliser un court storyboard expliquant le fonctionnement de votre interface
graphique avant de passer à son implémentation.
Toute fonctionnalité non listée sera comptabilisée en bonus.
5. Evaluation
L’évaluation du projet Java - Graphique - IHM portera sur :
• un rapport à rendre au plus tard le mardi 16 juin 2015. Le rapport devra contenir une description
fonctionnelle et technique du travail réalisé, les diagrammes UML mis à jour et le storyboard.
• une présentation du travail réalisé et une démonstration lors des soutenances le vendredi 19 juin 2015.
6. Contacts
Groupe 1 : Cédric FLEURY - [email protected]
Groupe 2 : Quoc Khanh DO - [email protected]