GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2025-12-12T21:59:02Z,
for the dataset file:///shared/carrismetropolitana.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Busmaps.com
Publisher URL:
https://busmaps.com
Feed Email:
alex@busmaps.com
Feed Language:
Portuguese
Feed Start Date:
2025-11-29
Feed End Date:
2026-02-01

Files included


  1. agency.txt
  2. calendar.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. trips.txt

Counts


  • Agencies: 4
  • Blocks: 0
  • Routes: 835
  • Shapes: 1602
  • Stops: 12159
  • Trips: 37705

Specification Compliance report

278 notices reported (189 errors, 89 warnings, 0 infos)

Notice Code Severity Total
duplicate_key ERROR 189

duplicate_key

Duplicated entity.

The values of the given key and rows are duplicates.

You can see more about this notice here.

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

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.
"fare_rules.txt" 6 7 "fare_id,route_id" "103019-43-T1-BORDO,103019-3026_0"
"fare_rules.txt" 25 26 "fare_id,route_id" "103019-43-T1-PREPAGO,103019-3026_0"
"fare_rules.txt" 63 64 "fare_id,route_id" "103019-43-T2-BORDO,103019-3040_0"
"fare_rules.txt" 71 72 "fare_id,route_id" "103019-43-T2-BORDO,103019-3111_0"
"fare_rules.txt" 107 108 "fare_id,route_id" "103019-43-T2-BORDO,103019-3509_0"
"fare_rules.txt" 126 127 "fare_id,route_id" "103019-43-T2-BORDO,103019-3526_0"
"fare_rules.txt" 138 139 "fare_id,route_id" "103019-43-T2-BORDO,103019-3547_0"
"fare_rules.txt" 187 188 "fare_id,route_id" "103019-43-T2-PREPAGO,103019-3040_0"
"fare_rules.txt" 195 196 "fare_id,route_id" "103019-43-T2-PREPAGO,103019-3111_0"
"fare_rules.txt" 231 232 "fare_id,route_id" "103019-43-T2-PREPAGO,103019-3509_0"
"fare_rules.txt" 250 251 "fare_id,route_id" "103019-43-T2-PREPAGO,103019-3526_0"
"fare_rules.txt" 262 263 "fare_id,route_id" "103019-43-T2-PREPAGO,103019-3547_0"
"fare_rules.txt" 310 311 "fare_id,route_id" "103019-42-T1-BORDO,103019-2142_0"
"fare_rules.txt" 342 343 "fare_id,route_id" "103019-42-T1-PREPAGO,103019-2142_0"
"fare_rules.txt" 367 368 "fare_id,route_id" "103019-42-T2-BORDO,103019-2011_0"
"fare_rules.txt" 386 387 "fare_id,route_id" "103019-42-T2-BORDO,103019-2107_0"
"fare_rules.txt" 390 391 "fare_id,route_id" "103019-42-T2-BORDO,103019-2110_0"
"fare_rules.txt" 390 392 "fare_id,route_id" "103019-42-T2-BORDO,103019-2110_0"
"fare_rules.txt" 400 401 "fare_id,route_id" "103019-42-T2-BORDO,103019-2117_0"
"fare_rules.txt" 403 405 "fare_id,route_id" "103019-42-T2-BORDO,103019-2118_0"
"fare_rules.txt" 404 407 "fare_id,route_id" "103019-42-T2-BORDO,103019-2118_1"
"fare_rules.txt" 417 418 "fare_id,route_id" "103019-42-T2-BORDO,103019-2131_0"
"fare_rules.txt" 421 422 "fare_id,route_id" "103019-42-T2-BORDO,103019-2133_0"
"fare_rules.txt" 421 424 "fare_id,route_id" "103019-42-T2-BORDO,103019-2133_0"
"fare_rules.txt" 421 425 "fare_id,route_id" "103019-42-T2-BORDO,103019-2133_0"
"fare_rules.txt" 438 439 "fare_id,route_id" "103019-42-T2-BORDO,103019-2144_2"
"fare_rules.txt" 443 444 "fare_id,route_id" "103019-42-T2-BORDO,103019-2147_0"
"fare_rules.txt" 459 460 "fare_id,route_id" "103019-42-T2-BORDO,103019-2213_0"
"fare_rules.txt" 466 467 "fare_id,route_id" "103019-42-T2-BORDO,103019-2223_0"
"fare_rules.txt" 472 473 "fare_id,route_id" "103019-42-T2-BORDO,103019-2306_0"
"fare_rules.txt" 518 520 "fare_id,route_id" "103019-42-T2-BORDO,103019-2626_0"
"fare_rules.txt" 525 526 "fare_id,route_id" "103019-42-T2-BORDO,103019-2706_0"
"fare_rules.txt" 531 532 "fare_id,route_id" "103019-42-T2-BORDO,103019-2713_0"
"fare_rules.txt" 531 533 "fare_id,route_id" "103019-42-T2-BORDO,103019-2713_0"
"fare_rules.txt" 531 534 "fare_id,route_id" "103019-42-T2-BORDO,103019-2713_0"
"fare_rules.txt" 551 552 "fare_id,route_id" "103019-42-T2-BORDO,103019-2731_0"
"fare_rules.txt" 556 557 "fare_id,route_id" "103019-42-T2-BORDO,103019-2736_0"
"fare_rules.txt" 571 572 "fare_id,route_id" "103019-42-T2-BORDO,103019-2756_0"
"fare_rules.txt" 589 590 "fare_id,route_id" "103019-42-T2-BORDO,103019-2781_0"
"fare_rules.txt" 600 601 "fare_id,route_id" "103019-42-T2-BORDO,103019-2796_0"
"fare_rules.txt" 602 603 "fare_id,route_id" "103019-42-T2-BORDO,103019-2797_0"
"fare_rules.txt" 602 604 "fare_id,route_id" "103019-42-T2-BORDO,103019-2797_0"
"fare_rules.txt" 617 618 "fare_id,route_id" "103019-42-T2-BORDO,103019-2833_0"
"fare_rules.txt" 617 619 "fare_id,route_id" "103019-42-T2-BORDO,103019-2833_0"
"fare_rules.txt" 620 621 "fare_id,route_id" "103019-42-T2-BORDO,103019-2841_0"
"fare_rules.txt" 623 624 "fare_id,route_id" "103019-42-T2-BORDO,103019-2901_0"
"fare_rules.txt" 630 632 "fare_id,route_id" "103019-42-T2-BORDO,103019-2910_0"
"fare_rules.txt" 648 649 "fare_id,route_id" "103019-42-T2-PREPAGO,103019-2011_0"
"fare_rules.txt" 667 668 "fare_id,route_id" "103019-42-T2-PREPAGO,103019-2107_0"
"fare_rules.txt" 671 672 "fare_id,route_id" "103019-42-T2-PREPAGO,103019-2110_0"
duplicate_route_name WARNING 1

duplicate_route_name

Two distinct routes have either the same route_short_name, the same route_long_name, or the same combination of route_short_name and route_long_name.

All routes of the same route_type with the same agency_id should have unique combinations of route_short_name and route_long_name.

Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route.

Example of bad data:

route_id route_short_name route_long_name
route1 U1 Southern
route2 U1 Southern

You can see more about this notice here.

csvRowNumber1 (?) The row number of the first occurrence. routeId1 (?) The id of the the first occurrence. csvRowNumber2 (?) The row number of the other occurrence. routeId2 (?) The id of the the other occurrence. routeShortName (?) Common `routes.route_short_name`. routeLongName (?) Common `routes.route_long_name`. routeTypeValue (?) Common `routes.route_type`. agencyId (?) Common `routes.agency_id`.
265 "103019-2106_0" 266 "103019-2106_1" "2106" "Bocal - Mafra (Parque Desportivo)" 3 "103019-42"
mixed_case_recommended_field WARNING 15

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" "EN 10 X EN 251" 5008
"stops.txt" "stop_name" "EN 10 X EN 251" 5009
"stops.txt" "stop_name" "EN 10 (KM 14800)" 7268
"stops.txt" "stop_name" "EN 10 (KM 14800)" 7269
"stops.txt" "stop_name" "QTA RIO (EN 379)" 8019
"stops.txt" "stop_name" "QTA RIO (EN 379)" 8020
"trips.txt" "trip_headsign" "lisboa" 13911
"trips.txt" "trip_headsign" "lisboa" 13912
"trips.txt" "trip_headsign" "lisboa" 13913
"trips.txt" "trip_headsign" "lisboa" 13914
"trips.txt" "trip_headsign" "lisboa" 13915
"trips.txt" "trip_headsign" "lisboa" 13916
"trips.txt" "trip_headsign" "lisboa" 13917
"trips.txt" "trip_headsign" "lisboa" 13918
"trips.txt" "trip_headsign" "lisboa" 13919
stop_too_far_from_shape WARNING 70

stop_too_far_from_shape

Stop too far from trip shape.

Per GTFS Best Practices, route alignments (in shapes.txt) should be within 100 meters of stop locations which a trip serves. This potentially indicates a problem with the location of the stop or the path of the shape.

You can see more about this notice here.

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

tripCsvRowNumber (?) The row number of the faulty record from `trips.txt`. shapeId (?) The id of the shape that is referred to. tripId (?) The id of the trip that is referred to. stopTimeCsvRowNumber (?) The row number of the faulty record from `stop_times.txt`. stopId (?) The id of the stop that is referred to. stopName (?) The name of the stop that is referred to. match (?) Latitude and longitude pair of the location. geoDistanceToShape (?) Distance from stop to shape.
4122 "103019-[SYVGO]3221_0_2" "103019-[SYVGO]3221_0_2_0730_0759_0_ESC_DU" 118718 "103019-150241" "CH Cotovia (R CH Cotovia) Parq Campismo" [38.4887,-9.09667] 145.20025314601943
4112 "103019-[SYVGO]3221_0_1" "103019-[SYVGO]3221_0_1_0730_0759_0_ESC_DU" 118466 "103019-150242" "CH Cotovia (R CH Cotovia) Parq Campismo" [38.48871299999999,-9.096684] 112.17348848664676
32729 "103019-[VURPT]shp_4451_0_1" "103019-[VURPT]4451_0_1|1100|0800" 1143545 "103019-160502" "Mitrena Lisnave (N10-4)" [38.48310000000001,-8.7931] 112.35812009717554
15042 "103019-[2ES3M]2793_0_1" "103019-[2ES3M]2793_0_1|1|1|0715" 508651 "103019-060269" "Rua C (Aeroporto)" [38.77434665306893,-9.123269010215663] 234.2811909300958
15042 "103019-[2ES3M]2793_0_1" "103019-[2ES3M]2793_0_1|1|1|0715" 508652 "103019-060267" "Externato Champagnat" [38.777167324052186,-9.122949093335373] 330.56642614639946
15042 "103019-[2ES3M]2793_0_1" "103019-[2ES3M]2793_0_1|1|1|0715" 508653 "103019-060297" "Gasolineiras" [38.78173,-9.12412] 276.7551941187095
15060 "103019-[2ES3M]2793_0_2" "103019-[2ES3M]2793_0_2|1|1|0600" 509563 "103019-060263" "Rot. Encarnação" [38.78157902294215,-9.123083166093] 270.7422918307736
15060 "103019-[2ES3M]2793_0_2" "103019-[2ES3M]2793_0_2|1|1|0600" 509564 "103019-060265" "Gasolineiras" [38.78023793378758,-9.123527694845675] 169.37219665700712
15060 "103019-[2ES3M]2793_0_2" "103019-[2ES3M]2793_0_2|1|1|0600" 509565 "103019-060268" "Externato Champagnat" [38.777253648405946,-9.123587971900776] 287.0458503234566
15060 "103019-[2ES3M]2793_0_2" "103019-[2ES3M]2793_0_2|1|1|0600" 509566 "103019-060270" "Rua C (Aeroporto)" [38.77427284018075,-9.123809938540754] 201.63547408623992
9136 "103019-[2ES3M]2306_0_2" "103019-[2ES3M]2306_0_2|1|1|0600" 283043 "103019-180359" "R Alves Redol (Museu)" [38.95499,-8.98689] 158.03578029618845
9136 "103019-[2ES3M]2306_0_2" "103019-[2ES3M]2306_0_2|1|1|0600" 283044 "103019-180081" "R Luís De Camões (Correios)" [38.95328,-8.98814] 144.67534396804794
9136 "103019-[2ES3M]2306_0_2" "103019-[2ES3M]2306_0_2|1|1|0600" 283071 "103019-185119" "Avenida Infante Dom Pedro 47" [38.8915193755185,-9.036077681187326] 106.67960465286355
9108 "103019-[2ES3M]2306_0_1" "103019-[2ES3M]2306_0_1|1|1|0645" 282203 "103019-180043" "Alverca (Escola Secundária)" [38.89205,-9.035160000000001] 103.72277349061058
9108 "103019-[2ES3M]2306_0_1" "103019-[2ES3M]2306_0_1|1|1|0645" 282209 "103019-180105" "R Dr Miguel Bombarda 41 (Junta)" [38.898881596528845,-9.037525683217641] 138.80658543168784
9108 "103019-[2ES3M]2306_0_1" "103019-[2ES3M]2306_0_1|1|1|0645" 282230 "103019-180077" "R 1 Dezembro 59" [38.95291546995442,-8.989846883658052] 150.1716365193517
33705 "103019-[VURPT]shp_4611_0_1" "103019-[VURPT]4611_0_1|1100|0715" 1188549 "103019-130093" "Penalva (Estação)" [38.59069,-8.99509] 131.13399153616385
31561 "103019-[VURPT]shp_4313_0_1" "103019-[VURPT]4313_0_1|1100|0745" 1114295 "103019-130333" "QTA DO Anjo (RUA DOS Lusiadas)" [38.56644645490983,-8.943605017025215] 147.2390528256141
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356716 "103019-081145" "Av Augusto Pereira Machado 18" [38.942581,-9.341049] 575.1775854385454
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356717 "103019-080863" "Av Dr Francisco Sá Carneiro 27" [38.942581,-9.341049] 520.8806165584708
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356731 "103019-080448" "R 25 De Abril 13 (Igreja Nova)" [38.91606000000001,-9.32283] 343.1399955774248
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356732 "103019-081056" "En 9 (X) Cabeço do Cartaxo" [38.9024,-9.30663] 1832.3643883651637
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356733 "103019-081058" "Av Silvério Galrão Nogueira 52" [38.893637,-9.305143] 1963.3484391241514
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356734 "103019-081114" "Estr Velha 36" [38.893637,-9.305143] 2166.6966889462024
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356735 "103019-172565" "En 9 215" [38.893637,-9.305143] 2771.5841655443196
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356736 "103019-171964" "Av 20 Fevereiro (X) N9" [38.893637,-9.305143] 2741.8754871811193
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356737 "103019-171962" "Av 20 de Fevereiro 199" [38.893637,-9.305143] 2435.6724607748138
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356738 "103019-171959" "Rebanque (R Festa 18)" [38.893637,-9.305143] 2282.561406322057
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356739 "103019-171961" "Av 20 de Fevereiro 204" [38.893637,-9.305143] 2431.895203472663
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356740 "103019-171963" "EN9 (X) Av 20 de Fevereiro" [38.893637,-9.305143] 2782.356504526995
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356741 "103019-171965" "R Cruz das Moças 11" [38.88641499999999,-9.297744] 3114.2344797512287
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356742 "103019-171967" "Montelavar (Cemitério)" [38.88641499999999,-9.297744] 3405.34733344392
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356743 "103019-172623" "R Maestro Álvaro Sousa 19" [38.88641499999999,-9.297744] 3750.71033076248
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356744 "103019-171267" "Montelavar (Largo)" [38.88641499999999,-9.297744] 4165.458268916922
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356745 "103019-171269" "Av 25 Abril (X) R da Eirinha" [38.88641499999999,-9.297744] 4036.1087383449235
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356746 "103019-171271" "Av Liberdade 70" [38.88641499999999,-9.297744] 4184.375122288394
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356747 "103019-171273" "Av 19 Maio 43" [38.88641499999999,-9.297744] 4402.25152397097
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356748 "103019-171275" "Av Aviação Portuguesa 16" [38.88641499999999,-9.297744] 5025.969172145279
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356749 "103019-171277" "Av Aviação Portuguesa 38" [38.88641499999999,-9.297744] 5283.826620624718
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356750 "103019-171279" "Av Aviação Portuguesa 51" [38.88641499999999,-9.297744] 5678.341093606257
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356751 "103019-171281" "EN 9 (Cruz Museu do Ar)" [38.88641499999999,-9.297744] 6227.757508592378
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356752 "103019-171283" "EN 9 123" [38.88641499999999,-9.297744] 7185.2465376666905
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356753 "103019-172523" "N9 (Supermercado)" [38.88641499999999,-9.297744] 7539.407264587007
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356754 "103019-171287" "En 9 Km 176" [38.88641499999999,-9.297744] 7872.242670938406
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356755 "103019-171289" "N9 (X) Av António Correia de Sá" [38.88641499999999,-9.297744] 8362.005239956059
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356756 "103019-171291" "Estr Principal 1" [38.88641499999999,-9.297744] 8469.958036879703
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356757 "103019-171293" "Estr Principal 8" [38.88641499999999,-9.297744] 8807.789551920248
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356758 "103019-171295" "Estr Principal 16" [38.88641499999999,-9.297744] 9019.709050311661
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356759 "103019-171297" "Estr Principal 99" [38.88641499999999,-9.297744] 9518.769251159176
11100 "103019-[2ES3M]2626_2_1" "103019-[2ES3M]2626_2_1|110|1|1843" 356760 "103019-171533" "Estr de Mafra (Supermercado)" [38.88641499999999,-9.297744] 9900.539282716705
stops_match_shape_out_of_order WARNING 3

stops_match_shape_out_of_order

Two stop entries are different than their arrival-departure order defined by shapes.txt.

This could indicate a problem with the location of the stops, the path of the shape, or the sequence of the stops for their trip.

You can see more about this notice here.

tripCsvRowNumber (?) The row number of the faulty record from `trips.txt`. shapeId (?) The id of the shape that is referred to. tripId (?) The id of the trip that is referred to. stopTimeCsvRowNumber1 (?) The row number of the first faulty record from `stop_times.txt`. stopId1 (?) The id of the first stop that is referred to. stopName1 (?) The name of the first stop that is referred to. match1 (?) Latitude and longitude pair of the first matching location. stopTimeCsvRowNumber2 (?) The row number of the second faulty record from `stop_times.txt`. stopId2 (?) The id of the second stop that is referred to. stopName2 (?) The name of the second stop that is referred to. match2 (?) Latitude and longitude pair of the second matching location.
8632 "103019-[2ES3M]2218_0_3" "103019-[2ES3M]2218_0_3|1|1|0700" 268949 "103019-110347" "Av Miguel Torga 19" [38.78795,-9.19049] 268948 "103019-110345" "Av Miguel Torga (Pav Multiusos)" [38.78957639032886,-9.186839664481475]
12376 "103019-[2ES3M]2719_0_1" "103019-[2ES3M]2719_0_2|1|1|0745" 393289 "103019-060227" "Cç. Carriche" [38.778101773931986,-9.164562204804216] 393288 "103019-060303" "Campo Grande (Metro) P2" [38.75987135545427,-9.160304568130421]
36262 "103019-[2ES3M]2722_0_1" "103019-[11J8J]2722_0_1|1|2|0550" 1270844 "103019-071219" "R Jarros (B Petrogal)" [38.800209,-9.101378999999998] 1270843 "103019-071435" "R Salgueiro Maia (B Petrogal)" [38.803826,-9.101799999999999]