GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2025-12-12T16:37:14Z,
for the dataset file:///shared/vosges.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 Email:
N/A
Feed Language:
N/A

Files included


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

Counts


  • Agencies: 1
  • Blocks: 286
  • Routes: 16
  • Shapes: 68
  • Stops: 569
  • Trips: 286

Specification Compliance report

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

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 267

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 267 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.
"9880$1025510$15" 46532 29304.0 536 46531 29304.0 535 0.28298519269789246
"9880$1029289$41" 31631 9440.0 151 31630 9440.0 150 0.2115850725463021
"9880$1029289$41" 31911 26175.0 431 31910 26175.0 430 0.14108163107799687
"9880$1024643$53" 51147 2725.0 72 51146 2725.0 71 0.8837902223742516
"9880$1024643$53" 51607 30275.0 532 51606 30275.0 531 0.21186329391102862
"9880$1024643$53" 51641 32363.0 566 51640 32363.0 565 0.5751259411820764
"9880$1024643$53" 51660 33242.0 585 51659 33242.0 584 0.9059015505137445
"9880$1028299$30" 15753 7459.0 173 15752 7459.0 172 0.07100763495341561
"9880$1024630$18" 50890 4475.0 85 50889 4475.0 84 0.8483512930829429
"9880$1024766$23" 6809 6480.0 144 6808 6480.0 143 0.8549154818900546
"9880$1024766$23" 6813 6496.0 148 6812 6496.0 147 0.8599863671186749
"9880$1024766$23" 6833 6887.0 168 6832 6887.0 167 0.4299939677481325
"9880$1024766$23" 6834 6887.0 169 6833 6887.0 168 0.07049701236400427
"9880$1024766$23" 6892 10632.0 227 6891 10632.0 226 0.42999960947558064
"9880$1024766$23" 7000 15053.0 335 6999 15053.0 334 0.4470397173594789
"9880$1024766$23" 7003 15068.0 338 7002 15068.0 337 0.5517450846740867
"9880$1024766$23" 7124 19530.0 459 7123 19530.0 458 0.31772980551012614
"9880$1024766$23" 7295 29071.0 630 7294 29071.0 629 0.07068570991975727
"9880$1030702$34" 23993 14165.0 307 23992 14165.0 306 0.14053298839682551
"9880$1029287$7" 34756 30970.0 514 34755 30970.0 513 0.2115850725463021
"9880$1029287$7" 34830 35227.0 588 34829 35227.0 587 0.07053223213215194
"9880$1028525$32" 19261 13214.0 473 19260 13214.0 472 0.07083674580774244
"9880$1028525$32" 19348 18857.0 560 19347 18857.0 559 0.4744129976902409
"9880$1028525$32" 19586 28220.0 798 19585 28220.0 797 0.42417565290738923
"9880$1028525$32" 19784 37422.0 996 19783 37422.0 995 0.49109227910127173
"9880$1024675$12" 42411 9025.0 243 42410 9025.0 242 0.4300248934460594
"9880$1024675$12" 42545 15802.0 377 42544 15802.0 376 0.5523175384703586
"9880$1024675$12" 42584 17997.0 416 42583 17997.0 415 0.4300373975692013
"9880$1024675$12" 42686 27030.0 518 42685 27030.0 517 0.2124918258660378
"9880$1024675$12" 42770 30894.0 602 42769 30894.0 601 0.5101554968272182
"9880$1024675$12" 42773 30896.0 605 42772 30896.0 604 0.3542898200388145
"9880$1024675$12" 42775 30897.0 607 42774 30897.0 606 0.2125738763240602
"9880$1024675$12" 42776 30897.0 608 42775 30897.0 607 0.1417159181007753
"9880$1024675$12" 42777 30897.0 609 42776 30897.0 608 0.4596795573602539
"9880$1024675$12" 42779 30898.0 611 42778 30898.0 610 0.21257386062483075
"9880$1024675$12" 42780 30898.0 612 42779 30898.0 611 0.4300532806090943
"9880$1024675$12" 42781 30898.0 613 42780 30898.0 612 0.24800281843000113
"9880$1024675$12" 42782 30898.0 614 42781 30898.0 613 0.17714487059409767
"9880$1024675$12" 42784 30899.0 616 42783 30899.0 615 0.5101554267872962
"9880$1024675$12" 42785 30899.0 617 42784 30899.0 616 0.07085794323299979
"9880$1024675$12" 42786 30899.0 618 42785 30899.0 617 0.2125738291082118
"9880$1024675$12" 42787 30899.0 619 42786 30899.0 618 0.07085794252405474
"9880$1024675$12" 42790 30901.0 622 42789 30901.0 621 0.21257379759158912
"9880$1024675$12" 42791 30901.0 623 42790 30901.0 622 0.14171586557307522
"9880$1024675$12" 42792 30901.0 624 42791 30901.0 623 0.6261435425727198
"9880$1024675$12" 42794 30902.0 626 42793 30902.0 625 0.0708579222809953
"9880$1024675$12" 42795 30902.0 627 42794 30902.0 626 0.6261434857639522
"9880$1024675$12" 42798 30904.0 630 42797 30904.0 629 0.5314342966160265
"9880$1024758$45" 39722 11659.0 182 39721 11659.0 181 0.24743512858139927
"9880$1024758$45" 40087 28957.0 547 40086 28957.0 546 0.9186611974905746
leading_or_trailing_whitespaces WARNING 27

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" 36 "stop_name" "SAINT-NABORD - 24 Rue du Centre "
"stops.txt" 37 "stop_name" "SAINT-NABORD - 24 Rue du Centre "
"stops.txt" 118 "stop_name" "SAINT-NABORD - Longuet-24 Rue de Sous Froid "
"stops.txt" 119 "stop_name" "SAINT-NABORD - Longuet-24 Rue de Sous Froid "
"stops.txt" 180 "stop_name" "SAINT-AME - 58 Rte de Celles "
"stops.txt" 181 "stop_name" "SAINT-AME - 58 Rte de Celles "
"stops.txt" 186 "stop_name" "SAULXURES-SUR-MOSELOTTE - 237 Av Jules Ferry "
"stops.txt" 187 "stop_name" "SAULXURES-SUR-MOSELOTTE - 237 Av Jules Ferry "
"stops.txt" 190 "stop_name" "25 Rue de Chaumont "
"stops.txt" 243 "stop_name" "BAUDRICOURT - Lavoir RD "
"stops.txt" 244 "stop_name" "BAUDRICOURT - Lavoir RD "
"stops.txt" 245 "stop_name" "Lavoir DOMVALLIER "
"stops.txt" 344 "stop_name" "CONTREXEVILLE - Centre "
"stops.txt" 345 "stop_name" "CONTREXEVILLE - Centre "
"stops.txt" 385 "stop_name" "LES FORGES - 10 Rue de Golbey "
"stops.txt" 398 "stop_name" "GERARDMER - 291 Route d'Epinal "
"stops.txt" 399 "stop_name" "GERARDMER - 291 Route d'Epinal "
"stops.txt" 434 "stop_name" "MATTAINCOURT - 2 Rue du Gal de Gaulle "
"stops.txt" 435 "stop_name" "MATTAINCOURT - 2 Rue du Gal de Gaulle "
"stops.txt" 455 "stop_name" "SAINT-NABORD - Longuet -34 Rue de Sous Froid "
"stops.txt" 456 "stop_name" "SAINT-NABORD - Longuet -34 Rue de Sous Froid "
"stops.txt" 463 "stop_name" "SAINT-NABORD - 49 Rue du Centre "
"stops.txt" 464 "stop_name" "SAINT-NABORD - 49 Rue du Centre "
"stops.txt" 465 "stop_name" "SANCHEY - 10 Route des Vosges "
"stops.txt" 466 "stop_name" "SANCHEY - 10 Route des Vosges "
"stops.txt" 493 "stop_name" "UXEGNEY - 27/29 Route des Forges "
"stops.txt" 494 "stop_name" "UXEGNEY - 27/29 Route des Forges "
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 27

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.
"routes.txt" "route_long_name" "11 - EPINAL / REMIREMONT" 2
"routes.txt" "route_long_name" "12 - REMIREMONT / GERARDMER" 3
"routes.txt" "route_long_name" "13 - GERARDMER / MUNSTER" 4
"routes.txt" "route_long_name" "10 - NEUFCHATEAU / MIRECOURT / EPINAL" 5
"routes.txt" "route_long_name" "17 - ST-DIE-DES-VOSGES / GERARDMER" 6
"routes.txt" "route_long_name" "28 - GERARDMER / BRUYERES" 7
"routes.txt" "route_long_name" "29 - EPINAL / GERARDMER" 8
"routes.txt" "route_long_name" "4 - EPINAL / MONTHUREUX-SUR-SAONE" 9
"routes.txt" "route_long_name" "42 - NEUFCHATEAU / CHAUMONT" 10
"routes.txt" "route_long_name" "6 - LE VAL-D-AJOL / REMIREMONT" 11
"routes.txt" "route_long_name" "7 - EPINAL / RAMBERVILLERS" 12
"routes.txt" "route_long_name" "9 - EPINAL / VITTEL / CONTREXEVILLE" 13
"routes.txt" "route_long_name" "MONTHUREUX / CONTREXEVILLE / VITTEL" 14
"routes.txt" "route_long_name" "3 - REMIREMONT / LA BRESSE" 15
"routes.txt" "route_long_name" "2 - REMIREMONT / BUSSANG" 16
"routes.txt" "route_long_name" "8 - LUNEVILLE / JEANMENIL FRAISPERTUIS" 17
"stops.txt" "stop_name" "MOYEN - TER" 95
"stops.txt" "stop_name" "MOYEN - TER" 96
"stops.txt" "stop_name" "MOYEN - TER" 97
"stops.txt" "stop_name" "LIFFOL-LE-PETIT - RD 674" 160
"stops.txt" "stop_name" "LIFFOL-LE-PETIT - RD 674" 161
"stops.txt" "stop_name" "LAVELINE-DEVANT-BRUYERES - 3 rue de la gare" 422
"stops.txt" "stop_name" "LAVELINE-DEVANT-BRUYERES - 3 rue de la gare" 423
"stops.txt" "stop_name" "VALFROICOURT - RD 165" 505
"stops.txt" "stop_name" "VALFROICOURT - RD 165" 506
"stops.txt" "stop_name" "MANOIS - EHPAD" 521
"stops.txt" "stop_name" "MANOIS - EHPAD" 522
unexpected_enum_value WARNING 16

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" 204
"routes.txt" 3 "route_type" 204
"routes.txt" 4 "route_type" 204
"routes.txt" 5 "route_type" 204
"routes.txt" 6 "route_type" 204
"routes.txt" 7 "route_type" 204
"routes.txt" 8 "route_type" 204
"routes.txt" 9 "route_type" 204
"routes.txt" 10 "route_type" 204
"routes.txt" 11 "route_type" 204
"routes.txt" 12 "route_type" 204
"routes.txt" 13 "route_type" 204
"routes.txt" 14 "route_type" 204
"routes.txt" 15 "route_type" 204
"routes.txt" 16 "route_type" 204
"routes.txt" 17 "route_type" 204