vitoria-gasteiz — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-08-01T10:58:50Z,
for the dataset file:///shared/vitoria-gasteiz_602f498f.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Tuvisa
Feed Email:
tuvisa@vitoria-gasteiz.org
Feed Language:
Spanish
Feed Start Date:
2026-07-29
Feed End Date:
2026-08-29

Files included


  1. agency.txt
  2. attributions.txt
  3. calendar_dates.txt
  4. fare_attributes.txt
  5. fare_rules.txt
  6. feed_info.txt
  7. routes.txt
  8. shapes.txt
  9. stop_times.txt
  10. stops.txt
  11. translations.txt
  12. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 31
  • Shapes: 108
  • Stops: 368
  • Trips: 9893

Specification Compliance report

12662 notices reported (0 errors, 12662 warnings, 0 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 996

equal_shape_distance_diff_coordinates_distance_below_threshold

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than 0 but less than 1.11m.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and small difference of coordinates (greater than 0 but less than 1.11 m distance) result in a warning.

You can see more about this notice here.

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

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"sha-ae843e7c" 29439 583.0 33 29438 583.0 32 0.2686689656284832
"sha-ae843e7c" 29453 1230.0 47 29452 1230.0 46 0.3335853034368008
"sha-ae843e7c" 29460 1410.0 54 29459 1410.0 53 0.44478040434662636
"sha-ae843e7c" 29477 1558.0 71 29476 1558.0 70 0.815241219795754
"sha-ae843e7c" 29479 1560.0 73 29478 1560.0 72 0.8152413517750431
"sha-ae843e7c" 29485 1565.0 79 29484 1565.0 78 0.8152414705563819
"sha-ae843e7c" 29489 1569.0 83 29488 1569.0 82 0.8152416157335466
"sha-ae843e7c" 29492 1572.0 86 29491 1572.0 85 0.8152414705563819
"sha-ae843e7c" 29495 1575.0 89 29494 1575.0 88 0.8152413517750431
"sha-ae843e7c" 29498 1578.0 92 29497 1578.0 91 0.815241219795754
"sha-ae843e7c" 29500 1580.0 94 29499 1580.0 93 0.8152410746185076
"sha-ae843e7c" 29532 1888.0 126 29531 1888.0 125 0.8152352674715919
"sha-ae843e7c" 29536 1892.0 130 29535 1892.0 129 0.8152352675040032
"sha-ae843e7c" 29552 2265.0 146 29551 2265.0 145 0.2445684421477884
"sha-ae843e7c" 29566 2790.0 160 29565 2790.0 159 0.2368630842610465
"sha-b9718002" 30597 0.0 2 30596 0.0 1 0.732556190027107
"sha-b9718002" 30676 841.0 81 30675 841.0 80 0.24456389268726034
"sha-b9718002" 30717 1712.0 122 30716 1712.0 121 0.24454603045124076
"sha-b9718002" 30839 3002.0 244 30838 3002.0 243 0.8151892180234876
"sha-b9718002" 30841 3004.0 246 30840 3004.0 245 0.8151890728030692
"sha-b9718002" 30860 3025.0 265 30859 3025.0 264 0.8151870929959913
"sha-b9718002" 30864 3029.0 269 30863 3029.0 268 0.8151868290169708
"sha-b9718002" 30871 3036.0 276 30870 3036.0 275 0.8151865782368095
"sha-b9718002" 30936 3619.0 341 30935 3619.0 340 0.8151585958873573
"sha-b9718002" 30940 3707.0 345 30939 3707.0 344 0.6032805887360995
"sha-b9718002" 31004 5283.0 409 31003 5283.0 408 0.22239020252697528
"sha-b9718002" 31041 6211.0 446 31040 6211.0 445 0.5015961766407421
"sha-b9718002" 31048 6425.0 453 31047 6425.0 452 0.34451266954871196
"sha-b9718002" 31060 6645.0 465 31059 6645.0 464 0.8151785135945745
"sha-b9718002" 31323 11731.0 728 31322 11731.0 727 0.815057599330369
"sha-d7bd3433" 37697 583.0 33 37696 583.0 32 0.2686689656284832
"sha-d7bd3433" 37711 1230.0 47 37710 1230.0 46 0.3335853034368008
"sha-d7bd3433" 37718 1410.0 54 37717 1410.0 53 0.44478040434662636
"sha-d7bd3433" 37735 1558.0 71 37734 1558.0 70 0.815241219795754
"sha-d7bd3433" 37737 1560.0 73 37736 1560.0 72 0.8152413517750431
"sha-d7bd3433" 37743 1565.0 79 37742 1565.0 78 0.8152414705563819
"sha-d7bd3433" 37747 1569.0 83 37746 1569.0 82 0.8152416157335466
"sha-d7bd3433" 37750 1572.0 86 37749 1572.0 85 0.8152414705563819
"sha-d7bd3433" 37753 1575.0 89 37752 1575.0 88 0.8152413517750431
"sha-d7bd3433" 37756 1578.0 92 37755 1578.0 91 0.815241219795754
"sha-d7bd3433" 37758 1580.0 94 37757 1580.0 93 0.8152410746185076
"sha-d7bd3433" 37790 1888.0 126 37789 1888.0 125 0.8152352674715919
"sha-d7bd3433" 37794 1892.0 130 37793 1892.0 129 0.8152352675040032
"sha-d7bd3433" 37810 2265.0 146 37809 2265.0 145 0.2445684421477884
"sha-d7bd3433" 37824 2790.0 160 37823 2790.0 159 0.2368630842610465
"sha-487c4804" 17827 1878.0 30 17826 1878.0 29 0.501692230937599
"sha-487c4804" 17941 3844.0 144 17940 3844.0 143 0.8151559559530523
"sha-487c4804" 17944 3847.0 147 17943 3847.0 146 0.8151556787627771
"sha-487c4804" 18032 5647.0 235 18031 5647.0 234 0.16300529131476643
"sha-487c4804" 18144 8453.0 347 18143 8453.0 346 0.8148962598769557
equal_shape_distance_same_coordinates WARNING 14

equal_shape_distance_same_coordinates

Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.txt.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and the same coordinates indicate a duplicative shape point.

You can see more about this notice here.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the faulty record. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the previous shape point. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`.
"sha-47712c10" 17788 0.0 2 17787 0.0 1
"sha-b0748358" 29703 2013.0 122 29702 2013.0 121
"sha-a0429d89" 28078 2013.0 122 28077 2013.0 121
"sha-32807877" 11633 2013.0 122 11632 2013.0 121
"sha-017cf1d6" 123 2013.0 122 122 2013.0 121
"sha-5fce2cc8" 20827 0.0 2 20826 0.0 1
"sha-bc093dd2" 31359 0.0 2 31358 0.0 1
"sha-f06acbcc" 40528 0.0 2 40527 0.0 1
"sha-c1550e03" 33018 2013.0 122 33017 2013.0 121
"sha-1c43267c" 6709 0.0 2 6708 0.0 1
"sha-688e9605" 21538 0.0 2 21537 0.0 1
"sha-82c15dbe" 23472 0.0 2 23471 0.0 1
"sha-ff2a18c2" 42194 0.0 2 42193 0.0 1
"sha-e3fbd11e" 39765 0.0 2 39764 0.0 1
fast_travel_between_consecutive_stops WARNING 20

fast_travel_between_consecutive_stops

A transit vehicle moves too fast between two consecutive stops.

The speed threshold depends on route type:

Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200

You can see more about this notice here.

tripCsvRowNumber (?) The row number of the problematic trip. tripId (?) `trip_id` of the problematic trip. routeId (?) `route_id` of the problematic trip. speedKph (?) Travel speed (km/h). distanceKm (?) Distance between stops (km). csvRowNumber1 (?) The row number of the first stop time. stopSequence1 (?) `stop_sequence` of the first stop. stopId1 (?) `stop_id` of the first stop. stopName1 (?) `stop_name` of the first stop. departureTime1 (?) `departure_time` of the first stop. csvRowNumber2 (?) The row number of the second stop time. stopSequence2 (?) `stop_sequence` of the second stop. stopId2 (?) `stop_id` of the second stop. stopName2 (?) `stop_name` of the second stop. arrivalTime2 (?) `arrival_time` of the second stop.
5897 "L5ESP21_008-FBLAB" "5" 290.9407608210505 0.40408439002923685 88694 1 "1205" "Ariñez" "19:05:00" 88695 2 "1206" "Paduleta / Mendigorritxu" "19:05:05"
5899 "L5ESP21_008-LABAG" "5" 290.9407608210505 0.40408439002923685 88694 1 "1205" "Ariñez" "19:05:00" 88695 2 "1206" "Paduleta / Mendigorritxu" "19:05:05"
5897 "L5ESP21_008-FBLAB" "5" 203.0232407695879 0.5639534465821886 88700 7 "1211" "Basaldea / Gerezpea" "19:06:50" 88701 8 "1212" "Basaldea / Zurripitieta" "19:07:00"
5899 "L5ESP21_008-LABAG" "5" 203.0232407695879 0.5639534465821886 88700 7 "1211" "Basaldea / Gerezpea" "19:06:50" 88701 8 "1212" "Basaldea / Zurripitieta" "19:07:00"
5929 "L5ESP2_002-FBLAB" "5" 290.9407608210505 0.40408439002923685 89855 1 "1205" "Ariñez" "09:05:00" 89856 2 "1206" "Paduleta / Mendigorritxu" "09:05:05"
5929 "L5ESP2_002-FBLAB" "5" 203.0232407695879 0.5639534465821886 89861 7 "1211" "Basaldea / Gerezpea" "09:06:50" 89862 8 "1212" "Basaldea / Zurripitieta" "09:07:00"
5916 "L5ESP22_006-FBLAB" "5" 290.9407608210505 0.40408439002923685 89351 1 "1205" "Ariñez" "18:05:00" 89352 2 "1206" "Paduleta / Mendigorritxu" "18:05:05"
5918 "L5ESP22_006-LABAG" "5" 290.9407608210505 0.40408439002923685 89351 1 "1205" "Ariñez" "18:05:00" 89352 2 "1206" "Paduleta / Mendigorritxu" "18:05:05"
5916 "L5ESP22_006-FBLAB" "5" 203.0232407695879 0.5639534465821886 89357 7 "1211" "Basaldea / Gerezpea" "18:06:50" 89358 8 "1212" "Basaldea / Zurripitieta" "18:07:00"
5918 "L5ESP22_006-LABAG" "5" 203.0232407695879 0.5639534465821886 89357 7 "1211" "Basaldea / Gerezpea" "18:06:50" 89358 8 "1212" "Basaldea / Zurripitieta" "18:07:00"
5930 "L5ESP2_002-LABAG" "5" 290.9407608210505 0.40408439002923685 89897 1 "1205" "Ariñez" "07:05:00" 89898 2 "1206" "Paduleta / Mendigorritxu" "07:05:05"
5930 "L5ESP2_002-LABAG" "5" 203.0232407695879 0.5639534465821886 89903 7 "1211" "Basaldea / Gerezpea" "07:06:50" 89904 8 "1212" "Basaldea / Zurripitieta" "07:07:00"
5906 "L5ESP22_002-FBLAB" "5" 290.9407608210505 0.40408439002923685 89007 1 "1205" "Ariñez" "13:35:00" 89008 2 "1206" "Paduleta / Mendigorritxu" "13:35:05"
5908 "L5ESP22_002-LABAG" "5" 290.9407608210505 0.40408439002923685 89007 1 "1205" "Ariñez" "13:35:00" 89008 2 "1206" "Paduleta / Mendigorritxu" "13:35:05"
5906 "L5ESP22_002-FBLAB" "5" 203.0232407695879 0.5639534465821886 89013 7 "1211" "Basaldea / Gerezpea" "13:36:50" 89014 8 "1212" "Basaldea / Zurripitieta" "13:37:00"
5908 "L5ESP22_002-LABAG" "5" 203.0232407695879 0.5639534465821886 89013 7 "1211" "Basaldea / Gerezpea" "13:36:50" 89014 8 "1212" "Basaldea / Zurripitieta" "13:37:00"
5879 "L5ESP21_002-FBLAB" "5" 290.9407608210505 0.40408439002923685 88037 1 "1205" "Ariñez" "14:05:00" 88038 2 "1206" "Paduleta / Mendigorritxu" "14:05:05"
5881 "L5ESP21_002-LABAG" "5" 290.9407608210505 0.40408439002923685 88037 1 "1205" "Ariñez" "14:05:00" 88038 2 "1206" "Paduleta / Mendigorritxu" "14:05:05"
5879 "L5ESP21_002-FBLAB" "5" 203.0232407695879 0.5639534465821886 88043 7 "1211" "Basaldea / Gerezpea" "14:06:50" 88044 8 "1212" "Basaldea / Zurripitieta" "14:07:00"
5881 "L5ESP21_002-LABAG" "5" 203.0232407695879 0.5639534465821886 88043 7 "1211" "Basaldea / Gerezpea" "14:06:50" 88044 8 "1212" "Basaldea / Zurripitieta" "14:07:00"
feed_expiration_date30_days WARNING 1

feed_expiration_date30_days

Dataset should cover at least the next 30 days of service.

At any time, the GTFS dataset should cover at least the next 30 days of service, and ideally for as long as the operator is confident that the schedule will continue to be operated.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. currentDate (?) Current date (YYYYMMDD format). feedEndDate (?) Feed end date (YYYYMMDD format). suggestedExpirationDate (?) Suggested expiration date (YYYYMMDD format).
2 "20260801" "20260829" "20260831"
mixed_case_recommended_field WARNING 11631

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.

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

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"trips.txt" "trip_short_name" "1_0_20260730T073856_78da1950" 2
"trips.txt" "trip_short_name" "1_0_20260730T121816_8cc95861" 3
"trips.txt" "trip_short_name" "1_0_20260730T132046_3d4cee6e" 4
"trips.txt" "trip_short_name" "1_0_20260730T140124_a93d9ad7" 6
"trips.txt" "trip_headsign" "LAKUA / MARITURRI" 7
"trips.txt" "trip_headsign" "LAKUA / MARITURRI" 8
"trips.txt" "trip_short_name" "4_0_20260730T203032_a9813ada" 8
"trips.txt" "trip_headsign" "ARKAIATE / ASTEGIETA" 9
"trips.txt" "trip_short_name" "5_0_4_20260730T100234_2322bca2" 9
"trips.txt" "trip_headsign" "ELEJALDE / ARKAIATE" 10
"trips.txt" "trip_short_name" "5_1_2_20260729T091210_47ed657f" 10
"trips.txt" "trip_headsign" "ARIÑEZ / ARKAIATE" 11
"trips.txt" "trip_short_name" "5_1_3_20260729T142003_fe5aaff1" 11
"trips.txt" "trip_headsign" "ARIÑEZ / ARKAIATE" 12
"trips.txt" "trip_short_name" "5_1_3_20260729T142112_9167dcd4" 12
"trips.txt" "trip_headsign" "PAZ / BORINBIZKARRA" 13
"trips.txt" "trip_short_name" "7_1_20260730T043113_0573ce9f" 13
"trips.txt" "trip_headsign" "BEI B / BOULEVARD" 15
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 16
"trips.txt" "trip_short_name" "E1CEM_001-CM" 16
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 17
"trips.txt" "trip_short_name" "E1CEM_002-CM" 17
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 18
"trips.txt" "trip_short_name" "E1CEM_003-CS" 18
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 19
"trips.txt" "trip_short_name" "E1CEM_004-CS" 19
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 20
"trips.txt" "trip_short_name" "E1CEM_005-CS" 20
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 21
"trips.txt" "trip_short_name" "E1CEM_006-CS" 21
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 22
"trips.txt" "trip_short_name" "E1CEM_007-CS" 22
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 23
"trips.txt" "trip_short_name" "E1CEM_008-CV" 23
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 24
"trips.txt" "trip_short_name" "E1CEM_009-CV" 24
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 25
"trips.txt" "trip_short_name" "E1CEM_010-CV" 25
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 26
"trips.txt" "trip_short_name" "E1CEM_011-CV" 26
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 27
"trips.txt" "trip_short_name" "E1CEM_012-CV" 27
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 28
"trips.txt" "trip_short_name" "E1CEM_013-CV" 28
"trips.txt" "trip_headsign" "CEMENTERIO / EL SALVADOR" 29
"trips.txt" "trip_short_name" "E1CEM_014-CV" 29
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 30
"trips.txt" "trip_short_name" "E1CEM_015-CV" 30
"trips.txt" "trip_headsign" "EL SALVADOR / CEMENTERIO" 31
"trips.txt" "trip_short_name" "E1CEM_016-CV" 31