Projet JAVA
OSTERTAG Victor et VERVAET Arthur
Mercredi 7 juin 2017
Plan de la présentation
Récupération des données
Construction du graphe
Dijkstra, BFS et leurs applications
Interface utilisateur et résultats
1
2
3
4
Récupération des données
1
Données RATP
Disponible en ligne : data.ratp.fr/explore
GTFS par lignes
RATP_GTFS_TRAM_T8.zip
RATP_GTFS_METRO_4.zip
RATP_GTFS_RER_B.zip
conserve que le métro
RATP_GTFS_METRO_4.zip
trips.txt
transfers.txt
stoptimes.txt
stops.txt
routes.txt
Fichier intéressant
stops.txt
Nom de la station
Longitude
Latitude
metro4.txt
Mettre les stations dans l'ordre
Retirer certaines virgules
Retirer les doublons
...
metro4.txt
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 1
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 2
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 3
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 4
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 5
... , ... , Nom de la station, ... , Latitude, Longitude,
Station 6
(Station dans le bon ordre)
Construction de notre graphe
2
Station de départ
Etape 1
Station de départ
Station 2
Première ligne
Création + Ajout du noeud
Deuxième ligne
Etape 1
Etape 2
Station de départ
Station 2
Création + Ajout du lien avec noeud précédent
Nème ligne
S1
S2
S3
S4
.....
SN
Création + Ajout du noeud
On répète cela pour tous les fichiers .txt de toutes les lignes
Le graphe du métro est alors créé !
On pourra vérifier qu'il est correct via l'interface utilisateur
BFS / Dijkstra et leurs applications
3
Chemin le plus court
Dijkstra enregistre le nœud précédent de tous les nœuds appartenant au chemin le plus court...
Node d'arrivée
Node précédent
Node précédent
Node de départ
on récupère...
on récupère...
on récupère...
Route : Arrivée
Route : Arrivée, précédent 1
Route : Arrivée, précédent 1, précédent 2
Route : Arrivée, précédent 1, précédent 2,
Départ
Chemin le plus long
Même principe que slide précédente
Dijkstra en utilisant la valeur négative des poids des Edges
Le chemin le plus long devient le plus court
On le récupère comme vu précedemment
Diamètre du graphe
On calcule les chemins les plus courts pour tous les nœuds
Le plus long de ces chemins correspond à notre diamètre
Prend pas mal de temps
12.90 secondes
Les Clusters
On rajoute une variable aux Edges notant le nombre de chemins utilisant cette dernière (qu'on remplit via Dijkstra).
On fait Dijkstra pour tous les noeuds.
On calcule la moyenne.
On repère les arrêtes qui ont un niveau 500x plus élevé que la moyenne
Clusters : Chatelet, Nation, Saint-Lazare, République, Montparnasse-Bienvenue, La Motte-Picquet-Grenelle
Interface utilisateur et résultats
4
Objectif
Pouvoir voir le métro
Avoir un affichage compréhensible des résultats
Pouvoir utiliser simplement ce qu'on a fait
Librairie D3
D3 est une librairie JavaScript permettant de donner vie à des données
On prend comme modèle l'example "Force-Directed Graph"
Puis on l'adapte à nos besoins
Requête ajax pour obtenir le graphe en JSON :
{
"nodes": [
{"id": 1, "group": 1, "name": "Nom de la station", "fx": 2.4852963, "fy": 48.2698412},
{"id": 2, "group": 1, "name": "Nom de la station 2", "fx": 2.5852963, "fy": 48.3698412}
],
"links": [
{"source": 1, "target": 2, "value": 1}
]
}
On fait ça pour tous les nodes et edges
Convertir les latitudes et longitudes
function getX(x) {
var position = (x - bounds.minLon) / (bounds.maxLon - bounds.minLon);
return dimensions.width*position+15;
}
function getY(y) {
var position = (y - bounds.minLat) / (bounds.maxLat - bounds.minLat);
return dimensions.height*position+15;
}
On calcule le pourcentage puis on multiplie par les dimensions du svg.
Soutenance de Java - Metro
By isvoli
Soutenance de Java - Metro
- 450