Projet JAVA
OSTERTAG Victor et VERVAET Arthur
Mercredi 7 juin 2017
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/2727134/logo-isep-297x125.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882529/store-1103556_960_720.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3554824/1211794689.png)
Disponible en ligne : data.ratp.fr/explore
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882537/cloud-down-icon.png)
GTFS par lignes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882539/folder_PNG8773.png)
RATP_GTFS_TRAM_T8.zip
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882539/folder_PNG8773.png)
RATP_GTFS_METRO_4.zip
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882539/folder_PNG8773.png)
RATP_GTFS_RER_B.zip
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882543/delimiters-35878_640.png)
conserve que le métro
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882539/folder_PNG8773.png)
RATP_GTFS_METRO_4.zip
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
trips.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
transfers.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
stoptimes.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
stops.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
routes.txt
Fichier intéressant
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
stops.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/2927193/loupe.png)
Nom de la station
Longitude
Latitude
metro4.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
Mettre les stations dans l'ordre
Retirer certaines virgules
Retirer les doublons
...
metro4.txt
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882551/logo_txt.png)
... , ... , 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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882686/circle-311551_960_720.png)
On répète cela pour tous les fichiers .txt de toutes les lignes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882698/s9wGx.png)
Le graphe du métro est alors créé !
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882699/controle.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3882989/28083__1_.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3554748/goal-icon.png)
Pouvoir voir le métro
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3883029/maps-icon-3.png)
Avoir un affichage compréhensible des résultats
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3883034/education-icon.png)
Pouvoir utiliser simplement ce qu'on a fait
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3883036/maintenance-icon-0.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3883043/1562726.png)
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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/520869/images/3883077/AJAX_logo_by_gengns.svg.png)
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
- 424