GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2025-12-13T10:09:31Z,
for the dataset file:///shared/autobuses-M89-004.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


  • Consorcio Regional de Transportes de Madrid

Feed Info


Publisher Name:
Consorcio Regional de Transportes de Madrid
Publisher URL:
https://www.crtm.es
Feed Email:
N/A
Feed Language:
Spanish
Feed Start Date:
N/A
Feed End Date:
N/A

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. frequencies.txt
  8. routes.txt
  9. shapes.txt
  10. stop_times.txt
  11. stops.txt
  12. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 12
  • Shapes: 33
  • Stops: 242
  • Trips: 3001

Specification Compliance report

5143 notices reported (9 errors, 5134 warnings, 0 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates ERROR 9

equal_shape_distance_diff_coordinates

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 the 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 different coordinates indicate an error.

You can see more about this notice here.

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.
"9__2__022__1_-_IT_1" 22385 3.283863433395 2000001 22384 3.283863433395 1000022 188.9946122755894
"8__574____1_-_IT_1" 16347 336.004003739745 13000001 16346 336.004003739745 12000068 243.46547470288021
"8__575____1_-_IT_1" 17951 3.283863433395 2000001 17950 3.283863433395 1000022 193.3346553087866
"9__3__022__1_-_IT_1" 23266 3.283863433395 2000001 23265 3.283863433395 1000022 188.9946122755894
"8_N_905____1_pm_IT_2" 2364 941.92088296246 16000001 2363 941.92088296246 15000078 1769.1229146897851
"8__574____1_d._IT_2" 15717 335.679901175932 13000001 15716 335.679901175932 12000068 243.46547470288021
"8__571____1_-_IT_1" 8206 365.594977918864 15000001 8205 365.594977918864 14000076 1769.1229146897851
"8_N_905____1_-_IT_1" 1099 936.546279318387 16000001 1098 936.546279318387 15000078 1769.1229146897851
"8_N_905____1_u._IT_2" 3629 941.567457532621 16000001 3628 941.567457532621 15000077 1769.1229146897851
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 31

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.

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.
"9__2__022__2_-_IT_1" 23204 156.643977254413 19000001 23203 156.643977254413 18000053 0.09420046378625892
"9__2__022__1_-_IT_1" 22444 37.049241676759 4000001 22443 37.049241676759 3000047 0.20245781810800606
"8__573____2_-_IT_1" 13052 5.397405141676 2000001 13051 5.397405141676 1000020 0.004165892426821664
"8__573____2_-_IT_1" 13118 19.800030317762 8000001 13117 19.800030317762 7000006 3.0050895574660274E-4
"8__573____2_-_IT_1" 13230 42.446787131058 13000001 13229 42.446787131058 12000021 0.09420046378625892
"8__574____2_-_IT_1" 17107 5.397405394942 2000001 17106 5.397405394942 1000020 0.004421299420692924
"8__574____2_-_IT_1" 17266 42.639297782082 14000001 17265 42.639297782082 13000006 3.0050895574660274E-4
"8__574____2_d._IT_2" 16561 5.397405394942 2000001 16560 5.397405394942 1000020 0.004421299420692924
"8__574____2_d._IT_2" 16816 92.828309290637 12000001 16815 92.828309290637 11000068 0.5915427842492793
"9__3__022__1_-_IT_1" 23278 4.877311801805 3000001 23277 4.877311801805 2000012 0.001203541958422514
"8_N_905____2_pm_IT_2" 6252 5.397405141676 2000001 6251 5.397405141676 1000020 0.004165892426821664
"8_N_905____2_pm_IT_2" 6319 20.123505790389 8000001 6318 20.123505790389 7000006 3.0050895574660274E-4
"8_N_905____2_pm_IT_2" 6431 42.770262603685 13000001 6430 42.770262603685 12000021 0.09420046378625892
"8_N_905____2_pm_IT_2" 7535 978.16603330124 38000001 7534 978.16603330124 37000026 0.4425663099872048
"8__573____2_pm_IT_2" 14155 5.397405141676 2000001 14154 5.397405141676 1000020 0.004165892426821664
"8__573____2_pm_IT_2" 14222 20.123505790389 8000001 14221 20.123505790389 7000006 3.0050895574660274E-4
"8__573____2_pm_IT_2" 14334 42.770262603685 13000001 14333 42.770262603685 12000021 0.09420046378625892
"8__575____2_-_IT_1" 19125 432.004879196527 9000001 19124 432.004879196527 8000063 0.002950152809554776
"8__575____2_-_IT_1" 19396 529.676015793284 20000001 19395 529.676015793284 19000024 0.10315395156927913
"8__574____1_d._IT_2" 15348 52.007562171522 4000001 15347 52.007562171522 3000062 0.9074419226022971
"9__4__022__2_-_IT_1" 24649 55.218919559171 4000001 24648 55.218919559171 3000070 0.004525314483185835
"9__4__022__2_-_IT_1" 24809 93.726053851074 10000001 24808 93.726053851074 9000018 0.13061495415442112
"8__571____2_-_IT_1" 9113 21.29430090889 9000001 9112 21.29430090889 8000006 3.0050895574660274E-4
"8_N_905____2_-_IT_1" 4929 5.397405141676 2000001 4928 5.397405141676 1000020 0.004165892426821664
"8_N_905____2_-_IT_1" 4996 20.123505790389 8000001 4995 20.123505790389 7000006 3.0050895574660274E-4
"8_N_905____2_-_IT_1" 5108 42.770262603685 13000001 5107 42.770262603685 12000021 0.09420046378625892
"9__1__022__2_-_IT_1" 22249 115.745645756254 26000001 22248 115.745645756254 25000018 0.13061495415442112
"9__1__022__2_-_IT_1" 22308 127.731334789493 28000001 22307 127.731334789493 27000023 0.09420046378625892
"8_N_905____1_u._IT_2" 4106 1053.12886203933 39000001 4105 1053.12886203933 38000038 0.0493992436663568
"8_N_905____1_u._IT_2" 4311 1090.32366674414 48000001 4310 1090.32366674414 47000035 0.1031327281235137
"8_N_905____1_u._IT_2" 4321 1092.05442343351 49000001 4320 1092.05442343351 48000010 0.15914535847909567
equal_shape_distance_same_coordinates WARNING 596

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.

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

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`.
"8__865____1_-_IT_1" 20585 2968.19148495309 2000001 20584 2968.19148495309 1000397
"8__865____1_-_IT_1" 20595 2968.85936159777 3000001 20594 2968.85936159777 2000010
"8__865____1_-_IT_1" 20614 2974.80284749512 4000001 20613 2974.80284749512 3000019
"8__865____1_-_IT_1" 20627 2976.80946017967 5000001 20626 2976.80946017967 4000013
"8__865____2_-_IT_1" 20666 4.856814806888 2000001 20665 4.856814806888 1000020
"8__865____2_-_IT_1" 20683 7.293717669898 3000001 20682 7.293717669898 2000017
"8__865____2_-_IT_1" 20702 12.23912642029 4000001 20701 12.23912642029 3000019
"9__2__022__2_-_IT_1" 22631 0.700572233014 2000001 22630 0.700572233014 1000006
"9__2__022__2_-_IT_1" 22680 3.410934319551 3000001 22679 3.410934319551 2000049
"9__2__022__2_-_IT_1" 22682 3.696124107093 4000001 22681 3.696124107093 3000002
"9__2__022__2_-_IT_1" 22694 5.033213084462 5000001 22693 5.033213084462 4000012
"9__2__022__2_-_IT_1" 22703 6.283595534837 6000001 22702 6.283595534837 5000009
"9__2__022__2_-_IT_1" 22721 10.161461165205 7000001 22720 10.161461165205 6000018
"9__2__022__2_-_IT_1" 22789 26.106700757909 8000001 22788 26.106700757909 7000068
"9__2__022__2_-_IT_1" 22833 34.598396389353 9000001 22832 34.598396389353 8000044
"9__2__022__2_-_IT_1" 22846 37.323282762973 10000001 22845 37.323282762973 9000013
"9__2__022__2_-_IT_1" 22857 38.353130664088 11000001 22856 38.353130664088 10000011
"9__2__022__2_-_IT_1" 22970 75.6637128842521 12000001 22969 75.6637128842521 11000113
"9__2__022__2_-_IT_1" 23029 83.7448814193441 13000001 23028 83.7448814193441 12000059
"9__2__022__2_-_IT_1" 23035 85.3732118280451 14000001 23034 85.3732118280451 13000006
"9__2__022__2_-_IT_1" 23086 90.8322202851261 15000001 23085 90.8322202851261 14000051
"9__2__022__2_-_IT_1" 23091 92.2557982932721 16000001 23090 92.2557982932721 15000005
"9__2__022__2_-_IT_1" 23143 115.843546818969 17000001 23142 115.843546818969 16000052
"9__2__022__2_-_IT_1" 23151 117.470191542281 18000001 23150 117.470191542281 17000008
"9__2__022__2_-_IT_1" 23214 158.005701612618 20000001 23213 158.005701612618 19000010
"9__2__022__2_-_IT_1" 23239 160.904492179036 21000001 23238 160.904492179036 20000025
"9__2__022__1_-_IT_1" 22397 4.877311801805 3000001 22396 4.877311801805 2000012
"9__2__022__1_-_IT_1" 22449 38.279787817444 5000001 22448 38.279787817444 4000005
"9__2__022__1_-_IT_1" 22555 86.90479973528 6000001 22554 86.90479973528 5000106
"9__2__022__1_-_IT_1" 22579 89.127722468806 7000001 22578 89.127722468806 6000024
"8__573____2_-_IT_1" 13067 9.672137026468 3000001 13066 9.672137026468 2000015
"8__573____2_-_IT_1" 13078 11.259527757306 4000001 13077 11.259527757306 3000011
"8__573____2_-_IT_1" 13080 11.730267380967 5000001 13079 11.730267380967 4000002
"8__573____2_-_IT_1" 13101 15.740197367798 6000001 13100 15.740197367798 5000021
"8__573____2_-_IT_1" 13112 18.67597168051 7000001 13111 18.67597168051 6000011
"8__573____2_-_IT_1" 13126 20.622834988558 9000001 13125 20.622834988558 8000008
"8__573____2_-_IT_1" 13172 35.263312245254 10000001 13171 35.263312245254 9000046
"8__573____2_-_IT_1" 13175 35.943084633766 11000001 13174 35.943084633766 10000003
"8__573____2_-_IT_1" 13209 39.655687672683 12000001 13208 39.655687672683 11000034
"8__573____2_-_IT_1" 13239 43.802818675147 14000001 13238 43.802818675147 13000009
"8__573____2_-_IT_1" 13356 136.882734026008 15000001 13355 136.882734026008 14000117
"8__573____2_-_IT_1" 13433 226.486535292237 16000001 13432 226.486535292237 15000077
"8__573____2_-_IT_1" 13458 234.55432156535 17000001 13457 234.55432156535 16000025
"8__573____2_-_IT_1" 13472 235.993504830011 18000001 13471 235.993504830011 17000014
"8__573____2_-_IT_1" 13510 244.167392170699 19000001 13509 244.167392170699 18000038
"8__573____2_-_IT_1" 13527 246.748021483752 20000001 13526 246.748021483752 19000017
"8__573____2_-_IT_1" 13614 281.837334867099 21000001 13613 281.837334867099 20000087
"8__573____2_-_IT_1" 13660 286.49456015175 22000001 13659 286.49456015175 21000046
"8__573____2_-_IT_1" 13695 298.169709014013 23000001 13694 298.169709014013 22000035
"8__573____2_-_IT_1" 14089 3713.82162773845 24000001 14088 3713.82162773845 23000394
expired_calendar WARNING 169

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.

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

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
2 "93406_8__571___"
3 "93407_8__571___"
4 "93408_8__571___"
5 "93409_8__571___"
6 "93410_8__571___"
7 "93411_8__571___"
8 "93412_8__571___"
9 "93413_8__571___"
10 "93414_8__571___"
11 "93415_8__571___"
12 "93416_8__571___"
13 "93417_8__571___"
24 "93259_8__571___"
25 "93260_8__571___"
26 "93261_8__571___"
27 "93262_8__571___"
28 "93263_8__571___"
29 "93264_8__571___"
30 "93265_8__571___"
31 "93266_8__571___"
32 "93267_8__571___"
33 "93268_8__571___"
34 "93269_8__571___"
35 "93270_8__571___"
48 "93418_8__572___"
49 "93419_8__572___"
50 "93420_8__572___"
55 "93271_8__572___"
56 "93272_8__572___"
57 "93273_8__572___"
60 "93421_8__573___"
61 "93422_8__573___"
62 "93423_8__573___"
63 "93424_8__573___"
64 "93425_8__573___"
65 "93426_8__573___"
66 "93427_8__573___"
67 "93428_8__573___"
68 "93429_8__573___"
69 "93430_8__573___"
70 "93431_8__573___"
85 "93274_8__573___"
86 "93275_8__573___"
87 "93276_8__573___"
88 "93277_8__573___"
89 "93278_8__573___"
90 "93279_8__573___"
91 "93280_8__573___"
92 "93281_8__573___"
93 "93282_8__573___"
missing_feed_contact_email_and_url WARNING 1

missing_feed_contact_email_and_url

Best Practices for feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

You can see more about this notice here.

csvRowNumber (?) The row number of the validated record.
2
missing_recommended_field WARNING 2

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.
"feed_info.txt" 2 "feed_start_date"
"feed_info.txt" 2 "feed_end_date"
mixed_case_recommended_field WARNING 4334

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 4334 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.
"routes.txt" "route_long_name" "BOADILLA DEL MONTE-BRUNETE" 6
"routes.txt" "route_long_name" "PASEO DE MADRID-OLIVAR-PARQUE-LAS LOMAS" 10
"routes.txt" "route_long_name" "FERIAL DE BOADILLA-VALDEPASTORES-LAS LOMAS" 11
"routes.txt" "route_long_name" "FERIAL DE BOADILLA-VALDECABAÑAS-BONANZA" 12
"routes.txt" "route_long_name" "BOADILLA CENTRO - EL PASTEL" 13
"stops.txt" "stop_name" "CTRA.CCHEL.A ARAVACA-COLONIA JARDÍN" 2
"stops.txt" "stop_name" "CTRA.CCHEL.A ARAVACA-COLONIA JARDIN" 3
"stops.txt" "stop_name" "AV.POBLADOS-EMPALME" 4
"stops.txt" "stop_name" "CTRA.M502-GTA.ARROYO MEAQUES" 5
"stops.txt" "stop_name" "CTRA.M502-URB.LOS ÁNGELES" 6
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-URB.PRADO LARGO" 7
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-URB.PRADO LARGO" 8
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-CENTRO COMERCIAL" 9
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-CENTRO COMERCIAL" 10
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-GERENCIA" 11
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-FACULTAD INFORMÁTICA" 12
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-COLEGIO" 13
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-GERENCIA" 14
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-FACULTAD INFORMÁTICA" 15
"stops.txt" "stop_name" "CTRA.M511-RETAMARES" 16
"stops.txt" "stop_name" "CTRA.M511-RETAMARES" 17
"stops.txt" "stop_name" "CTRA.M501-POL.IND.VENTORRO DEL CANO" 18
"stops.txt" "stop_name" "AV.MONTE SEGOVIA-MONTE NEGRILLO" 19
"stops.txt" "stop_name" "AV.MONTE SEGOVIA-MONTE NEGRILLO" 20
"stops.txt" "stop_name" "AV.MONTE SEGOVIA-MONTE GUADALUPE" 21
"stops.txt" "stop_name" "AV.MONTE SEGOVIA-MONTE GUADALUPE" 22
"stops.txt" "stop_name" "CTRA.M513-POLIDEPORTIVO PISCINAS" 23
"stops.txt" "stop_name" "CTRA.M513-POLIDEPORTIVO PISCINAS" 24
"stops.txt" "stop_name" "ALBERCA-INSTITUTO" 25
"stops.txt" "stop_name" "CTRA.M511-CIUDAD DE LA IMAGEN" 26
"stops.txt" "stop_name" "CTRA.M511-CIUDAD DE LA IMAGEN" 27
"stops.txt" "stop_name" "AV.MONTE SEGOVIA-CENTRO COMERCIAL" 28
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-COLEGIO" 29
"stops.txt" "stop_name" "PºPRÍNCIPE-TELEMADRID" 30
"stops.txt" "stop_name" "RONDA-CENTRO DE SALUD" 31
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-HOSPITAL MONTEPRÍNCIPE" 32
"stops.txt" "stop_name" "AV.MONTEPRÍNCIPE-HOSPITAL MONTEPRINCIPE" 33
"stops.txt" "stop_name" "RONDA-RUPERTO CHAPI" 34
"stops.txt" "stop_name" "AV.SIGLO XXI-EST.SIGLO XXI" 35
"stops.txt" "stop_name" "AV.SIGLO XX-EST.SIGLO XXI" 36
"stops.txt" "stop_name" "AV.INFANTE DON LUIS-FEDERICO Gª LORCA" 37
"stops.txt" "stop_name" "AV.INFANTE DON LUIS-GREGORIO MARAÑÓN" 38
"stops.txt" "stop_name" "AV.INFANTE DON LUIS-INSTITUTO" 39
"stops.txt" "stop_name" "AV.INFANTE DON LUIS-MENÉNDEZ PIDAL" 40
"stops.txt" "stop_name" "CTRA.MAJADAHONDA-EST.BOADILLA CENTRO" 41
"stops.txt" "stop_name" "PZA.VIRGEN LAS ANGUSTIAS-EST.NUEVO MUNDO" 42
"stops.txt" "stop_name" "AV.ISABEL DE FARNESIO-EST.NUEVO MUNDO" 43
"stops.txt" "stop_name" "AV.ISABEL DE FARNESIO-EST.NUEVO MUNDO" 44
"stops.txt" "stop_name" "AV.ISABEL DE FARNESIO-FEDERICO CHUECA" 45
"stops.txt" "stop_name" "AV.ISABEL DE FARNESIO-RUPERTO CHAPI" 46
stop_too_far_from_shape WARNING 1

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.

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.
1953 "9__1__022__1_-_IT_1" "93389_9__1__022_-956506" 43602 "par_8_15567" "PºMADRID-JUAN CARLOS I" [40.4051947623337,-3.8777602851707993] 235.90074997543124