GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 5.0.1 at 2024-06-07T16:22:39Z,
for the dataset file:///tmp/1_in.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
N/A
Publisher URL:
N/A
Feed Language:
N/A

Files included


  1. agency.txt
  2. calendar.txt
  3. calendar_dates.txt
  4. routes.txt
  5. stop_times.txt
  6. stops.txt
  7. trips.txt

Counts


  • Agencies: 1
  • Blocks: 224
  • Routes: 19
  • Shapes: 0
  • Stops: 701
  • Trips: 3559

Specification Compliance report

451 notices reported (339 errors, 36 warnings, 76 infos)

Notice Code Severity Total
block_trips_with_overlapping_stop_times ERROR 24

block_trips_with_overlapping_stop_times

Trips with the same block id have overlapping stop times.

You can see more about this notice here.

csvRowNumberA (?) The row number from `trips.txt` of the first faulty trip. tripIdA (?) The id of first faulty trip. serviceIdA (?) The service id of the first faulty trip. csvRowNumberB (?) The row number from `trips.txt` of the second faulty trip. tripIdB (?) The id of the other faulty trip. serviceIdB (?) The service id of the other faulty trip. blockId (?) The `trips.block_id` of the overlapping trip. intersection (?) The overlapping period.
574 "4-P1-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2645 "22-P4-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "10" "20240401"
580 "10-P2-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2633 "10-P2-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "11" "20240401"
592 "22-P4-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2639 "16-P3-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "12" "20240401"
573 "3-P1-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2626 "3-P1-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "13" "20240401"
591 "21-P4-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2638 "15-P3-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "14" "20240401"
2644 "21-P4-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" 585 "15-P3-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" "15" "20240401"
579 "9-P2-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2632 "9-P2-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "16" "20240401"
593 "23-P4-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2640 "17-P3-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "17" "20240401"
2646 "23-P4-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" 587 "17-P3-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" "18" "20240401"
575 "5-P1-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2628 "5-P1-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "19" "20240401"
589 "19-P4-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2636 "13-P3-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "1" "20240401"
2642 "19-P4-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" 583 "13-P3-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" "2" "20240401"
571 "1-P1-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2624 "1-P1-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "3" "20240401"
577 "7-P2-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2630 "7-P2-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "4" "20240401"
572 "2-P1-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2625 "2-P1-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "5" "20240401"
2631 "8-P2-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" 584 "14-P3-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" "6" "20240401"
590 "20-P4-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2637 "14-P3-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "7" "20240401"
578 "8-P2-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2643 "20-P4-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "8" "20240401"
2627 "4-P1-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" 586 "16-P3-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" "9" "20240401"
581 "11-P2-MAC2018-MuLuSco-Lundi-01-1000000" "MAC2018-MuLuSco-Lundi-01-1000000" 2634 "11-P2-MAC2018-MuPVS-Lundi-02-1000000" "MAC2018-MuPVS-Lundi-02-1000000" "20" "20240401"
582 "12-P2-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2629 "6-P1-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "21" "20240401"
2635 "12-P2-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" 576 "6-P1-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" "22" "20240401"
588 "18-P3-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2641 "18-P3-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "23" "20240401"
594 "24-P4-MAC2018-MuLuSco-Lundi-01" "MAC2018-MuLuSco-Lundi-01" 2647 "24-P4-MAC2018-MuPVS-Lundi-02" "MAC2018-MuPVS-Lundi-02" "24" "20240401"
duplicate_key ERROR 5

duplicate_key

Duplicated entity.

The values of the given key and rows are duplicates.

You can see more about this notice here.

filename (?) The name of the faulty file oldCsvRowNumber (?) The row of the first occurrence. newCsvRowNumber (?) The row of the other occurrence. fieldName1 (?) Composite key's first field name. fieldValue1 (?) Composite key's first value.
"stops.txt" 450 55 "stop_id" "CGPONT"
"stops.txt" 524 179 "stop_id" "HURMIO"
"stops.txt" 544 217 "stop_id" "LTCAMA"
"stops.txt" 681 367 "stop_id" "SNCFa"
"stops.txt" 682 369 "stop_id" "SNCFd"
location_with_unexpected_stop_time ERROR 5

location_with_unexpected_stop_time

A location in stops.txt that is not a stop is referenced by some stop_times.stop_id.

Referenced locations (using stop_times.stop_id) must be stops/platforms, i.e. their stops.location_type value must be 0 or empty.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record from `stops.txt`. stopId (?) The id of the faulty record from `stops.txt`. stopName (?) The `stops.stop_name` of the faulty record. stopTimeCsvRowNumber (?) The row number of the faulty record from `stop_times.txt`.
450 "CGPONT" "La Chapelle de Guinchay Pontanevaux" 6778
524 "HURMIO" "Hurigny Les Miolands" 6587
544 "LTCAMA" "Rue Lt.C. André Marlin" 6830
681 "SNCFa" "SNCFa" 6509
682 "SNCFd" "SNCFd" 6538
stop_without_location ERROR 296

stop_without_location

stop_lat and/or stop_lon is missing for stop with location_type equal to0, 1, or 2

stop_lat and/or stop_lon are required for locations that are stops (location_type=0), stations (location_type=1) or entrances/exits (location_type=2).

You can see more about this notice here.

Only the first 50 of 296 affected records are displayed below.

csvRowNumber (?) The row number of the faulty record. locationType (?) The faulty record's `stops.location_type`. stopId (?) The faulty record's id.
412 "STATION" "11NOV"
413 "STATION" "19MA62"
414 "STATION" "1ARMEE"
415 "STATION" "ABBFER"
416 "STATION" "ABIME"
417 "STATION" "ALBCOU"
418 "STATION" "ALBREC"
419 "STATION" "AMARY"
420 "STATION" "AMBPAR"
421 "STATION" "AMPERE"
422 "STATION" "ARRIVE"
423 "STATION" "AVDEGA"
424 "STATION" "AZEBEL"
425 "STATION" "AZEBOU"
426 "STATION" "AZERIZ"
427 "STATION" "BARRAM"
428 "STATION" "BELHOR"
429 "STATION" "BLACRO"
430 "STATION" "BLANCH"
431 "STATION" "BLAORA"
432 "STATION" "BLAPAR"
433 "STATION" "BOUCHA"
434 "STATION" "BOUEST"
435 "STATION" "BOUOUE"
436 "STATION" "BOURG"
437 "STATION" "BREART"
438 "STATION" "BUIS"
439 "STATION" "BUSSGB"
440 "STATION" "CAMPIN"
441 "STATION" "CAMUS"
442 "STATION" "CARMEL"
443 "STATION" "CARNOT"
444 "STATION" "CATSTV"
445 "STATION" "CEDRES"
446 "STATION" "CESSCH"
447 "STATION" "CGGEND"
448 "STATION" "CGMAIR"
449 "STATION" "CGMAIS"
450 "STATION" "CGPONT"
451 "STATION" "CHABAT"
452 "STATION" "CHAEGL"
453 "STATION" "CHAILL"
454 "STATION" "CHAIS"
455 "STATION" "CHAMOU"
456 "STATION" "CHAMPG"
457 "STATION" "CHAMPL"
458 "STATION" "CHANAY"
459 "STATION" "CHANTE"
460 "STATION" "CHAPEL"
461 "STATION" "CHAPIL"
wrong_parent_location_type ERROR 9

wrong_parent_location_type

Incorrect type of the parent location.

Value of field location_type of parent found in field parent_station is invalid.

According to spec

  • Stop/platform can only have Station as parent
  • Station can NOT have a parent
  • Entrance/exit or generic node can only have Station as parent
  • Boarding Area can only have Platform as parent

Any other combination raise this error.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty record. stopName (?) The faulty record's `stops.stop_name`. locationType (?) The faulty record's `stops.location_type`. parentCsvRowNumber (?) The row number of the faulty record's parent. parentStation (?) The id of the faulty record's parent station. parentStopName (?) The stop name of the faulty record's parent. parentLocationType (?) The location type of the faulty record's parent. expectedLocationType (?) The expected location type of the faulty record.
55 "CGPONT" "La Chapelle de Guinchay Pontanevaux" 0 55 "CGPONT" "La Chapelle de Guinchay Pontanevaux" 0 1
56 "CGPONT1" "La Chapelle de Guinchay Pontanevaux" 0 55 "CGPONT" "La Chapelle de Guinchay Pontanevaux" 0 1
179 "HURMIO" "Hurigny les Miolands" 0 179 "HURMIO" "Hurigny les Miolands" 0 1
180 "HURMIO2" "Hurigny les Miolands" 0 179 "HURMIO" "Hurigny les Miolands" 0 1
217 "LTCAMA" "Rue du Lt. Colonel André Marlin" 0 217 "LTCAMA" "Rue du Lt. Colonel André Marlin" 0 1
367 "SNCFa" "SNCFa" 0 367 "SNCFa" "SNCFa" 0 1
368 "SNCFar" "SNCF" 0 367 "SNCFa" "SNCFa" 0 1
369 "SNCFd" "SNCFd" 0 369 "SNCFd" "SNCFd" 0 1
370 "SNCFdp" "SNCF" 0 369 "SNCFd" "SNCFd" 0 1
expired_calendar WARNING 12

expired_calendar

Dataset should not contain date ranges for services that have already expired.

This warning takes into account the calendar_dates.txt file as well as the calendar.txt file.

You can see more about this notice here.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
14 "MAC2018-MuPVS-Jeudi-05"
11 "MAC2018-MuPVS-Mardi-04-0100000"
15 "MAC2018-MuPVS-Jeudi-05-0001000"
17 "MAC2018-MuPVS-Vendredi-06-0000100"
13 "MAC2018-MuMeSco-Mercredi-04-0010000"
16 "MAC2018-MuPVS-Vendredi-06"
10 "MAC2018-MuPVS-Mardi-04"
24 "MAC2018-MuPVS-Lundi-02"
19 "MAC2018-MuSaPVS-Samedi-03-0000010"
12 "MAC2018-MuMeSco-Mercredi-04"
25 "MAC2018-MuPVS-Lundi-02-1000000"
18 "MAC2018-MuSaPVS-Samedi-03"
leading_or_trailing_whitespaces WARNING 1

leading_or_trailing_whitespaces

The value in CSV file has leading or trailing whitespaces.

This notice is emitted for values protected with double quotes since whitespaces for non-protected values are trimmed automatically by CSV parser.

The validator strips whitespaces from protected values. We do not see any use case when such a whitespace may be needed. On the other hand, some real-world feeds use trailing whitespaces for some values and omit them for the others. This is causing the largest problem when a primary key and a foreign key differ just by a whitespace: it is clear that they are intended to be the same, that is why we always strip whitespaces.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) Faulty record's field name. fieldValue (?) Faulty value.
"stops.txt" 436 "stop_name" " Le Bourg"
missing_recommended_column WARNING 1

missing_recommended_column

A recommended column is missing in the input file.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the missing column.
"stop_times.txt" "timepoint"
missing_recommended_field WARNING 19

missing_recommended_field

A recommended field is missing.

The given field has no value in some input row, even though values are recommended.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"routes.txt" 2 "agency_id"
"routes.txt" 3 "agency_id"
"routes.txt" 4 "agency_id"
"routes.txt" 5 "agency_id"
"routes.txt" 6 "agency_id"
"routes.txt" 7 "agency_id"
"routes.txt" 8 "agency_id"
"routes.txt" 9 "agency_id"
"routes.txt" 10 "agency_id"
"routes.txt" 11 "agency_id"
"routes.txt" 12 "agency_id"
"routes.txt" 13 "agency_id"
"routes.txt" 14 "agency_id"
"routes.txt" 15 "agency_id"
"routes.txt" 16 "agency_id"
"routes.txt" 17 "agency_id"
"routes.txt" 18 "agency_id"
"routes.txt" 19 "agency_id"
"routes.txt" 20 "agency_id"
missing_recommended_file WARNING 1

missing_recommended_file

A recommended file is missing.

You can see more about this notice here.

filename (?) The name of the faulty file.
"feed_info.txt"
mixed_case_recommended_field WARNING 2

mixed_case_recommended_field

This field has customer-facing text and should use Mixed Case (should contain upper and lower case letters).

This field contains customer-facing text and should use Mixed Case (upper and lower case letters) to ensure good readability when displayed to riders. Avoid the use of abbreviations throughout the feed (e.g. St. for Street) unless a location is called by its abbreviated name (e.g. “JFK Airport”). Abbreviations may be problematic for accessibility by screen reader software and voice user interfaces.

Good examples:
Field Text Dataset
"Schwerin, Hauptbahnhof" Verkehrsverbund Berlin-Brandenburg
"Red Hook/Atlantic Basin" NYC Ferry
"Campo Grande Norte" Carris
Bad examples:
Field Text
"GALLERIA MALL"
"3427 GG 17"
"21 Clark Rd Est"

You can see more about this notice here.

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"stops.txt" "stop_name" "19-mars-62" 2
"stops.txt" "stop_name" "19-mars-62" 3
unused_parent_station INFO 76

unused_parent_station

Unused parent station.

A stop has location_type STATION (1) but does not appear in any stop's parent_station.

You can see more about this notice here.

Only the first 50 of 76 affected records are displayed below.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty stop. stopName (?) The name of the faulty stop.
501 "FONGAR" "Fontaine Gard"
584 "PERAUB" "Père Aubry"
489 "DEPART" "Départ"
604 "PORARC" "Port d'Arciat"
602 "PONTSL" "Pont Saint Laurent"
487 "DAVAPO" "Davaye Patte d'Oie"
658 "RUEPOR" "Rue du Port"
654 "RUEMIN" "Rue des Minimes"
629 "RSTRAS" "Rue de Strasbourg"
659 "RUEPRE" "Rue de la Préfecture"
412 "11NOV" "Rue du 11 Novembre"
660 "RUEREP" "Rue République"
639 "RUECHA" "Rue Chatillon"
661 "RUERES" "Rue Résistance"
443 "CARNOT" "Rue Carnot"
649 "RUELIN" "Rue de Lingendres"
478 "COLSTE" "Collège St.Exupéry"
612 "QUAMAR" "Quai des Marans"
601 "PONTFM" "Pont François Mitterand"
444 "CATSTV" "Câthédrale Saint Vincent"
635 "RUE8MA" "Rue du 8 Mai 45"
592 "PLAPOI" "Place Poissonière"
576 "PALOCH" "Parc d'Activités Loché"
638 "RUECAR" "Rue Carnot"
561 "MASNCF" "Mâcon Gare SNCF"
485 "CRMORE" "Cours Moreau"
611 "QUALAM" "Quai Lamartine"
596 "PLSTPI" "Place Saint Pierre"
620 "RGAMBE" "Rue Gambetta"
664 "RUESTR" "Rue de Strasbourg"
703 "VHUGO" "Rue Victor Hugo"
648 "RUELEV" "Rue de la Levée"
663 "RUESTA" "Rue Saint Antoine"
636 "RUEBAR" "Rue de la Barre"
550 "MACLAM" "Lycée Lamartine"
552 "MACOGR" "Mâcon Gare Routière"
539 "LOCBAS" "Loché Bas"
549 "MACEED" "Mâcon Esplanade Dumaine"
653 "RUEMAT" "Rue Mathieu"
652 "RUEMAR" "Rue des Marans"
685 "STANTO" "Rue Saint Antoine"
551 "MACO9C" "Mâcon Bd des 9 Clés"
575 "OFFTOU" "Office de Tourisme"
422 "ARRIVE" "Arrivée"
457 "CHAMPL" "Champlevert"
580 "PARLAM" "Parking Lamartine"
646 "RUELAG" "Rue Laguiche"
647 "RUELAM" "Rue Lamartine"
585 "PERMAI" "Peronne Mairie"
439 "BUSSGB" "Bussières Grand Bussières"