Structure de l'import
L'import GTFS prend en entrée un zip contenant des fichiers csv.
Les fichiers csv pris en compte par l'import gtfs sont :
- agencies.txt
- stops.txt
- routes.txt
- trips.txt
- stop_times.txt
- calendars.txt
- calendar_dates.txt
L'import ignorera les fichiers suivants
- fare_attributes.txt
- fare_rules.txt
- shapes.txt
- frequencies.txt
- transfers.txt
- feed_info.txt
Les fichiers doivent respecter le format des fichiers GTFS comme défini dans la documentation officielle.
Rappel de la documentation officielle google : https://developers.google.com/transit/gtfs/reference/
Des exemples de fichiers GTFS sont disponibles à l'adresse suivante : https://developers.google.com/transit/gtfs/examples/gtfs-feed
Traitement des fichiers
Les fichiers sont traités dans l'ordre suivant :
- agencies.txt
- stops.txt
- routes.txt
- calendars.txt
- calendar_dates.txt
- trips.txt
- stop_times.txt
agencies.txt
Validation des données GTFS
Attributs obligatoires :
- agency_id (l'attribut n'est pas obligatoire selon la norme gtfs, mais les Chouette::Companies sont créées à partir de cet identifiant)
- agency_name
- agency_url
- agency_timezone
Conversion du modèle GTFS en modèle Chouette
Une Agency GTFS sera convertie en Company dans Chouette.
| GTFS Agency | Chouette::Company |
|---|---|
| agency_id | registration_number |
| agency_name | name |
| agency_url | url |
| agency_timezone | time_zone |
stops.txt
Validation des données GTFS
Attributs obligatoires :
- stop_id
- stop_name
- stop_lat
- stop_lon
Conversion du modèle GTFS en modèle Chouette
Un Stop GTFS sera converti en StopArea dans Chouette.
| GTFS Stop | Chouette::StopArea |
|---|---|
| stop_id | registration_number |
| stop_name | name |
| stop_lat | latitude |
| stop_lon | longitude |
| location_type | area_type |
Le Chouette::StopArea aura par défaut un kind "Commercial" et un confirmed_at à l'heure de l'import. L'attribut GTFS parent_station permet de trouver le parent de l'arrêt qui lui sera associé.
Si l'attribut GTFS location_type est égal à "1" alors l'attribut Chouette area_type sera égal à "zdlp", sinon l'attribut area_type sera égal à "zdep".
routes.txt
Validation des données GTFS
Attributs obligatoires :
- route_id
- route_short_name
- route_long_name
L'attribut route_type est obligatoire selon le profil GTFS mais n'est pas importé dans Chouette.
Conversion du modèle GTFS en modèle Chouette
Une Route GTFS sera convertie en Line Chouette.
| GTFS Route | Chouette::Line |
|---|---|
| route_id | registration_number |
| route_short_name | number |
| route_long_name | name |
| route_long_name | published_name |
| route_desc | comment |
| route_url | url |
L'attribut GTFS agency_id permet de trouver la Chouette::Company de la ligne qui lui sera associée.
calendars.txt
Validation des données GTFS
Attributs obligatoires :
- service_id
- monday
- thuesday
- wednesday
- thursday
- friday
- saturday
- sunday
- start_date
- end_date
Conversion du modèle GTFS en modèle Chouette
Un Calendar GTFS sera converti en une combinaison de TimeTable et Period Chouette. La TimeTable contient les jours d'application, et la Period qui lui est associée contient les dates de début et de fin de la période concernée.
| GTFS Route | Chouette::TimeTable | Chouette::Period |
|---|---|---|
| monday | monday | - |
| thuesday | thuesday | - |
| wednesday | wednesday | - |
| thursday | thursday | - |
| friday | friday | - |
| saturday | saturday | - |
| sunday | sunday | - |
| start_date | - | period_start |
| end_date | - | period_end |
L'attribut service_id sera stocké dans le champ comment de la TimeTable Chouette sous la forme : "Calendar [service_id]".
calendar_dates.txt
Validation des données GTFS
Attributs obligatoires :
- service_id
- date
- exception_type
Conversion du modèle GTFS en modèle Chouette
Un CalendarDate GTFS sera converti en Date Chouette associée à une TimeTable.
| GTFS CalendarDate | Chouette::Date |
|---|---|
| date | date |
| exception_type | in_out |
L'attribut GTFS service_id permet d'associer les Date à la TimeTable correspondante.
L'attribut Chouette in_out est un booléen. Si l'attribut GTFS exception_type est égal à "1" alors in_out sera égal à "true", si exception_type est égal à "2" alors in_out sera égal à "false".
trips.txt
Validation des données GTFS
Attributs obligatoires :
- route_id
- service_id
- trip_id
Conversion du modèle GTFS en modèle Chouette
Un Trip GTFS sera converti en une combinaison de Route, JourneyPattern et VehicleJourney Chouette.
Si l'attribut GTFS direction_id est égal à "1" alors l'attribut de la Route Chouette wayback sera égal à "outbound". Si direction_id est égal à 0, alors wayback sera égal à "outbound".
Les attributs de la Route Chouette published_name et name seront égaux à l'attribut GTFS trip_short_name s'il existe, sinon à l'attribut trip_headsign s'il existe, sinon à "OUTBOUND" ou "INBOUND" en fonction de l'attribut direction_id.
L'attribut name du JourneyPattern Chouette sera égal à celui de la Route.
L'attribut published_journey_name du VehicleJourney Chouette sera égal à l'attribut GTFS trip_headsign s'il existe, sinon à l'attribut trip_id.
L'attribut GTFS route_id permet d'associer les objets Chouette à la ligne correspondante.
L'attribut GTFS service_id permet d'associer le VehicleJourney à la TimeTable correspondante.
stop_times.txt
Validation des données GTFS
Attributs obligatoires :
- trip_id
- arrival_time
- departure_time
- stop_id
- stop_sequence
Conversion du modèle GTFS en modèle Chouette
Un StopTime GTFS sera converti en VehicleJourneyAtStop Chouette associé à un VehicleJourney et un StopArea.
| GTFS StopTime | Chouette::VehicleJourneyAtStop |
|---|---|
| arrival_time | arrival_time |
| departure_time | departure_time |
L'attribut GTFS trip_id permet d'associer les VehicleJourneyAtStop au VehicleJourney correspondant.
L'attribut GTFS stop_id permet d'associer les VehicleJourneyAtStop au StopArea correspondant.
L'attribut stop_sequence permet de donner un ordre aux VehicleJourneyAtStops dans le JourneyPattern correspondant au VehicleJourney.
Les attributs GTFS arrival_time et departure_time peuvent contenir des heures supérieures à 24 pour modéliser les horaires après minuit d'une journée de service. Les horaires sont stockées au format 24h dans les VehicleAtStops Chouette, mais les attributs departure_day_offset et arrival_day_offset permettent de modéliser ce problème. Si une heure est supérieure à 24, son offset correspondant sera égal à 1, sinon il sera égal à 0.