Structure de l'export
L'export créée un zip contenant des fichiers csv.
Les fichiers csv produits par l'export gtfs sont :
- agencies.txt
- stops.txt
- routes.txt
- trips.txt
- stop_times.txt
- calendars.txt
Les fichiers respectent le format des fichiers GTFS défini dans la documentation officielle.
Rappel de la documentation officielle google : https://developers.google.com/transit/gtfs/reference/
Traitement des fichiers
agencies.txt
Une Agency GTFS sera créée à partir d'une Company Chouette.
| Chouette::Company | GTFS Agency |
|---|---|
| registration_number | agency_id |
| name | agency_name |
| url | agency_url |
| time_zone | agency_timezone |
| phone | agency_phone |
| agency_email |
Si l'attribut registration_number de la Company Chouette est vide, l'attribut GTFS agency_id sera égal à l'attribut id de la Company.
stops.txt
Un Stop GTFS sera créé à partir d'un StopArea Chouette.
Lorsque l'on fait la liste des StopArea à exporter, on récupère toute la hiérarchie d'arrêt que l'on ordonne par .
| Chouette::StopArea | GTFS Stop |
|---|---|
| registration_number | stop_id |
| name | stop_name |
| latitude | stop_lat |
| longitude | stop_lon |
| comment | stop_desc |
| url | stop_url |
| time_zone | stop_timezone |
Si l'attribut registration_number du StopArea Chouette est vide, l'attribut GTFS stop_id sera égal à l'attribut id du StopArea.
Si le StopArea Chouette a un parent, l'attribut GTFS parent_station sera rempli avec son identifiant GTFS.
Si l'attribut Chouette area_type est égal à "zdlp" alors l'attribut GTFS location_type sera égal à "1", sinon il sera égal à "0".
routes.txt
Une Route GTFS sera créée à partir d'une Line Chouette.
| Chouette::Line | GTFS Route |
|---|---|
| registration_number | route_id |
| published_name | route_long_name |
| number | route_short_name |
| type | route_type |
| desc | route_desc |
| url | route_url |
Si l'attribut registration_number de la Line Chouette est vide, l'attribut GTFS route_id sera égal à l'attribut id de la Line.
Si la Line Chouette a une Company, l'attribut GTFS agency_id sera rempli avec son identifiant GTFS.
Si l'attribut Chouette transport_mode est égal à "rail" alors l'attribut GTFS route_type sera égal à "2", sinon il sera égal à "3".
calendars.txt
Un Calendar GTFS sera créé à partir d'une TimeTable Chouette et de ses Periods et TimeTableDates.
Pour chaque Chouette::VehicleJourney concerné par l'export, on effectue un traitement pour fusionner ses TimeTables, Periods, et TimeTableDates. Après ce traitement, nous obtenons une liste de périodes qui seront utilisées pour produire les Calendars GTFS. Ce traitement rend inutile l'utilisation de CalendarDate GTFS car les exceptions sont également fusionnées avec les périodes.
Les Calendars sont générés à partir de ces périodes et ont un service_id aléatoire.
trips.txt
Un Trip GTFS sera créée à partir d'un VehicleJourney Chouette, de son lien avec une ligne, et de ses périodes.
On récupère la liste des périodes calculées à l'étape précédente, et pour chacune on créée un Trip GTFS.
L'attribut GTFS route_id est l'identifiant GTFS de la Line associée au VehicleJourney.
L'attribut GTFS service_id est l'identifiant GTFS de la période.
L'attribut GTFS trip_id est défini aléatoirement.
Si l'attribut wayback de la Route Chouette correspondant au VéhicleJourney est égal à "outbound" alors l'attribut GTFS route_type sera égal à "0", sinon il sera égal à "1".
stop_times.txt
Un StopTime GTFS sera créé à partir d'un VehicleJourneyAtStop Chouette.
Pour chaque période de chaque VehicleJourney calculée précédemment on créée un StopTime GTFS à partir de chaque VehicleJourneyAtStop du VehicleJourney.
| Chouette::VehicleJourneyAtStop | GTFS StopTime |
|---|---|
| arrival | arrival_time |
| name | stop_name |
| latitude | stop_lat |
| longitude | stop_lon |
| comment | stop_desc |
| url | stop_url |
| time_zone | stop_timezone |
L'attribut GTFS trip_id est récupéré depuis l'étape précédente.
Les attributs GTFS arrival_time et departure_time sont respectivement calculés en fonction de arrival_time et arrival_day_offset et de departure_time et departure_day_offset pour reproduire le format des horaires GTFS (heure + 24 x offset).
L'attribut GTFS stop_id est l'identifiant GTFS du StopArea associé au VehicleAtStop Chouette.
L'attribut GTFS stop_sequence est égal à l'attribut position de la Route Chouette associée au VehicleJourney.