Flux GTFS
Un flux GTFS Schedule est une collection de fichiers CSV empaquetés ensemble qui décrivent un réseau de transport : lignes, arrêts, horaires, tarifs, tracés. gapline travaille avec 31 des fichiers définis par la spec GTFS Schedule.
Archive ZIP ou répertoire
Section intitulée « Archive ZIP ou répertoire »Les deux formes sont acceptées partout où un flux est consommé :
gapline validate -f gtfs.zipgapline validate -f ./gtfs/Le ZIP est généralement ce que publient les opérateurs. La forme répertoire est pratique pour itérer localement — un unzip gtfs.zip -d ./gtfs/ une fois, puis on travaille directement sur les fichiers. gapline ne demande pas de re-compresser le ZIP entre deux itérations.
Pour l’écriture (via --output, update, delete, ou un save dans .gl), le format de sortie reprend celui de l’entrée : ZIP en entrée, ZIP en sortie ; répertoire en entrée, répertoire en sortie.
Les 31 fichiers
Section intitulée « Les 31 fichiers »Chaque fichier ci-dessous est à la racine de l’archive (ou du répertoire). gapline les parse tous et leur applique les règles de validation.
| Fichier | Requis par la spec ? | Cible CRUD |
|---|---|---|
agency.txt | Requis | agency |
stops.txt | Requis | stops |
routes.txt | Requis | routes |
trips.txt | Requis | trips |
stop_times.txt | Requis | stop-times / stop_times |
calendar.txt | Conditionnel | calendar |
calendar_dates.txt | Conditionnel | calendar-dates / calendar_dates |
shapes.txt | Optionnel | shapes |
frequencies.txt | Optionnel | frequencies |
transfers.txt | Optionnel | transfers |
pathways.txt | Optionnel | pathways |
levels.txt | Optionnel | levels |
feed_info.txt | Optionnel | feed-info / feed_info |
fare_attributes.txt | Optionnel | fare-attributes / fare_attributes |
fare_rules.txt | Optionnel | fare-rules / fare_rules |
translations.txt | Optionnel | translations |
attributions.txt | Optionnel | attributions |
fare_media.txt | Optionnel | fare-media / fare_media |
fare_products.txt | Optionnel | fare-products / fare_products |
fare_leg_rules.txt | Optionnel | fare-leg-rules / fare_leg_rules |
fare_transfer_rules.txt | Optionnel | fare-transfer-rules / fare_transfer_rules |
rider_categories.txt | Optionnel | rider-categories / rider_categories |
timeframes.txt | Optionnel | timeframes |
areas.txt | Optionnel | areas |
stop_areas.txt | Optionnel | stop-areas / stop_areas |
networks.txt | Optionnel | networks |
route_networks.txt | Optionnel | route-networks / route_networks |
fare_leg_join_rules.txt | Optionnel | fare-leg-join-rules / fare_leg_join_rules |
booking_rules.txt | Optionnel | booking-rules / booking_rules |
location_groups.txt | Optionnel | location-groups / location_groups |
location_group_stops.txt | Optionnel | location-group-stops / location_group_stops |
“Conditionnel” signifie qu’au moins un des deux (calendar.txt ou calendar_dates.txt) doit être présent.
Les 31 cibles sont supportées par les commandes CRUD (read, create, update, delete). Les deux orthographes (kebab-case et underscore) résolvent la même cible.
Où gapline est strict
Section intitulée « Où gapline est strict »- Structure des fichiers. Fichier requis manquant, fichier vide, ligne CSV qui ne correspond pas à son en-tête : anomalies
ERROR. La validation en aval ne tourne pas de façon pertinente — corrigez ces problèmes d’abord. - Clés primaires. Un
stop_id,route_id, ou équivalent en double est toujours une erreur. gapline s’appuie sur l’unicité PK pour l’index inverse de l’intégrité référentielle. - Clés étrangères.
stop_times.stop_id → stops.stop_id,trips.route_id → routes.route_idet les autres FK de la spec sont appliquées. Les orphelins sont des erreurs (saufcalendar_dates.service_idqui référence un service absent decalendar.txt, qui est un avertissement — la spec autorise la définition par dates seules). - Champs requis. Valeurs manquantes dans les colonnes requises : erreurs.
Où gapline est indulgent
Section intitulée « Où gapline est indulgent »- Colonnes inconnues. Les colonnes non définies par la spec sont des anomalies informatives (
unknown_column), pas des erreurs. Les opérateurs livrent souvent des extensions propriétaires ; gapline les préserve en écriture. - BOM. Un BOM UTF-8 en début de fichier est accepté silencieusement. Le parser le retire avant l’analyse CSV.
- Ordre des colonnes. La spec n’impose pas d’ordre ; gapline accepte n’importe quel ordre tant que toutes les colonnes requises sont présentes.
- Espaces dans les valeurs. Les espaces en début/fin d’une valeur entre guillemets sont préservés. Les valeurs non quotées ne sont pas trimmées.
Encodage
Section intitulée « Encodage »GTFS est défini en UTF-8. gapline rejette les fichiers non-UTF-8 avec un message clair (quel fichier, quel offset). Si un opérateur livre en Latin-1, transcodez avant de passer le flux à gapline :
iconv -f latin1 -t utf8 stops.txt > stops.utf8.txtHors scope
Section intitulée « Hors scope »- GTFS-Realtime. Non supporté. GTFS-RT est une spec protobuf séparée ; seul Schedule est couvert.
- GTFS-Flex et Fares v2. Non supportés actuellement.
Voir aussi
Section intitulée « Voir aussi »- Référence GTFS Schedule — la spec canonique.
- Concepts / Sévérités — comment la distinction strict/indulgent se projette sur les niveaux d’anomalies.
- Concepts / Intégrité référentielle — ce qui se passe quand les FK cassent.