ptv-metropolitan-train — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-06-19T22:20:30Z,
for the dataset file:///shared/ptv-metropolitan-train_c31eaa06.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Feed Info


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

Files included


  1. agency.txt
  2. calendar.txt
  3. calendar_dates.txt
  4. levels.txt
  5. pathways.txt
  6. routes.txt
  7. shapes.txt
  8. stop_times.txt
  9. stops.txt
  10. transfers.txt
  11. trips.txt

Counts


  • Agencies: 1
  • Blocks: 12216
  • Routes: 35
  • Shapes: 2152
  • Stops: 3064
  • Trips: 36647

Specification Compliance report

3443 notices reported (2640 errors, 803 warnings, 0 infos)

Notice Code Severity Total
decreasing_or_equal_stop_time_distance ERROR 2521

decreasing_or_equal_stop_time_distance

Decreasing or equal shape_dist_traveled in stop_times.txt.

When sorted by stop_times.stop_sequence, two consecutive entries in stop_times.txt should have increasing distance, based on the field shape_dist_traveled. If the values are equal, this is considered as an error.

You can see more about this notice here.

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

tripId (?) The id of the faulty trip. stopId (?) The id of the faulty stop. csvRowNumber (?) The row number from `stop_times.txt`. shapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the faulty record. stopSequence (?) The faulty record's `stop_times.stop_sequence`. prevCsvRowNumber (?) The row number from `stop_times.txt` of the previous stop time. prevShapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the previous stop time. prevStopSequence (?) The previous record's `stop_times.stop_sequence`.
"02-MDD-R-52-T5_WD01-BE609" "26140" 365401 0.0 2 365400 0.0 1
"02-MDD-R-52-T5_WD01-BE609" "26147" 365402 0.0 3 365401 0.0 2
"02-MDD-R-52-T5_WD01-BE609" "26295" 365403 0.0 4 365402 0.0 3
"02-MDD-R-52-T5_WD01-BE609" "26117" 365404 0.0 5 365403 0.0 4
"02-MDD-R-52-T5_WD01-BE609" "26260" 365405 0.0 6 365404 0.0 5
"02-MDD-R-52-T5_WD01-BE609" "26261" 365406 0.0 7 365405 0.0 6
"02-MDD-R-52-T5_WD01-BE609" "26262" 365407 0.0 8 365406 0.0 7
"02-MDD-R-52-T5_WD01-BE605" "26140" 365385 0.0 2 365384 0.0 1
"02-MDD-R-52-T5_WD01-BE605" "26147" 365386 0.0 3 365385 0.0 2
"02-MDD-R-52-T5_WD01-BE605" "26295" 365387 0.0 4 365386 0.0 3
"02-MDD-R-52-T5_WD01-BE605" "26117" 365388 0.0 5 365387 0.0 4
"02-MDD-R-52-T5_WD01-BE605" "26260" 365389 0.0 6 365388 0.0 5
"02-MDD-R-52-T5_WD01-BE605" "26261" 365390 0.0 7 365389 0.0 6
"02-MDD-R-52-T5_WD01-BE605" "26262" 365391 0.0 8 365390 0.0 7
"02-MDD-R-52-T5_WD01-BE607" "26140" 365393 0.0 2 365392 0.0 1
"02-MDD-R-52-T5_WD01-BE607" "26147" 365394 0.0 3 365393 0.0 2
"02-MDD-R-52-T5_WD01-BE607" "26295" 365395 0.0 4 365394 0.0 3
"02-MDD-R-52-T5_WD01-BE607" "26117" 365396 0.0 5 365395 0.0 4
"02-MDD-R-52-T5_WD01-BE607" "26260" 365397 0.0 6 365396 0.0 5
"02-MDD-R-52-T5_WD01-BE607" "26261" 365398 0.0 7 365397 0.0 6
"02-MDD-R-52-T5_WD01-BE607" "26262" 365399 0.0 8 365398 0.0 7
"02-MDD-R-52-T5_WD01-BE603" "26140" 365377 0.0 2 365376 0.0 1
"02-MDD-R-52-T5_WD01-BE603" "26147" 365378 0.0 3 365377 0.0 2
"02-MDD-R-52-T5_WD01-BE603" "26295" 365379 0.0 4 365378 0.0 3
"02-MDD-R-52-T5_WD01-BE603" "26117" 365380 0.0 5 365379 0.0 4
"02-MDD-R-52-T5_WD01-BE603" "26260" 365381 0.0 6 365380 0.0 5
"02-MDD-R-52-T5_WD01-BE603" "26261" 365382 0.0 7 365381 0.0 6
"02-MDD-R-52-T5_WD01-BE603" "26262" 365383 0.0 8 365382 0.0 7
"02-MDD-R-52-T5_WD01-BE615" "26140" 365425 0.0 2 365424 0.0 1
"02-MDD-R-52-T5_WD01-BE615" "26147" 365426 0.0 3 365425 0.0 2
"02-MDD-R-52-T5_WD01-BE615" "26295" 365427 0.0 4 365426 0.0 3
"02-MDD-R-52-T5_WD01-BE615" "26117" 365428 0.0 5 365427 0.0 4
"02-MDD-R-52-T5_WD01-BE615" "26260" 365429 0.0 6 365428 0.0 5
"02-MDD-R-52-T5_WD01-BE615" "26261" 365430 0.0 7 365429 0.0 6
"02-MDD-R-52-T5_WD01-BE615" "26262" 365431 0.0 8 365430 0.0 7
"02-MDD-R-52-T5_WD01-BE611" "26140" 365409 0.0 2 365408 0.0 1
"02-MDD-R-52-T5_WD01-BE611" "26147" 365410 0.0 3 365409 0.0 2
"02-MDD-R-52-T5_WD01-BE611" "26295" 365411 0.0 4 365410 0.0 3
"02-MDD-R-52-T5_WD01-BE611" "26117" 365412 0.0 5 365411 0.0 4
"02-MDD-R-52-T5_WD01-BE611" "26260" 365413 0.0 6 365412 0.0 5
"02-MDD-R-52-T5_WD01-BE611" "26261" 365414 0.0 7 365413 0.0 6
"02-MDD-R-52-T5_WD01-BE611" "26262" 365415 0.0 8 365414 0.0 7
"02-MDD-R-52-T5_WD01-BE613" "26140" 365417 0.0 2 365416 0.0 1
"02-MDD-R-52-T5_WD01-BE613" "26147" 365418 0.0 3 365417 0.0 2
"02-MDD-R-52-T5_WD01-BE613" "26295" 365419 0.0 4 365418 0.0 3
"02-MDD-R-52-T5_WD01-BE613" "26117" 365420 0.0 5 365419 0.0 4
"02-MDD-R-52-T5_WD01-BE613" "26260" 365421 0.0 6 365420 0.0 5
"02-MDD-R-52-T5_WD01-BE613" "26261" 365422 0.0 7 365421 0.0 6
"02-MDD-R-52-T5_WD01-BE613" "26262" 365423 0.0 8 365422 0.0 7
"02-MDD-R-52-T5_WD01-BE406" "26261" 365289 0.0 2 365288 0.0 1
equal_shape_distance_diff_coordinates ERROR 118

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.

Only the first 50 of 118 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.
"2-FKN-vpt-1.27.R" 452046 23898.67 253 452045 23898.67 252 57.126234945294314
"2-FKN-vpt-52.15.H" 504997 18740.77 387 504996 18740.77 386 53.15326112795716
"2-FKN-vpt-52.37.R" 517549 23898.67 253 517548 23898.67 252 57.126234945294314
"2-FKN-vpt-52.9.H" 521257 18740.97 378 521256 18740.97 377 53.15326112795716
"2-FKN-vpt-1.18.H" 445622 18740.97 378 445621 18740.97 377 53.15326112795716
"2-FKN-vpt-52.28.R" 512785 2332.06 23 512784 2332.06 22 57.126234945294314
"2-FKN-vpt-51.30.R" 489274 23898.67 253 489273 23898.67 252 57.126234945294314
"2-FKN-vpt-52.11.H" 502701 18740.77 387 502700 18740.77 386 53.15326112795716
"2-FKN-vpt-52.33.H" 515640 18741.4 390 515639 18741.4 389 53.15326112795716
"2-FKN-vpt-50.23.H" 466850 18737.04 402 466849 18737.04 401 53.15326112795716
"2-FKN-vpt-51.17.H" 483199 16469.78 311 483198 16469.78 310 53.15326112795716
"2-FKN-vpt-50.32.R" 472040 23894.07 259 472039 23894.07 258 57.126234945294314
"2-FKN-vpt-52.5.H" 518596 18740.77 387 518595 18740.77 386 53.15326112795716
"2-FKN-vpt-50.9.H" 476869 18740.97 378 476868 18740.97 377 53.15326112795716
"2-FKN-vpt-51.7.R" 499846 23894.07 259 499845 23894.07 258 57.126234945294314
"2-FKN-vpt-1.7.R" 459146 23894.07 259 459145 23894.07 258 57.126234945294314
"2-FKN-vpt-50.10.H" 461515 18740.77 387 461514 18740.77 386 53.15326112795716
"2-FKN-vpt-50.27.H" 469690 18737.25 393 469689 18737.25 392 53.15326112795716
"2-FKN-vpt-51.35.H" 492999 18737.25 393 492998 18737.25 392 53.15326112795716
"2-FKN-vpt-51.13.R" 480303 23894.07 259 480302 23894.07 258 57.126234945294314
"2-FKN-vpt-1.32.R" 454963 2332.06 23 454962 2332.06 22 57.126234945294314
"2-FKN-vpt-51.3.H" 488739 18728.45 379 488738 18728.45 378 53.15326112795716
"2-FKN-vpt-1.10.R" 440538 23898.67 253 440537 23898.67 252 57.126234945294314
"2-FKN-vpt-51.26.H" 487249 18740.77 387 487248 18740.77 386 53.15326112795716
"2-FKN-vpt-1.2.H" 446500 18740.97 378 446499 18740.97 377 53.15326112795716
"2-FKN-vpt-52.19.R" 507451 23898.67 253 507450 23898.67 252 57.126234945294314
"2-FKN-vpt-1.23.R" 449157 23898.67 253 449156 23898.67 252 57.126234945294314
"2-FKN-vpt-51.31.H" 490159 18737.04 402 490158 18737.04 401 53.15326112795716
"2-FKN-vpt-1.14.H" 443412 18740.97 378 443411 18740.97 377 53.15326112795716
"2-FKN-vpt-51.22.H" 486066 18740.77 387 486065 18740.77 386 53.15326112795716
"2-FKN-vpt-50.31.R" 471289 23894.07 259 471288 23894.07 258 57.126234945294314
"2-FKN-vpt-52.8.H" 520591 18740.77 387 520590 18740.77 386 53.15326112795716
"2-FKN-vpt-1.17.H" 445222 18740.77 387 445221 18740.77 386 53.15326112795716
"2-FKN-vpt-52.29.R" 513297 2332.06 23 513296 2332.06 22 57.126234945294314
"2-FKN-vpt-52.16.R" 505341 23898.67 253 505340 23898.67 252 57.126234945294314
"2-FKN-vpt-1.8.R" 459888 23898.67 253 459887 23898.67 252 57.126234945294314
"2-FKN-vpt-52.34.H" 516049 18740.77 387 516048 18740.77 386 53.15326112795716
"2-FKN-vpt-52.21.H" 509264 18737.25 393 509263 18737.25 392 53.15326112795716
"2-FKN-vpt-50.35.R" 473723 2332.06 23 473722 2332.06 22 57.126234945294314
"2-FKN-vpt-50.8.H" 476203 18740.97 378 476202 18740.97 377 53.15326112795716
"2-FKN-vpt-51.6.H" 499299 18740.77 387 499298 18740.77 386 53.15326112795716
"2-FKN-vpt-52.25.R" 510863 23894.07 259 510862 23894.07 258 57.126234945294314
"2-FKN-vpt-51.18.H" 483599 18740.97 378 483598 18740.97 377 53.15326112795716
"2-FKN-vpt-50.22.R" 465965 23898.67 253 465964 23898.67 252 57.126234945294314
"2-FKN-vpt-52.12.H" 503101 18740.97 378 503100 18740.97 377 53.15326112795716
"2-FKN-vpt-1.3.H" 453829 18740.77 387 453828 18740.77 386 53.15326112795716
"2-FKN-vpt-1.31.R" 454448 16238.07 167 454447 16238.07 166 57.126234945294314
"2-FKN-vpt-51.2.H" 484662 18740.97 378 484661 18740.97 377 53.15326112795716
"2-FKN-vpt-51.36.R" 493540 23894.07 259 493539 23894.07 258 57.126234945294314
"2-FKN-vpt-50.13.H" 463325 18740.77 387 463324 18740.77 386 53.15326112795716
number_out_of_range ERROR 1

number_out_of_range

Out of range value.

The values in the given column of the input rows are out of range.

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 faulty field. fieldType (?) The type of the faulty field. fieldValue (?) Faulty value.
"pathways.txt" 2293 "traversal_time" "positive integer" 0
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 293

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 293 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.
"2-FKN-vpt-1.27.R" 452019 21566.02 226 452018 21566.02 225 0.8214629017550946
"2-FKN-vpt-52.15.H" 504788 6523.77 178 504787 6523.77 177 0.6079953698338537
"2-FKN-vpt-52.15.H" 504817 8724.5 207 504816 8724.5 206 0.5106914196520045
"2-FKN-vpt-52.15.H" 505018 21069.52 408 505017 21069.52 407 0.6008148851824606
"2-FKN-vpt-52.37.R" 517522 21566.02 226 517521 21566.02 225 0.8214629017550946
"2-PKM-vpt-51.18.R" 1125231 49897.43 445 1125230 49897.43 444 0.44585641369369317
"2-PKM-vpt-1.6.R" 1104444 49897.43 449 1104443 49897.43 448 0.44585641369369317
"2-CBE-vpt-52.19.R" 367813 34996.0 357 367812 34996.0 356 0.44585641369369317
"2-FKN-vpt-52.9.H" 521048 6523.97 169 521047 6523.97 168 0.6079953698338537
"2-FKN-vpt-52.9.H" 521077 8724.7 198 521076 8724.7 197 0.5106914196520045
"2-FKN-vpt-52.9.H" 521278 21069.73 399 521277 21069.73 398 0.6008148851824606
"2-PKM-vpt-52.29.R" 1148368 12529.76 122 1148367 12529.76 121 0.44585641369369317
"2-PKM-vpt-52.9.R" 1154073 49897.43 445 1154072 49897.43 444 0.44585641369369317
"2-FKN-vpt-1.18.H" 445413 6523.97 169 445412 6523.97 168 0.6079953698338537
"2-FKN-vpt-1.18.H" 445442 8724.7 198 445441 8724.7 197 0.5106914196520045
"2-FKN-vpt-51.30.R" 489247 21566.02 226 489246 21566.02 225 0.8214629017550946
"2-PKM-vpt-1.18.R" 1094443 49899.56 448 1094442 49899.56 447 0.44585641369369317
"2-FKN-vpt-52.11.H" 502492 6523.77 178 502491 6523.77 177 0.6079953698338537
"2-FKN-vpt-52.11.H" 502521 8724.5 207 502520 8724.5 206 0.5106914196520045
"2-CBE-vpt-1.2.R" 350017 34995.02 360 350016 34995.02 359 0.44585641369369317
"2-FKN-vpt-52.33.H" 515428 6523.77 178 515427 6523.77 177 0.6079953698338537
"2-FKN-vpt-52.33.H" 515457 8724.5 207 515456 8724.5 206 0.5106914196520045
"2-FKN-vpt-50.23.H" 466626 6523.77 178 466625 6523.77 177 0.6079953698338537
"2-FKN-vpt-50.23.H" 466655 8724.5 207 466654 8724.5 206 0.5106914196520045
"2-FKN-vpt-50.23.H" 466871 21065.8 423 466870 21065.8 422 0.6008148851824606
"2-FKN-vpt-51.17.H" 482990 4252.78 102 482989 4252.78 101 0.6079953698338537
"2-FKN-vpt-51.17.H" 483019 6453.51 131 483018 6453.51 130 0.5106914196520045
"2-FKN-vpt-50.32.R" 472013 21561.42 232 472012 21561.42 231 0.8214629017550946
"2-FKN-vpt-52.5.H" 518387 6523.77 178 518386 6523.77 177 0.6079953698338537
"2-FKN-vpt-52.5.H" 518416 8724.5 207 518415 8724.5 206 0.5106914196520045
"2-FKN-vpt-52.5.H" 518617 21069.52 408 518616 21069.52 407 0.6008148851824606
"2-PKM-vpt-52.25.R" 1147101 21099.25 204 1147100 21099.25 203 0.44585641369369317
"2-FKN-vpt-50.9.H" 476660 6523.97 169 476659 6523.97 168 0.6079953698338537
"2-FKN-vpt-50.9.H" 476689 8724.7 198 476688 8724.7 197 0.5106914196520045
"2-FKN-vpt-50.9.H" 476890 21069.73 399 476889 21069.73 398 0.6008148851824606
"2-FKN-vpt-51.7.R" 499819 21561.42 232 499818 21561.42 231 0.8214629017550946
"2-FKN-vpt-1.7.R" 459119 21561.42 232 459118 21561.42 231 0.8214629017550946
"2-PKM-vpt-52.12.R" 1140237 49899.56 452 1140236 49899.56 451 0.44585641369369317
"2-FKN-vpt-50.10.H" 461306 6523.77 178 461305 6523.77 177 0.6079953698338537
"2-FKN-vpt-50.10.H" 461335 8724.5 207 461334 8724.5 206 0.5106914196520045
"2-FKN-vpt-50.10.H" 461536 21069.52 408 461535 21069.52 407 0.6008148851824606
"2-PKM-vpt-1.14.R" 1092106 49897.43 449 1092105 49897.43 448 0.44585641369369317
"2-PKM-vpt-50.33.R" 1117177 21087.11 204 1117176 21087.11 203 0.44585641369369317
"2-FKN-vpt-50.27.H" 469466 6523.97 169 469465 6523.97 168 0.6079953698338537
"2-FKN-vpt-50.27.H" 469495 8724.7 198 469494 8724.7 197 0.5106914196520045
"2-FKN-vpt-50.27.H" 469711 21066.01 414 469710 21066.01 413 0.6008148851824606
"2-PKM-vpt-50.15.R" 1109675 49899.56 452 1109674 49899.56 451 0.44585641369369317
"2-PKM-vpt-50.28.R" 1115507 21097.41 201 1115506 21097.41 200 0.44585641369369317
"2-PKM-vpt-51.10.R" 1120595 49899.56 448 1120594 49899.56 447 0.44585641369369317
"2-FKN-vpt-51.35.H" 492775 6523.97 169 492774 6523.97 168 0.6079953698338537
expired_calendar WARNING 4

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.
8 "T5"
12 "T5+sl"
13 "T5+sp"
24 "T5+WD08_1"
leading_or_trailing_whitespaces WARNING 3

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" 1378 "stop_name" "East Pakenham Railway Station "
"stops.txt" 1567 "stop_name" "Glen Huntly Railway Station "
"stops.txt" 2858 "stop_name" "Union Railway Station "
missing_recommended_field WARNING 35

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"
"routes.txt" 21 "agency_id"
"routes.txt" 22 "agency_id"
"routes.txt" 23 "agency_id"
"routes.txt" 24 "agency_id"
"routes.txt" 25 "agency_id"
"routes.txt" 26 "agency_id"
"routes.txt" 27 "agency_id"
"routes.txt" 28 "agency_id"
"routes.txt" 29 "agency_id"
"routes.txt" 30 "agency_id"
"routes.txt" 31 "agency_id"
"routes.txt" 32 "agency_id"
"routes.txt" 33 "agency_id"
"routes.txt" 34 "agency_id"
"routes.txt" 35 "agency_id"
"routes.txt" 36 "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 3

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" "lift" 1785
"stops.txt" "stop_name" "MCE DP1" 1969
"stops.txt" "stop_name" "MCE DP2" 1970
route_long_name_contains_short_name WARNING 17

route_long_name_contains_short_name

Long name should not contain short name for a single route.

In routes.txt, route_long_name should not contain the value for route_short_name, because when both are provided, they are often combined by transit applications. Note that only one of the two fields is required. If there is no short name used for a route, use route_long_name only.

Good examples:

route_short_name/route_long_name Dataset
"N"/"Judah" Muni San Fransisco
"6"/"ML King Jr Blvd" Trimet Portland Streetcar
"55"/"Boulevard Saint Laurent" STM Montreal
"1"/"Rangiora/Cashmere" Metro Christchurch

Bad examples:

route_short_name/route_long_name
"604"/"604"
"14"/"Route 14"
"2"/"Route 2: Bellows Falls In-Town"

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeShortName (?) The faulty record's `route_short_name`. routeLongName (?) The faulty record's `route_long_name`.
"aus:vic:vic-02-ALM:" 2 "Alamein" "Alamein - City"
"aus:vic:vic-02-BEG:" 4 "Belgrave" "Belgrave - City"
"aus:vic:vic-02-CBE:" 6 "Cranbourne" "Cranbourne - City"
"aus:vic:vic-02-CGB:" 9 "Craigieburn" "Craigieburn - City"
"aus:vic:vic-02-FKN:" 11 "Frankston" "Frankston - City"
"aus:vic:vic-02-GWY:" 13 "Glen Waverley" "Glen Waverley - City"
"aus:vic:vic-02-HBE:" 15 "Hurstbridge" "Hurstbridge - City"
"aus:vic:vic-02-LIL:" 17 "Lilydale" "Lilydale - City"
"aus:vic:vic-02-MDD:" 19 "Mernda" "Mernda - City"
"aus:vic:vic-02-PKM:" 21 "Pakenham" "Pakenham - City"
"aus:vic:vic-02-RCE:" 23 "Flemington Racecourse" "Flemington Racecourse - City"
"aus:vic:vic-02-SHM:" 25 "Sandringham" "Sandringham - City"
"aus:vic:vic-02-STY:" 27 "Stony Point" "Stony Point - Frankston"
"aus:vic:vic-02-SUY:" 29 "Sunbury" "Sunbury - City"
"aus:vic:vic-02-UFD:" 31 "Upfield" "Upfield - City"
"aus:vic:vic-02-WER:" 33 "Werribee" "Werribee - City"
"aus:vic:vic-02-WIL:" 35 "Williamstown" "Williamstown - City"
route_short_name_too_long WARNING 19

route_short_name_too_long

Short name of a route is too long (more than 12 characters).

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeShortName (?) The faulty record's `route_short_name`.
"aus:vic:vic-02-ALM-R:" 3 "Replacement Bus"
"aus:vic:vic-02-BEG-R:" 5 "Replacement Bus"
"aus:vic:vic-02-CBE-R:" 7 "Replacement Bus"
"aus:vic:vic-02-CGB-R:" 10 "Replacement Bus"
"aus:vic:vic-02-FKN-R:" 12 "Replacement Bus"
"aus:vic:vic-02-GWY:" 13 "Glen Waverley"
"aus:vic:vic-02-GWY-R:" 14 "Replacement Bus"
"aus:vic:vic-02-HBE-R:" 16 "Replacement Bus"
"aus:vic:vic-02-LIL-R:" 18 "Replacement Bus"
"aus:vic:vic-02-MDD-R:" 20 "Replacement Bus"
"aus:vic:vic-02-PKM-R:" 22 "Replacement Bus"
"aus:vic:vic-02-RCE:" 23 "Flemington Racecourse"
"aus:vic:vic-02-RCE-R:" 24 "Replacement Bus"
"aus:vic:vic-02-SHM-R:" 26 "Replacement Bus"
"aus:vic:vic-02-STY-R:" 28 "Replacement Bus"
"aus:vic:vic-02-SUY-R:" 30 "Replacement Bus"
"aus:vic:vic-02-UFD-R:" 32 "Replacement Bus"
"aus:vic:vic-02-WER-R:" 34 "Replacement Bus"
"aus:vic:vic-02-WIL-R:" 36 "Replacement Bus"
stop_too_far_from_shape WARNING 30

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.
22988 "2-PKM-R-vpt-52.7.R" "02-PKM-R-52-T2-BX010" 411186 "26263" "Richmond Rail Replacement Bus Stop" [-37.83906338999999,144.99220875] 1595.4906457120283
22988 "2-PKM-R-vpt-52.7.R" "02-PKM-R-52-T2-BX010" 411187 "26256" "Parliament Rail Replacement Bus Stop" [-37.83906338999999,144.99220875] 3358.794215092514
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47030 "26116" "Belgrave Rail Replacement Bus Stop" [-37.88258252,145.29506394] 6126.770218111482
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47031 "26293" "Tecoma Rail Replacement Bus Stop" [-37.88258252,145.29506394] 4941.353442350512
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47032 "26302" "Upwey Rail Replacement Bus Stop" [-37.88258252,145.29506394] 3932.6289069379095
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47033 "26301" "Upper Ferntree Gully Rail Replacement Bus Stop" [-37.88258252,145.29506394] 1810.2585258417093
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47037 "26192" "Heathmont Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 2388.9567674670134
3882 "2-BEG-R-vpt-52.6.R" "02-BEG-R-52-T5_WD01-BL716" 47038 "26265" "Ringwood Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 4358.84390677628
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46871 "26116" "Belgrave Rail Replacement Bus Stop" [-37.88258252,145.29506394] 6126.770218111482
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46872 "26293" "Tecoma Rail Replacement Bus Stop" [-37.88258252,145.29506394] 4941.353442350512
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46873 "26302" "Upwey Rail Replacement Bus Stop" [-37.88258252,145.29506394] 3932.6289069379095
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46874 "26301" "Upper Ferntree Gully Rail Replacement Bus Stop" [-37.88258252,145.29506394] 1810.2585258417093
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46878 "26192" "Heathmont Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 2388.9567674670134
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46879 "26265" "Ringwood Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 4358.84390677628
3866 "2-BEG-R-vpt-52.3.R" "02-BEG-R-52-T5_WD01-BL700" 46880 "26128" "Burnley Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 22831.846101695315
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46881 "26265" "Ringwood Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 4358.84390677628
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46882 "26192" "Heathmont Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 2388.9567674670134
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46886 "26301" "Upper Ferntree Gully Rail Replacement Bus Stop" [-37.88170888,145.29468385] 1900.9632707741694
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46887 "26302" "Upwey Rail Replacement Bus Stop" [-37.88170888,145.29468385] 4017.1161226604845
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46888 "26293" "Tecoma Rail Replacement Bus Stop" [-37.88170888,145.29468385] 5021.918601793357
3867 "2-BEG-R-vpt-52.4.H" "02-BEG-R-52-T5_WD01-BL701" 46889 "26116" "Belgrave Rail Replacement Bus Stop" [-37.88170888,145.29468385] 6203.406972938904
22989 "2-PKM-R-vpt-52.8.H" "02-PKM-R-52-T2-BX011" 411188 "26256" "Parliament Rail Replacement Bus Stop" [-37.83906338999999,144.99220875] 3358.794215092514
22989 "2-PKM-R-vpt-52.8.H" "02-PKM-R-52-T2-BX011" 411189 "26263" "Richmond Rail Replacement Bus Stop" [-37.83906338999999,144.99220875] 1595.4906457120283
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46900 "26128" "Burnley Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 22831.846101695315
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46901 "26265" "Ringwood Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 4358.84390677628
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46902 "26192" "Heathmont Rail Replacement Bus Stop" [-37.84111246999999,145.26658282] 2388.9567674670134
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46906 "26301" "Upper Ferntree Gully Rail Replacement Bus Stop" [-37.88170888,145.29468385] 1900.9632707741694
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46907 "26302" "Upwey Rail Replacement Bus Stop" [-37.88170888,145.29468385] 4017.1161226604845
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46908 "26293" "Tecoma Rail Replacement Bus Stop" [-37.88170888,145.29468385] 5021.918601793357
3869 "2-BEG-R-vpt-52.5.H" "02-BEG-R-52-T5_WD01-BL703" 46909 "26116" "Belgrave Rail Replacement Bus Stop" [-37.88170888,145.29468385] 6203.406972938904
stop_without_stop_time WARNING 363

stop_without_stop_time

A stop in stops.txt is not referenced by any stop_times.stop_id.

Such stops are not used by any trip and normally do not provide user value. This notice may indicate a typo in stop_times.txt.

You can see more about this notice here.

Only the first 50 of 363 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.
164 "12257" "Richmond Station"
253 "14261" "Armadale Station"
254 "14262" "Armadale Station"
257 "14265" "Toorak Station"
258 "14266" "Toorak Station"
261 "14269" "Hawksburn Station"
262 "14270" "Hawksburn Station"
266 "14274" "Brighton Beach Station"
289 "14297" "South Yarra Station"
410 "15520" "Footscray Station"
411 "15521" "Footscray Station"
415 "15525" "Flemington Racecourse Station"
433 "15543" "Essendon Station"
444 "19998" "Sunbury Station"
445 "19999" "Diggers Rest Station"
446 "20029" "Craigieburn Station"
447 "20043" "Southern Cross Station"
449 "22181" "Southern Cross Station"
450 "22182" "Southern Cross Station"
451 "22183" "Southern Cross Station"
452 "22184" "Southern Cross Station"
453 "22185" "Southern Cross Station"
454 "22186" "Southern Cross Station"
455 "22187" "Southern Cross Station"
462 "22238" "Flinders Street Station"
463 "22239" "North Melbourne Station"
464 "22240" "Footscray Station"
465 "22241" "Sunshine Station"
466 "22242" "Ginifer Station"
467 "22243" "St Albans Station"
468 "22244" "Watergardens Station"
469 "22245" "Newport Station"
470 "22246" "Werribee Station"
471 "22247" "Richmond Station"
472 "22248" "Caulfield Station"
473 "22249" "Clayton Station"
474 "22250" "Dandenong Station"
475 "22251" "Berwick Station"
476 "22252" "Pakenham Station"
477 "22253" "Essendon Station"
478 "22254" "Broadmeadows Station"
481 "26102" "Albion Rail Replacement Bus Stop"
484 "26105" "Anstey Rail Replacement Bus Stop"
486 "26107" "Ascot Vale Rail Replacement Bus Stop"
488 "26109" "Aspendale Rail Replacement Bus Stop"
491 "26112" "Batman Rail Replacement Bus Stop"
492 "26113" "Baxter Rail Replacement Bus Stop"
494 "26115" "Beaconsfield Rail Replacement Bus Stop"
498 "26119" "Berwick Rail Replacement Bus Stop"
499 "26120" "Bittern Rail Replacement Bus Stop"
unexpected_enum_value WARNING 35

unexpected_enum_value

An enum has an unexpected value.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row number of the faulty record. fieldName (?) The name of the field where the error occurred. fieldValue (?) Faulty value.
"routes.txt" 2 "route_type" 400
"routes.txt" 3 "route_type" 400
"routes.txt" 4 "route_type" 400
"routes.txt" 5 "route_type" 400
"routes.txt" 6 "route_type" 400
"routes.txt" 7 "route_type" 400
"routes.txt" 8 "route_type" 400
"routes.txt" 9 "route_type" 400
"routes.txt" 10 "route_type" 400
"routes.txt" 11 "route_type" 400
"routes.txt" 12 "route_type" 400
"routes.txt" 13 "route_type" 400
"routes.txt" 14 "route_type" 400
"routes.txt" 15 "route_type" 400
"routes.txt" 16 "route_type" 400
"routes.txt" 17 "route_type" 400
"routes.txt" 18 "route_type" 400
"routes.txt" 19 "route_type" 400
"routes.txt" 20 "route_type" 400
"routes.txt" 21 "route_type" 400
"routes.txt" 22 "route_type" 400
"routes.txt" 23 "route_type" 400
"routes.txt" 24 "route_type" 400
"routes.txt" 25 "route_type" 400
"routes.txt" 26 "route_type" 400
"routes.txt" 27 "route_type" 400
"routes.txt" 28 "route_type" 400
"routes.txt" 29 "route_type" 400
"routes.txt" 30 "route_type" 400
"routes.txt" 31 "route_type" 400
"routes.txt" 32 "route_type" 400
"routes.txt" 33 "route_type" 400
"routes.txt" 34 "route_type" 400
"routes.txt" 35 "route_type" 400
"routes.txt" 36 "route_type" 400