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 les 17 mêmes 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 17 fichiers
Section intitulée « Les 17 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 |
“Conditionnel” signifie qu’au moins un des deux (calendar.txt ou calendar_dates.txt) doit être présent.
Les 17 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.