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.

Made with Slides.com