Graphique de circulation
Le samedi 5 août 2006 à 22:53 - Lien permanent
Soit le problème « ferroviaire » suivant :
- On dispose d'une fiche horaire généreusement fournie par la SNCF ;
- On voudrait générer un joli graphique de circulation correspondant à cette fiche horaire.
Ce billet explique comment y arriver simplement, à l'aide d'un petit script en Ruby et de Gnuplot.
Première étape : récupérer les données brutes
Je n'ai pas vraiment cherché à automatiser cette étape. J'ai fait des opération de copier-coller à partir du fichier PDF et j'ai tout vérifié à la main... Cela donne un fichier de données pour le sens impair et le sens pair. Dans ces fichiers, la première colonne contient le nom de la gare, la deuxième le point kilométrique correspondant à la gare (trouvé par ailleurs), et enfin les horaires eux-mêmes.
Deuxième étape : générer les séries de données
Il faut maintenant générer les séries de données dans un format compréhensible par Gnuplot : il faut donc disposer de couples (heure de passage, point kilométrique). Ces séries sont trivialement déduites des fichiers de données précédents par un petit script Ruby : sens impair, sens pair.
Troisième étape : tracer le graphique
On écrit alors un petit programme Gnuplot :
- on indique que les données en abscisses sont des heures : Gnuplot gère alors nativement les données du type « 12.37 » et les représente correctement ;
- on laisse Gnuplot mettre lui-même les graduations en abscisses ;
- par contre, en ordonnées, on ne veut pas de graduations en kilomètres, mais la position des gares : on donne donc tout simplement in extenso la liste des graduations souhaitées, ainsi que leurs étiquettes (les noms des gares) ;
- enfin, on indique dans quels fichiers se trouvent les données.
Et voilà le résultat ! Joli non ? L'intérêt, c'est qu'on y est arrivé de manière reproductible et presque « tout automatique » : on peut donc à loisir et sans effort supplémentaire modifier le résultat, ou utiliser d'autres données d'entrée.
Mise en garde : ce billet donne une méthode pour tracer des graphiques de circulation. Les fichiers de données et le graphique sont donc donnés à titre de simples illustrations. Je ne peux donc pas être tenu responsable de leur contenu, et des inexactitudes qu'ils peuvent contenir. Pour des renseignements fiables sur les horaires des trains, reportez-vous à la SNCF.
Mise à jour : les fichiers fournis en exemple correspondent actuellement aux horaires de l'année civile 2008.
Commentaires
Bonjour, je suis tombé sur ton site en cherchant des photos de Kleberland Resort™ (nom strictement personnel donné à la résidence), ou j'entre en Septembre en prépa ECS à l'internat, et je suis heureux d'avoir pu me faire une petite idée avec les photos.
Merci. Bonne continuation.
ps : pardon, je sais que ça n'a rien à voir avec la note du blog... mais tu peux supprimer après lecture, cela ne me dérange pas.
bonsoir,
Recherchant un programme permettant de créer un graphique de circulation ferroviaire, je suis tombé sur votre site.
Le résultat m'a l'air plutôt réussi mais n'étant pas un spécialiste j'avoue que j'éprouve quelques difficultés à comprendre la méthode;
Pourriez-vous me donner quelques explications supplémentaires ?
Merci
Bonjour,
J'ai utilisé des outils du système d'exploitation Unix pour réaliser ce graphique : ruby (langage de programmation) et gnuplot (tracé de graphiques). Voici les étapes :
Le problème, c'est que ma solution est potentiellement « assez ad-hoc » pour le cas particulier que j'ai traité, et donc il risque d'y avoir des adaptations à faire pour l'utiliser sur une autre ligne...
Bonjour,
Merci pour cette méthode très intéressante !
Pas trop de soucis pour la mettre en oeuvre. La seule chose qui coince chez moi, c'est le code pour passer son graphe en PDF. Gnuplot m'indique que le format PDF n'est pas disponible dans la liste des formats possibles ?
Ah oui, ça dépend de la version de Gnuplot. Certaines ne gèrent pas le PDF. Une solution peut être d'enregistrer en Postscript, puis de faire la conversion.