gtfs-sankeo — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-03-24T02:24:08Z,
for the dataset file:///shared/gtfs-sankeo_31ec6f1b.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Mecatran
Feed Email:
support@mecatran.com
Feed Language:
French
Feed Start Date:
2026-03-23
Feed End Date:
2026-04-05

Files included


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

Counts


  • Agencies: 1
  • Blocks: 128
  • Routes: 45
  • Shapes: 417
  • Stops: 1681
  • Trips: 7578

Specification Compliance report

3541 notices reported (0 errors, 3539 warnings, 2 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 2940

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 2940 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.
"L2P95" 152653 44.0 10 152652 44.0 9 0.01961039389325051
"L2P95" 152770 3155.0 127 152769 3155.0 126 0.5645852860995553
"L4P32" 168699 1193.0 82 168698 1193.0 81 0.3115757439697047
"L4P32" 169007 5958.0 390 169006 5958.0 389 0.4288244285035286
"L4P32" 169015 5984.0 398 169014 5984.0 397 0.11690819404879968
"L4P32" 169038 6143.0 421 169037 6143.0 420 0.7546784664035228
"L4P32" 169072 6655.0 455 169071 6655.0 454 0.4676426499023499
"L4P32" 169176 8977.0 559 169175 8977.0 558 0.33109797656249834
"L4P32" 169430 15472.0 813 169429 15472.0 812 0.42657250966350957
"L4P32" 169451 15743.0 834 169450 15743.0 833 0.27292939341593075
"L4P32" 169494 16399.0 877 169493 16399.0 876 0.019611974937323903
"L4P32" 169561 17227.0 944 169560 17227.0 943 0.4838345079152623
"L4P32" 169603 17991.0 986 169602 17991.0 985 0.03840209027272292
"L4P32" 169618 18258.0 1001 169617 18258.0 1000 0.45119916607047256
"L4P32" 169653 18720.0 1036 169652 18720.0 1035 0.27288432906132043
"L4P32" 169713 20356.0 1096 169712 20356.0 1095 0.13642989454258556
"L4P32" 169785 21434.0 1168 169784 21434.0 1167 0.6036220201910247
"L4P32" 169862 22619.0 1245 169861 22619.0 1244 0.5251995340719996
"L4P31" 167530 1193.0 82 167529 1193.0 81 0.3115757439697047
"L4P31" 167824 6017.0 376 167823 6017.0 375 0.5499841219415871
"L4P31" 167899 7645.0 451 167898 7645.0 450 0.33109797656249834
"L4P31" 167939 8480.0 491 167938 8480.0 490 0.03923897015659207
"L4P31" 168153 14140.0 705 168152 14140.0 704 0.42657250966350957
"L4P31" 168174 14411.0 726 168173 14411.0 725 0.27292939341593075
"L4P31" 168217 15067.0 769 168216 15067.0 768 0.019611974937323903
"L4P31" 168284 15895.0 836 168283 15895.0 835 0.4838345079152623
"L4P31" 168326 16659.0 878 168325 16659.0 877 0.03840209027272292
"L4P31" 168341 16926.0 893 168340 16926.0 892 0.45119916607047256
"L4P31" 168376 17388.0 928 168375 17388.0 927 0.27288432906132043
"L4P31" 168436 19024.0 988 168435 19024.0 987 0.13642989454258556
"L4P31" 168449 19179.0 1001 168448 19179.0 1000 0.4664806935737626
"L4P31" 168453 19194.0 1005 168452 19194.0 1004 0.4287071919793047
"L4P31" 168482 19758.0 1034 168481 19758.0 1033 0.31205895514374093
"L4P31" 168585 21287.0 1137 168584 21287.0 1136 0.5251995340719996
"L2P93" 151467 44.0 10 151466 44.0 9 0.01961039389325051
"L2P93" 151584 3155.0 127 151583 3155.0 126 0.5645852860995553
"L2P93" 152041 12697.0 584 152040 12697.0 583 0.4318102532784407
"L2P93" 152119 15251.0 662 152118 15251.0 661 0.48395519793217856
"L2P93" 152162 15866.0 705 152161 15866.0 704 0.8706505258123651
"L2P93" 152254 17315.0 797 152253 17315.0 796 0.039266783577600765
"L2P93" 152287 18179.0 830 152286 18179.0 829 0.42521889525881607
"L2P93" 152325 18597.0 868 152324 18597.0 867 0.42521889525881607
"L2P93" 152336 18976.0 879 152335 18976.0 878 0.0589039046242532
"L4P30" 166445 1193.0 82 166444 1193.0 81 0.3115757439697047
"L4P30" 166739 6017.0 376 166738 6017.0 375 0.5499841219415871
"L4P30" 166770 7027.0 407 166769 7027.0 406 0.03923897015659207
"L4P30" 166984 12687.0 621 166983 12687.0 620 0.42657250966350957
"L4P30" 167005 12958.0 642 167004 12958.0 641 0.27292939341593075
"L4P30" 167048 13614.0 685 167047 13614.0 684 0.019611974937323903
"L4P30" 167115 14442.0 752 167114 14442.0 751 0.4838345079152623
equal_shape_distance_same_coordinates WARNING 244

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 244 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`.
"L4P32" 168690 1174.0 73 168689 1174.0 72
"L4P32" 169096 7335.0 479 169095 7335.0 478
"L4P32" 169496 16423.0 879 169495 16423.0 878
"L4P32" 169800 21722.0 1183 169799 21722.0 1182
"L4P32" 169825 22099.0 1208 169824 22099.0 1207
"L4P31" 167521 1174.0 73 167520 1174.0 72
"L4P31" 167819 6003.0 371 167818 6003.0 370
"L4P31" 168219 15091.0 771 168218 15091.0 770
"L4P31" 168523 20390.0 1075 168522 20390.0 1074
"L4P31" 168548 20767.0 1100 168547 20767.0 1099
"L4P30" 166436 1174.0 73 166435 1174.0 72
"L4P30" 166734 6003.0 371 166733 6003.0 370
"L4P30" 167050 13638.0 687 167049 13638.0 686
"L4P30" 167354 18937.0 991 167353 18937.0 990
"L4P30" 167379 19314.0 1016 167378 19314.0 1015
"L4P39" 176783 18370.0 855 176782 18370.0 854
"L4P39" 177313 29281.0 1385 177312 29281.0 1384
"L4P39" 177414 30791.0 1486 177413 30791.0 1485
"L4P38" 175784 9462.0 440 175783 9462.0 439
"L4P38" 175885 10972.0 541 175884 10972.0 540
"L4P36" 174670 6508.0 383 174669 6508.0 382
"L4P36" 175200 17418.0 913 175199 17418.0 912
"L4P36" 175301 18928.0 1014 175300 18928.0 1013
"L4P35" 172802 1174.0 73 172801 1174.0 72
"L4P35" 173100 6003.0 371 173099 6003.0 370
"L4P35" 173416 13638.0 687 173415 13638.0 686
"L4P35" 173720 18937.0 991 173719 18937.0 990
"L4P35" 173745 19314.0 1016 173744 19314.0 1015
"L4P34" 171609 1174.0 73 171608 1174.0 72
"L4P34" 172015 7335.0 479 172014 7335.0 478
"L4P34" 172331 14970.0 795 172330 14970.0 794
"L4P34" 172635 20269.0 1099 172634 20269.0 1098
"L4P34" 172660 20646.0 1124 172659 20646.0 1123
"L4P33" 169967 1174.0 73 169966 1174.0 72
"L4P33" 170265 6003.0 371 170264 6003.0 370
"L4P33" 170665 15091.0 771 170664 15091.0 770
"L4P33" 170969 20390.0 1075 170968 20390.0 1074
"L4P33" 170994 20767.0 1100 170993 20767.0 1099
"LNCANP8" 294956 1314.0 46 294955 1314.0 45
"LNCANP9" 296008 5293.0 342 296007 5293.0 341
"L12EXP3" 50811 6570.0 362 50810 6570.0 361
"L12EXP4" 51718 11318.0 462 51717 11318.0 461
"L4P43" 178094 6508.0 383 178093 6508.0 382
"L4P43" 178710 18622.0 999 178709 18622.0 998
"L4P43" 178811 20132.0 1100 178810 20132.0 1099
"L4P47" 179754 2957.0 186 179753 2957.0 185
"L4P47" 180052 7786.0 484 180051 7786.0 483
"L4P47" 180368 15421.0 800 180367 15421.0 799
"L4P47" 180672 20720.0 1104 180671 20720.0 1103
"L4P47" 180697 21097.0 1129 180696 21097.0 1128
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 "20260324" "20260405" "20260423"
mixed_case_recommended_field WARNING 14

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_short_name" "2ex" 3
"routes.txt" "route_long_name" "2EX" 3
"routes.txt" "route_short_name" "3ex" 5
"routes.txt" "route_long_name" "3EX" 5
"routes.txt" "route_short_name" "4ex" 7
"routes.txt" "route_long_name" "4EX" 7
"routes.txt" "route_short_name" "5ex" 9
"routes.txt" "route_long_name" "5EX" 9
"routes.txt" "route_short_name" "6ex" 11
"routes.txt" "route_long_name" "6EX" 11
"routes.txt" "route_short_name" "9ex" 15
"routes.txt" "route_long_name" "9EX" 15
"routes.txt" "route_long_name" "10EX" 17
"routes.txt" "route_long_name" "12EX" 20
non_ascii_or_non_printable_char WARNING 46

non_ascii_or_non_printable_char

Non ascii or non printable char in ID field.

A value of a field with type ID contains non ASCII or non printable characters. This is not recommended.

You can see more about this notice here.

filename (?) Name of the faulty file. csvRowNumber (?) Row number of the faulty record. columnName (?) Name of the column where the error occurred. fieldValue (?) Faulty value.
"agency.txt" 2 "agency_id" "Sankéo"
"routes.txt" 2 "agency_id" "Sankéo"
"routes.txt" 3 "agency_id" "Sankéo"
"routes.txt" 4 "agency_id" "Sankéo"
"routes.txt" 5 "agency_id" "Sankéo"
"routes.txt" 6 "agency_id" "Sankéo"
"routes.txt" 7 "agency_id" "Sankéo"
"routes.txt" 8 "agency_id" "Sankéo"
"routes.txt" 9 "agency_id" "Sankéo"
"routes.txt" 10 "agency_id" "Sankéo"
"routes.txt" 11 "agency_id" "Sankéo"
"routes.txt" 12 "agency_id" "Sankéo"
"routes.txt" 13 "agency_id" "Sankéo"
"routes.txt" 14 "agency_id" "Sankéo"
"routes.txt" 15 "agency_id" "Sankéo"
"routes.txt" 16 "agency_id" "Sankéo"
"routes.txt" 17 "agency_id" "Sankéo"
"routes.txt" 18 "agency_id" "Sankéo"
"routes.txt" 19 "agency_id" "Sankéo"
"routes.txt" 20 "agency_id" "Sankéo"
"routes.txt" 21 "agency_id" "Sankéo"
"routes.txt" 22 "agency_id" "Sankéo"
"routes.txt" 23 "agency_id" "Sankéo"
"routes.txt" 24 "agency_id" "Sankéo"
"routes.txt" 25 "agency_id" "Sankéo"
"routes.txt" 26 "agency_id" "Sankéo"
"routes.txt" 27 "agency_id" "Sankéo"
"routes.txt" 28 "agency_id" "Sankéo"
"routes.txt" 29 "agency_id" "Sankéo"
"routes.txt" 30 "agency_id" "Sankéo"
"routes.txt" 31 "agency_id" "Sankéo"
"routes.txt" 32 "agency_id" "Sankéo"
"routes.txt" 33 "agency_id" "Sankéo"
"routes.txt" 34 "agency_id" "Sankéo"
"routes.txt" 35 "agency_id" "Sankéo"
"routes.txt" 36 "agency_id" "Sankéo"
"routes.txt" 37 "agency_id" "Sankéo"
"routes.txt" 38 "agency_id" "Sankéo"
"routes.txt" 39 "agency_id" "Sankéo"
"routes.txt" 40 "agency_id" "Sankéo"
"routes.txt" 41 "agency_id" "Sankéo"
"routes.txt" 42 "agency_id" "Sankéo"
"routes.txt" 43 "agency_id" "Sankéo"
"routes.txt" 44 "agency_id" "Sankéo"
"routes.txt" 45 "agency_id" "Sankéo"
"routes.txt" 46 "agency_id" "Sankéo"
route_long_name_contains_short_name WARNING 33

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`.
"1" 2 "1" "1"
"2EX" 3 "2ex" "2EX"
"2" 4 "2" "2"
"3EX" 5 "3ex" "3EX"
"3" 6 "3" "3"
"4EX" 7 "4ex" "4EX"
"4" 8 "4" "4"
"5EX" 9 "5ex" "5EX"
"5" 10 "5" "5"
"6EX" 11 "6ex" "6EX"
"6" 12 "6" "6"
"7" 13 "7" "7"
"8" 14 "8" "8"
"9EX" 15 "9ex" "9EX"
"9" 16 "9" "9"
"10" 18 "10" "10"
"11" 19 "11" "11"
"15" 21 "15" "15"
"16" 22 "16" "16"
"17" 23 "17" "17"
"18" 24 "18" "18"
"19" 25 "19" "19"
"20" 26 "20" "20"
"21" 27 "21" "21"
"22" 28 "22" "22"
"23" 29 "23" "23"
"24" 30 "24" "24"
"25" 31 "25" "25"
"26" 32 "26" "26"
"A" 33 "A" "A"
"B" 34 "B" "B"
"C" 35 "C" "C"
"D" 36 "D" "D"
stop_without_stop_time WARNING 59

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 59 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.
590 "0:CNaliz1" "Alizés"
591 "0:CNaliz2" "Alizés"
596 "0:MAaloe3" "Aloès"
615 "0:PEarch1" "Archers"
616 "0:PEarch2" "Archers"
619 "0:PEarde3" "Ardennes"
661 "0:PEbarc1" "Barcarolles"
662 "0:PEbarc2" "Barcarolles"
710 "0:CYcabe1" "Cabestany"
711 "0:CYcabe3" "Cabestany"
722 "0:NAcamp1" "Camping"
723 "0:NAcamp2" "Camping"
730 "0:CNcent4" "Canet CC"
735 "0:CNcpla3" "Canet Plage"
748 "0:LBcapc" "Cap Coudalère"
825 "0:PEcims1" "Cimetière Sud"
930 "0:FAURdep" "Dépôt FAUR"
931 "0:Depot" "Dépôt Sankeo"
932 "0:Scania" "Dépôt Sankeo"
952 "0:EVCdep" "Evasion Catalane"
989 "0:PEglio1" "Gare multimodale liO"
995 "0:PEgare4" "Gare TGV"
1000 "0:RIgcdr1" "Gd Circuit du Rouss."
1040 "0:LBhour1" "Hourtou"
1041 "0:LBhour2" "Hourtou"
1049 "0:SAhote3" "Hôtel de Ville"
1050 "0:SAhote4" "Hôtel de Ville"
1118 "0:PElasc3" "Las Cobas"
1119 "0:PElasc4" "Las Cobas"
1146 "0:NAlesf1" "Les Fontaines"
1147 "0:NAlesf2" "Les Fontaines"
1156 "0:CNleva1" "Levant"
1157 "0:CNleva2" "Levant"
1185 "0:PElmai2" "Lycée Maillol"
1188 "0:PElmai5" "Lycée Maillol"
1261 "0:PEmstp3" "Mas St-Pierre"
1262 "0:PEmstp4" "Mas St-Pierre"
1263 "0:PEmstp5" "Mas St-Pierre"
1275 "0:PEmass6" "Massilia"
1307 "0:CNmoud1" "Moudat"
1308 "0:CNmoud2" "Moudat"
1316 "0:PEmoul3" "Moulin à Vent"
1317 "0:PEmoul4" "Moulin à Vent"
1347 "0:PEocci3" "Occitanie"
1348 "0:PEocci4" "Occitanie"
1378 "0:BOparc3" "Parc des Loisirs"
1379 "0:BOparc4" "Parc des Loisirs"
1384 "0:PEpspo5" "Parc des Sports"
1393 "0:PEpwil1" "Parking Wilson"
1421 "0:PEplac1" "Place Rigaud"
unused_shape WARNING 202

unused_shape

Shape is not used in GTFS file trips.txt.

All records defined by GTFS shapes.txt should be used in trips.txt.

You can see more about this notice here.

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

shapeId (?) The faulty record's id. csvRowNumber (?) The row number of the faulty record.
"0_A1" 2
"0_A2" 140
"0_R1" 274
"0_R2" 451
"L10EXP1" 546
"L10EXP2" 1345
"L10P49" 5162
"L10P51" 7196
"L10P52" 8269
"L10P53" 9176
"L10P55" 11016
"L10P56" 11873
"L10P62" 12900
"L10P63" 14098
"L10P64" 15125
"L10P65" 16458
"L10P66" 17596
"L10P67" 18900
"L10P68" 20150
"L10P69" 21439
"L10P70" 22457
"L10P71" 23678
"L10P72" 25019
"L10P76" 26194
"L10P77" 27279
"L10P78" 28439
"L10P79" 29564
"L10P80" 30612
"L10P81" 31672
"L10P82" 32886
"L10P83" 33780
"L10P84" 35014
"L10P85" 35951
"L10P86" 36900
"L10P87" 37923
"L10P88" 39054
"L12EXP17" 48725
"L12EXP18" 49588
"L16P10" 53554
"L16P19" 54548
"L16P28" 55447
"L16P29" 55825
"L16P30" 56196
"L16P34" 56910
"L16P36" 57288
"L16P37" 57971
"L16P38" 58926
"L16P39" 59701
"L16P8" 65311
"L16P9" 66152
unknown_column INFO 2

unknown_column

A column name is unknown.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the unknown column. index (?) The index of the faulty column.
"stops.txt" "vehicle_type" 12
"calendar.txt" "service_name" 11