Ceci est un TP d'évaluation sur une base de donnés neo4j
- Création : Créer une base de données
neo4j
des stations de métro de la ville de Paris.- Requêtes : Répondre à différentes questions sur la base en utilisant la syntaxe
Cypher
.- Application : Réaliser une application qui calcul l'itinéraire d'un point A à un point B dans Paris.
stations.csv
: informations sur les stations
nom_clean
: nom de la station en majusculenom_gare
: nom de la stationx
: latitude en my
: longitude en mTrafic
: le trafic estimé sur une annéeVille
: ville dans laquelle se trouve la stationligne
: numéro de la ligne qui passe par la station
liaisons.csv
: informations sur les liaisons entre stations
start
: station de début de la liaisonstop
: station de fin de la liaisonligne
: ligne de la liaison
Le fichier load_database.py est un script python permettant de remplir la base neo4j
avec :
:Station
les stations de métro. Une stations est représentées autant de fois qu'il y a de lignes de métro qui passent par elle.
Ainsi que les différentes liaisons (bidirectionnelles) :
:METRO
laisons en métro:CHANGE
correspondances à l'intérieur d'une station (entre 2 noeuds de la même station):WALK
liaison directement à pieds pour les distance inférieures à 1km
Données approximées:
- Temps moyen d'une correspondance :
4 min
- Vitesse moyenne d'un métro :
40 km/h
Le fichier exploration.cpy contient des requêtes Cypher
permettant de répondre aux différentes intérrogations suivantes
- Quel est le nombre de correspondances par station ?
- Quel est le nombre de stations à moins de deux kilomètres de la station
LADEFENSE
(on pourra prendre la distance brute sans considération de relation) ? - Combien de temps faut-il pour aller en metro de
LADEFENSE
àCHATEAUDEVINCENNES
? - Combien de temps faut-il pour aller à pied de
LADEFENSE
àCHATEAUDEVINCENNES
(on pourra considérer que tout le chemin se fait à pied, sans considération de relation) ? - Est-il plus rapide de faire un changement à
STLAZARE
pour aller deMONTPARNASSEBIENVENUE
àGABRIELPERI
? - Combien de stations se trouvent dans un rayon de 10 stations par train autour de
STLAZARE
? - Combien de stations se trouvent dans un rayon de 20 minutes par train autour de
STLAZARE
?
Le fichier route.py contient l'application de calcul d'itinéraires. L'application prend 4 paramètres:
- les coordonnées
x
ety
des points dedépart
et d'arrivée
et elle renvoie les informations suivantes sur le meilleur itinéraire :
- les
stations
traversées - les
lignes
de métro - le
temps d'arrivée
à chaque station
Algorithme utilisé : shortest path de Dijkstra
Docker
doit être installé sur la machine.
- Entrer la commande suivante dans un terminal
linux
ouwindows
docker container run -p 7474:7474 -p 7687:7687 datascientest/neo4j
- Se connecter ensuite depuis un navigateur internet à l’adresse :
http://ip_machine_virtuelle:7474
si on passe par une machine virtuelle.- http://localhost:7474 en local.
La librairie GraphDataScience
est chargée via l'image Docker, ce qui permet de faire des calcul de plus court chemin plus facilement.
Exécuter le script route.py
avec deux points de coordonnées x
et y
en paramètres. Par ex:
python route.py 649417.3796 6862185.2617 656447.3488 6858608.5005