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 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".