Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TECH] Ingérer et extraire les données provenant de GTFS #1

Merged
merged 21 commits into from
Apr 14, 2024

Conversation

VincentHardouin
Copy link
Owner

@VincentHardouin VincentHardouin commented Mar 28, 2024

Problème

Actuellement, le mode de jeu proposé n'est pas basé sur le temps, mais sur le nombre de stations, ce qui rend la solution proposée perturbante (plus de changement pour gagner 1 station par exemple).

Les données actuelles, qui se base sur les contributeurs OpenStreetMap, n'ont pas les informations sur les correspondances, ni le temps entre les stations. Il n'est donc pas possible de proposer un mode de jeu basé sur ces informations.

Proposition

Se baser sur le standard GTFS. Ce standard permet à toutes compagnies de transport de mettre à disposition, les routes, les voyages, les horaires à venir à chaque arrêt, les correspondances, …
Grâce à ces informations, nous sommes en capacité de connaître le temps entre 2 stations et le temps de correspondance entre 2 lignes au sein d'une même station.

Pour faire cela, j'ai téléchargé les données mise à disposition par IDFM, que j'ai importé dans une base PostgreSQL (scripts/import-data.js). Les données étant un peu volumineuse 9.5M de lignes pour les stop_times, il a fallu faire le parsing en streaming.

Une fois les données dans une base il est plus facile de faire des requêtes pour subvenir à notre besoin (scripts/export-data.js):

  • récupérer les lignes
  • récupérer les stations
  • récupérer les stations adjacentes et les correspondances
  • récupérer le temps entre station
  • récupérer le temps de correspondance

Cette PR est la première d'une série, ici, nous permettons juste l'import et l'export des données de GTFS.

Remarques

Utiliser les données de GTFS permet :

  • un mode par temps de trajet
  • un affichage des stations plus précises (l'unique point par station)
  • Avoir toutes les correspondances possibles (ex: Saint-Lazare - St-Augustin)
  • Être en capacité d'ajouter le RER, le bus, le tramway, etc.
  • Être en capacité de pouvoir faire d'autres villes avec quelques changements

Pour importer les données :

docker compose up 
npm run db:reset && npm run db:migrate
node scripts/import-data.js ~/path/gtfs-dir/

5 min plus tard les données sont importées.

Pour exporter les données :

node scripts/export-data.js

@VincentHardouin VincentHardouin self-assigned this Mar 28, 2024
@VincentHardouin VincentHardouin force-pushed the use-gtfs branch 2 times, most recently from 6cb8579 to 7af5c9a Compare March 30, 2024 22:02
@VincentHardouin VincentHardouin changed the title [TECH] Utiliser les données provenant de GTFS [TECH] Ingérer et extraire les données provenant de GTFS Apr 10, 2024
@VincentHardouin VincentHardouin force-pushed the use-gtfs branch 8 times, most recently from e6c29c4 to d549571 Compare April 14, 2024 09:36
@VincentHardouin VincentHardouin marked this pull request as ready for review April 14, 2024 10:13
@VincentHardouin VincentHardouin merged commit 439e534 into main Apr 14, 2024
1 check passed
@VincentHardouin VincentHardouin deleted the use-gtfs branch April 14, 2024 10:13
@VincentHardouin
Copy link
Owner Author

🎉 This PR is included in version 1.15.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant