tul2 — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-06-19T15:41:38Z,
for the dataset file:///shared/tul2_f295d5d4.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
TUL
Publisher URL:
http://www.tul-laon.fr
Feed Email:
N/A
Feed Language:
French
Feed Start Date:
2026-06-05
Feed End Date:
2026-08-31

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: 0
  • Blocks: 103
  • Routes: 7
  • Shapes: 30
  • Stops: 136
  • Trips: 417

Specification Compliance report

1090 notices reported (0 errors, 1006 warnings, 84 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 26

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.
"21564" 8303 7.267 130041 8302 7.267 130040 0.11119510161714974
"21549" 7686 7.267 130041 7685 7.267 130040 0.11119510161714974
"42787" 16747 10.859 160032 16746 10.859 160031 0.11119510161714974
"22577" 5617 4.785 100002 5616 4.785 100001 0.14420232503554856
"22577" 5736 7.135 130026 5735 7.135 130025 0.11119510161714974
"22578" 6408 7.267 130041 6407 7.267 130040 0.11119510161714974
"22709" 9084 4.785 100002 9083 4.785 100001 0.14420232503554856
"22709" 9203 7.135 130026 9202 7.135 130025 0.11119510161714974
"31715" 13448 4.667 20241 13447 4.667 20240 0.11119510161714974
"31715" 14413 25.015 290026 14412 25.015 290025 0.11119510161714974
"11187" 3654 11.816 250026 3653 11.816 250025 0.11119510161714974
"31714" 15110 12.276 140026 15109 12.276 140025 0.11119510161714974
"100953" 12310 1.41 50002 12309 1.41 50001 0.14420232503554856
"100777" 12708 3.003 70002 12707 3.003 70001 0.8723299521681109
"31713" 15552 4.667 20241 15551 4.667 20240 0.11119510161714974
"21952" 8872 6.332 130026 8871 6.332 130025 0.11119510161714974
"21551" 10961 6.332 130026 10960 6.332 130025 0.11119510161714974
"43066" 11841 8.587 120032 11840 8.587 120031 0.11119510161714974
"21550" 10343 4.476 110002 10342 4.476 110001 1.0096065354602304
"21550" 10392 5.283 120041 10391 5.283 120040 0.11119510161714974
"22708" 9875 7.267 130041 9874 7.267 130040 0.11119510161714974
"10923" 4349 11.816 250026 4348 11.816 250025 0.11119510161714974
"21807" 7014 6.332 130026 7013 6.332 130025 0.11119510161714974
"11871" 1453 11.816 250026 1452 11.816 250025 0.11119510161714974
"11873" 5044 11.816 250026 5043 11.816 250025 0.11119510161714974
"50821" 12263 4.106 70026 12262 4.106 70025 0.11119510161714974
equal_shape_distance_same_coordinates WARNING 546

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 546 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`.
"41770" 15957 1.717 20001 15956 1.717 10108
"41770" 15989 2.21 30001 15988 2.21 20032
"41770" 16013 2.623 40001 16012 2.623 30024
"41770" 16046 3.105 50001 16045 3.105 40033
"110521" 12812 0.807 20001 12811 0.807 10067
"110521" 12973 4.636 30001 12972 4.636 20161
"110521" 13086 6.378 40001 13085 6.378 30113
"110521" 13118 6.87 50001 13117 6.87 40032
"110521" 13142 7.284 60001 13141 7.284 50024
"21564" 7997 0.482 20001 7996 0.482 10033
"21564" 8122 2.523 30001 8121 2.523 20125
"21564" 8132 2.873 40001 8131 2.873 30010
"21564" 8146 3.29 50001 8145 3.29 40014
"21564" 8163 3.805 60001 8162 3.805 50017
"21564" 8170 4.005 70001 8169 4.005 60007
"21564" 8199 5.192 80001 8198 5.192 70029
"21564" 8213 5.579 90001 8212 5.579 80014
"21564" 8237 5.862 100001 8236 5.862 90024
"21564" 8249 6.237 110001 8248 6.237 100012
"21564" 8253 6.459 120001 8252 6.459 110004
"21564" 8263 6.686 130001 8262 6.686 120010
"21564" 8308 7.338 140001 8307 7.338 130045
"21564" 8366 8.094 150001 8365 8.094 140058
"21564" 8417 8.759 160001 8416 8.759 150051
"21564" 8437 9.291 170001 8436 9.291 160020
"21564" 8452 9.766 180001 8451 9.766 170015
"21564" 8467 10.114 190001 8466 10.114 180015
"21564" 8478 10.418 200001 8477 10.418 190011
"21564" 8483 10.783 210001 8482 10.783 200005
"21564" 8490 11.093 220001 8489 11.093 210007
"21564" 8509 11.654 230001 8508 11.654 220019
"21564" 8521 12.041 240001 8520 12.041 230012
"21564" 8548 12.504 250001 8547 12.504 240027
"21564" 8558 12.923 260001 8557 12.923 250010
"10909" 60 0.756 20001 59 0.756 10058
"10909" 125 1.286 30001 124 1.286 20065
"10909" 134 1.653 40001 133 1.653 30009
"10909" 157 2.133 50001 156 2.133 40023
"10909" 178 2.478 60001 177 2.478 50021
"10909" 203 2.959 70001 202 2.959 60025
"10909" 211 3.208 80001 210 3.208 70008
"10909" 222 3.43 90001 221 3.43 80011
"10909" 230 3.668 100001 229 3.668 90008
"10909" 236 3.944 110001 235 3.944 100006
"10909" 253 4.24 120001 252 4.24 110017
"10909" 274 4.571 130001 273 4.571 120021
"10909" 334 5.145 140001 333 5.145 130060
"10909" 367 5.845 150001 366 5.845 140033
"10909" 387 6.229 160001 386 6.229 150020
"10909" 394 6.477 170001 393 6.477 160007
leading_or_trailing_whitespaces WARNING 8

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.
"agency.txt" 2 "agency_id" " "
"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" " "
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
service_has_no_active_day_of_the_week WARNING 25

service_has_no_active_day_of_the_week

A service is not valid for any day of the week.

You can see more about this notice here.

csvRowNumber (?) The row number in calendar.txt where the error occurs. serviceId (?) The service_id field value.
2 "1_AN-Lun-Sam-12-LAON_3-1111100-"
3 "1_AN-Lun-Sam-12-LAON_3-1111110-"
4 "1_AN-Lun-Sam-79-LAON_3-1111110-"
5 "1_DIM-Dimanche-77-LAON_3-0000001-"
6 "1_PS-Lun-Sam-12-LAON_3-1111100-"
7 "2_AN-Samedi-31-LAON_3-0000010-"
8 "2_AN-Semaine-12-LAON_3-1111100-"
9 "2_DIM-Dimanche-77-LAON_3-0000001-"
10 "2_ETE-Samedi-71-LAON_3-1111110-"
11 "2_ETE-Semaine-0-LAON_3-1111110-"
12 "2_PS-Lun-Sam-12-LAON_3-0010000-"
13 "2_PS-Lun-Sam-12-LAON_3-1101100-"
14 "2_PS-Lun-Sam-12-LAON_3-1111100-"
15 "4_DIM-Dimanche-15-LAON_3-0000001-"
16 "5_AN-Semaine-1-LAON_3-1111100-"
17 "5_AN-Semaine-79-LAON_3-1111100-"
18 "L-4-Semaine-24-LAON_3-1111100-"
19 "L-4-Semaine-25-LAON_3-1111110-"
20 "L10-Semaine-4-LAON_3-1101100-"
21 "L10-Semaine-4-LAON_3-1111100-"
22 "L11-Semaine-4-LAON_3-1111100-"
23 "L3-Semaine-4-LAON_3-1111110-"
24 "L3-Semaine-5-LAON_3-1101100-"
25 "L3-Semaine-5-LAON_3-1111100-"
26 "L3-Semaine-79-LAON_3-1111110-"
stop_too_far_from_shape_using_user_distance WARNING 34

stop_too_far_from_shape_using_user_distance

Stop time too far from shape.

A stop time entry that is a large distance away from the location of the shape in shapes.txt as defined by shape_dist_traveled values.

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.
9 "31715" "15075418" 124 "laocla2" "Bois Charron" [49.546179333572695,3.5857286658524754] 198.8706560306023
9 "31715" "15075418" 125 "laolly2" "Semilly" [49.5517678333405,3.6088828889101134] 224.82794336527155
9 "31715" "15075418" 126 "laorom2" "Romanette" [49.54974028144712,3.61675632074485] 225.8587642868393
9 "31715" "15075418" 127 "laopom1" "Pompidou" [49.55281367759761,3.6242575804814634] 224.7186586680026
9 "31715" "15075418" 128 "laocim1" "Cimetiere d'Ardon" [49.54903724508641,3.627798122652472] 219.133529094239
9 "31715" "15075418" 129 "laopla1" "Place d'Ardon" [49.550615486855136,3.6292420266044005] 226.41398178017727
9 "31715" "15075418" 130 "laoche1" "Cheval Blanc" [49.554914333423,3.6290828887857387] 213.23275694727138
9 "31715" "15075418" 131 "laopal2" "Palais des Sports" [49.55867852756223,3.6364810284654396] 226.88142781352204
9 "31715" "15075418" 132 "laosta2" "Stade" [49.563421666669115,3.636681333315492] 214.23156246344143
9 "31715" "15075418" 133 "laodou2" "Douanes" [49.56594127272755,3.6361072727188213] 191.96652197681118
9 "31715" "15075418" 134 "laochu1" "Churchill" [49.568869157973154,3.636673420592068] 220.74145954780474
9 "31715" "15075418" 135 "laogen2" "Gendarmerie" [49.57080700000001,3.636555] 179.8179623355881
9 "31715" "15075418" 136 "laogra2" "Gras Brancourt" [49.57062428045278,3.6288863999876066] 226.49663527179493
9 "31715" "15075418" 137 "laogar1" "Gare" [49.568405794655725,3.623944151483566] 184.1764240816256
9 "31715" "15075418" 138 "laogam1" "Gambetta" [49.56517900001304,3.6182969999695844] 204.4960116426235
9 "31715" "15075418" 139 "laoken2" "Kennedy" [49.564964352967166,3.6117366470690735] 224.1239232028461
18 "31714" "15075427" 406 "laocla2" "Bois Charron" [49.552081589453685,3.605082374375242] 1720.8739511767196
18 "31714" "15075427" 407 "laolly2" "Semilly" [49.55262152631988,3.62779626313775] 1520.4779891003207
18 "31714" "15075427" 408 "laorom2" "Romanette" [49.549218200024626,3.627092800036524] 973.6964789661624
18 "31714" "15075427" 409 "laopom1" "Pompidou" [49.55320700000002,3.628709999997707] 546.1386445183223
18 "31714" "15075427" 410 "laocim1" "Cimetiere d'Ardon" [49.561886180121505,3.6376334806494253] 1647.7391903541022
18 "31714" "15075427" 411 "laopla1" "Place d'Ardon" [49.56468614286011,3.636190714294744] 1852.9467476122002
18 "31714" "15075427" 412 "laoche1" "Cheval Blanc" [49.56886915797316,3.6366734205920688] 1852.723262948287
18 "31714" "15075427" 413 "laopal2" "Palais des Sports" [49.57072757789709,3.6310423843518187] 1504.9516724999585
18 "31714" "15075427" 414 "laosta2" "Stade" [49.56833486607297,3.623929794606677] 1251.395862567474
18 "31714" "15075427" 415 "laodou2" "Douanes" [49.56659961541568,3.627214615383011] 734.6434312516568
18 "31714" "15075427" 416 "laochu1" "Churchill" [49.5667180000019,3.631272000013765] 352.5972691116355
18 "31714" "15075427" 417 "laogen2" "Gendarmerie" [49.56579256047586,3.6280968123901953] 751.404138027486
18 "31714" "15075427" 418 "laogra2" "Gras Brancourt" [49.56545237549476,3.6208374993043955] 1004.5655777698552
18 "31714" "15075427" 419 "laogar1" "Gare" [49.56476899999999,3.613935] 982.2489386896935
18 "31714" "15075427" 420 "laogam1" "Gambetta" [49.56481300000001,3.6095129999999997] 837.4522099872182
18 "31714" "15075427" 421 "laoken2" "Kennedy" [49.56481300000001,3.6095129999999997] 383.89366265500433
164 "50817" "15425785" 4282 "laomsa1" "MSA" [49.57927361213474,3.6546333931079285] 121.00306849431338
164 "50817" "15425785" 4283 "laozola1" "ZOLA" [49.58272688383402,3.653978372652201] 168.9680909376113
trip_distance_exceeds_shape_distance_below_threshold WARNING 366

trip_distance_exceeds_shape_distance_below_threshold

The distance between the last shape point and last stop point is greater than 0 but less than the 11.1m threshold.

You can see more about this notice here.

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

tripId (?) The faulty record's trip id. shapeId (?) The faulty record's shape id. maxTripDistanceTraveled (?) The faulty record's trip max distance traveled. maxShapeDistanceTraveled (?) The faulty record's shape max distance traveled. geoDistanceToShape (?) The distance in meters between the shape and the stop.
"15075254" "21550" 11.348 11.347 6.981570116827908
"15075257" "21551" 14.231 14.23 5.065987731216387
"15075418" "31715" 27.936 27.709 5.065987731216387
"15075419" "31715" 27.936 27.709 5.065987731216387
"15075420" "31715" 27.936 27.709 5.065987731216387
"15075421" "31715" 27.936 27.709 5.065987731216387
"15075422" "31715" 27.936 27.709 5.065987731216387
"15075423" "31715" 27.936 27.709 5.065987731216387
"15075424" "31715" 27.936 27.709 5.065987731216387
"15075425" "31715" 27.936 27.709 5.065987731216387
"15075426" "31715" 27.936 27.709 5.065987731216387
"15075427" "31714" 17.245 14.97 5.065987731216387
"15075430" "31713" 9.789 9.759 6.939439262437572
"15075431" "31713" 9.789 9.759 6.939439262437572
"15075441" "10909" 12.232 12.231 5.065987731216387
"15075442" "10909" 12.232 12.231 5.065987731216387
"15075443" "10909" 12.232 12.231 5.065987731216387
"15075444" "10909" 12.232 12.231 5.065987731216387
"15075445" "10909" 12.232 12.231 5.065987731216387
"15075446" "10909" 12.232 12.231 5.065987731216387
"15075447" "10909" 12.232 12.231 5.065987731216387
"15075448" "10909" 12.232 12.231 5.065987731216387
"15075449" "10909" 12.232 12.231 5.065987731216387
"15075450" "10909" 12.232 12.231 5.065987731216387
"15075451" "10909" 12.232 12.231 5.065987731216387
"15075452" "10909" 12.232 12.231 5.065987731216387
"15075453" "10909" 12.232 12.231 5.065987731216387
"15075454" "10909" 12.232 12.231 5.065987731216387
"15075455" "10909" 12.232 12.231 5.065987731216387
"15075456" "10909" 12.232 12.231 5.065987731216387
"15075457" "10909" 12.232 12.231 5.065987731216387
"15075458" "10909" 12.232 12.231 5.065987731216387
"15075459" "10909" 12.232 12.231 5.065987731216387
"15075460" "10909" 12.232 12.231 5.065987731216387
"15075461" "10909" 12.232 12.231 5.065987731216387
"15075462" "10909" 12.232 12.231 5.065987731216387
"15075463" "10909" 12.232 12.231 5.065987731216387
"15075464" "10909" 12.232 12.231 5.065987731216387
"15075465" "10909" 12.232 12.231 5.065987731216387
"15075466" "10909" 12.232 12.231 5.065987731216387
"15075467" "10909" 12.232 12.231 5.065987731216387
"15075468" "10909" 12.232 12.231 5.065987731216387
"15075469" "10909" 12.232 12.231 5.065987731216387
"15075470" "10909" 12.232 12.231 5.065987731216387
"15075471" "10909" 12.232 12.231 5.065987731216387
"15075472" "10909" 12.232 12.231 5.065987731216387
"15075473" "10909" 12.232 12.231 5.065987731216387
"15075474" "10909" 12.232 12.231 5.065987731216387
"15075476" "11871" 11.888 11.887 3.4500639930104176
"15075477" "11871" 11.888 11.887 3.4500639930104176
service_window_outside_feed_period INFO 16

service_window_outside_feed_period

A service window is not covered by the feed's validity period.

You can see more about this notice here.

serviceId (?) The service_id whose active window extends outside the feed validity period. serviceWindowStartDate (?) The first active date of the service window. serviceWindowEndDate (?) The last active date of the service window. daysBeforeFeedStart (?) Number of days the service window extends before feed_start_date (0 if none). daysAfterFeedEnd (?) Number of days the service window extends after feed_end_date (0 if none).
"2_PS-Lun-Sam-12-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"1_AN-Lun-Sam-12-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"1_AN-Lun-Sam-12-LAON_3-1111110-" "2026-06-02" "2026-07-04" 3 0
"L10-Semaine-4-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"5_AN-Semaine-1-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"2_AN-Semaine-12-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"L3-Semaine-4-LAON_3-1111110-" "2026-06-02" "2026-07-04" 3 0
"L10-Semaine-4-LAON_3-1101100-" "2026-06-02" "2026-07-03" 3 0
"L3-Semaine-5-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"1_PS-Lun-Sam-12-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"L3-Semaine-5-LAON_3-1101100-" "2026-06-02" "2026-07-03" 3 0
"L-4-Semaine-25-LAON_3-1111110-" "2026-06-02" "2026-08-31" 3 0
"L11-Semaine-4-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
"2_PS-Lun-Sam-12-LAON_3-1101100-" "2026-06-02" "2026-07-03" 3 0
"2_PS-Lun-Sam-12-LAON_3-0010000-" "2026-06-03" "2026-07-01" 2 0
"L-4-Semaine-24-LAON_3-1111100-" "2026-06-02" "2026-07-03" 3 0
unknown_column INFO 1

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.
"agency.txt" "agency_sort_order" 9
unsorted_stop_times INFO 67

unsorted_stop_times

Stop times are not sorted by trip_id and stop_sequence.

'stop_times.txt' entries for a given trip are not sorted by stop_sequence, or are not contiguous in the file.

You can see more about this notice here.

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

tripId (?) The faulty record's trip_id. startCsvRowNumber (?) CSV row number of the first stop_times entry for this trip. endCsvRowNumber (?) CSV row number of the last stop_times entry for this trip.
"17909403" 4902 4928
"17909401" 4875 4901
"17909406" 4956 4982
"17909404" 4929 4955
"17909410" 5037 5063
"17909413" 5064 5090
"17909417" 5118 5144
"17909415" 5091 5117
"17909409" 5010 5036
"17909408" 4983 5009
"17909419" 5145 5171
"15075512" 2328 2354
"15075514" 2381 2407
"15075516" 2434 2460
"15075519" 2487 2497
"15075468" 1176 1202
"15075469" 1203 1229
"15075464" 1068 1094
"15075465" 1095 1121
"15075466" 1122 1148
"15075467" 1149 1175
"15075460" 960 986
"15075461" 987 1013
"15075462" 1014 1040
"15075463" 1041 1067
"15075475" 1365 1391
"15075471" 1257 1283
"15075472" 1284 1310
"15075473" 1311 1337
"15075474" 1338 1364
"15075470" 1230 1256
"15075446" 582 608
"15075567" 2579 2605
"15075447" 609 635
"15075448" 636 662
"15075449" 663 689
"15075442" 474 500
"15075443" 501 527
"15075564" 2498 2524
"15075444" 528 554
"15075565" 2525 2551
"15075445" 555 581
"15075566" 2552 2578
"15075441" 447 473
"15075457" 879 905
"15075458" 906 932
"15075459" 933 959
"15075453" 771 797
"15075454" 798 824
"15075455" 825 851