xtrafik-se — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-06-20T00:02:35Z,
for the dataset file:///shared/xtrafik-se_31684a4a.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Samtrafiken i Sverige AB
Feed Email:
N/A
Feed Language:
Swedish

Files included


  1. agency.txt
  2. attributions.txt
  3. booking_rules.txt
  4. calendar.txt
  5. calendar_dates.txt
  6. feed_info.txt
  7. routes.txt
  8. shapes.txt
  9. stop_times.txt
  10. stops.txt
  11. transfers.txt
  12. trips.txt

Counts


  • Agencies: 2
  • Blocks: 0
  • Routes: 98
  • Shapes: 646
  • Stops: 6814
  • Trips: 10566

Specification Compliance report

586 notices reported (51 errors, 467 warnings, 68 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates ERROR 3

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.
"1217990000027137131" 292205 4955.43 227 292204 4955.43 226 8.944698033480133
"1217990000034569528" 285015 4955.43 227 285014 4955.43 226 8.944698033480133
"1217990000034569597" 290064 21651.64 1064 290063 21651.64 1063 8.944698033480133
missing_prior_notice_duration_min ERROR 48

missing_prior_notice_duration_min

prior_notice_duration_min value is required for same day booking_type in booking_rules.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. bookingRuleId (?) The `booking_rules.booking_rule_id` of the faulty record.
2 "217990000038617964"
3 "217990000038617981"
4 "217990000038617998"
5 "217990000038618015"
6 "217990000038618032"
7 "217990000040106882"
8 "217990000040106922"
9 "217990000040106962"
10 "217990000040107005"
11 "217990000040107048"
12 "217990000041870901"
13 "217990000041871161"
14 "217990000042052981"
15 "217990000042052998"
16 "217990000042053015"
17 "217990000042053032"
18 "217990000042053063"
19 "217990000043454956"
20 "217990000043864676"
21 "217990000043864704"
22 "217990000043864732"
23 "217990000043864773"
24 "217990000043864808"
25 "217990000043864844"
26 "217990000043864880"
27 "217990000043864915"
28 "217990000043865079"
29 "217990000043865109"
30 "217990000043865137"
31 "217990000043865165"
32 "217990000043865320"
33 "217990000043865355"
34 "217990000043865390"
35 "217990000043865425"
36 "217990000044207981"
37 "217990000044754156"
38 "217990000044754209"
39 "217990000045459973"
40 "217990000045460124"
41 "217990100043864676"
42 "217990100043864704"
43 "217990100043864732"
44 "217990100043864915"
45 "217990100043865079"
46 "217990100043865109"
47 "217990100043865137"
48 "217990100043865165"
49 "217990100043865425"
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 4

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.
"1217990000027137131" 292206 4955.43 228 292205 4955.43 227 1.0165298070510664
"1217990000034569528" 285016 4955.43 228 285015 4955.43 227 1.0165298070510664
"1217990000034569597" 290065 21651.64 1065 290064 21651.64 1064 1.0165298070510664
"1217990000040091467" 836394 102244.51 6035 836393 102244.51 6034 0.05331223786146951
equal_shape_distance_same_coordinates WARNING 1

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.

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`.
"7217990000028850830" 624032 18777.14 722 624031 18777.14 721
expired_calendar WARNING 2

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.
30 "29"
129 "128"
fast_travel_between_consecutive_stops WARNING 5

fast_travel_between_consecutive_stops

A transit vehicle moves too fast between two consecutive stops.

The speed threshold depends on route type:

Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200

You can see more about this notice here.

tripCsvRowNumber (?) The row number of the problematic trip. tripId (?) `trip_id` of the problematic trip. routeId (?) `route_id` of the problematic trip. speedKph (?) Travel speed (km/h). distanceKm (?) Distance between stops (km). csvRowNumber1 (?) The row number of the first stop time. stopSequence1 (?) `stop_sequence` of the first stop. stopId1 (?) `stop_id` of the first stop. stopName1 (?) `stop_name` of the first stop. departureTime1 (?) `departure_time` of the first stop. csvRowNumber2 (?) The row number of the second stop time. stopSequence2 (?) `stop_sequence` of the second stop. stopId2 (?) `stop_id` of the second stop. stopName2 (?) `stop_name` of the second stop. arrivalTime2 (?) `arrival_time` of the second stop.
2863 "217990000040106881" "9011021007800000" 231.88761712114567 3.800380391707665 101712 9 "9022021483333001" "Vallanes" "13:19:11" 101713 10 "9022021483310001" "Laviken" "13:20:10"
7280 "217990000044818238" "9011021077500000" 206.95679028349818 0.5748799730097172 204038 24 "9022021401024002" "Stenbäcken östra" "11:25:00" 204039 25 "9022021401023002" "Stenbäcken västra" "11:25:10"
7280 "217990000044818238" "9011021077500000" 225.6606765161816 0.5641516912904541 204039 25 "9022021401023002" "Stenbäcken västra" "11:25:10" 204040 26 "9022021401018002" "Finnbacken" "11:25:19"
7279 "217990000044818193" "9011021077500000" 206.95679028349818 0.5748799730097172 204001 24 "9022021401024002" "Stenbäcken östra" "09:55:00" 204002 25 "9022021401023002" "Stenbäcken västra" "09:55:10"
7279 "217990000044818193" "9011021077500000" 225.6606765161816 0.5641516912904541 204002 25 "9022021401023002" "Stenbäcken västra" "09:55:10" 204003 26 "9022021401018002" "Finnbacken" "09:55:19"
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"
route_long_name_contains_short_name WARNING 2

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`.
"9011021030000000" 67 "X-tåg" "X-tåg Gävle-Ljusdal"
"9011021030100000" 68 "X-tåg" "X-tåg Gävle-Sundsvall"
service_has_no_active_day_of_the_week WARNING 217

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.

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

csvRowNumber (?) The row number in calendar.txt where the error occurs. serviceId (?) The service_id field value.
2 "1"
3 "2"
4 "3"
5 "4"
6 "5"
7 "6"
8 "7"
9 "8"
10 "9"
11 "10"
12 "11"
13 "12"
14 "13"
15 "14"
16 "15"
17 "16"
18 "17"
19 "18"
20 "19"
21 "20"
22 "21"
23 "22"
24 "23"
25 "24"
26 "25"
27 "26"
28 "27"
29 "28"
30 "29"
31 "30"
32 "31"
33 "32"
34 "33"
35 "34"
36 "35"
37 "36"
38 "37"
39 "38"
40 "39"
41 "40"
42 "41"
43 "42"
44 "43"
45 "44"
46 "45"
47 "46"
48 "47"
49 "48"
50 "49"
51 "50"
stop_too_far_from_shape_using_user_distance WARNING 4

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.
1938 "1217990000038460597" "217990000044715738" 63438 "9022021484335002" "Solbågen" [61.74475396127436,17.111751169894156] 100.31314084655612
1954 "1217990000032202390" "217990000045458858" 64446 "9022021484335002" "Solbågen" [61.74475396127438,17.111751169894156] 100.3131408464535
1971 "1217990000032202534" "217990000044719052" 65512 "9022021484335002" "Solbågen" [61.74475396127436,17.111751169894156] 100.31314084655612
1985 "1217990000033486053" "217990000045458813" 66422 "9022021484335002" "Solbågen" [61.74475396127436,17.111751169894156] 100.31314084655612
stop_without_stop_time WARNING 130

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 130 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.
2402 "9022021401046002" "Gammelboning"
2424 "9022021401061001" "Jon-Jonsvägen"
2463 "9022021401085003" "Ockelbo station"
2466 "9022021401085017" "Ockelbo station"
2467 "9022021401085024" "Ockelbo station"
2468 "9022021401085030" "Ockelbo station"
2469 "9022021401085043" "Ockelbo station"
2529 "9022021401122024" "Lingbo station"
2547 "9022021401138002" "Blomquist"
2552 "9022021401145002" "Sunnanåsbo"
2553 "9022021401146001" "Krutåkersvägen"
2554 "9022021401147001" "Åmot Kiosken"
2557 "9022021401150001" "Åkerby"
2558 "9022021401151001" "Finnstigen"
2559 "9022021401152001" "Äppelbacken"
2560 "9022021401152002" "Äppelbacken"
2921 "9022021432022003" "Gnarp Vallen"
3111 "9022021432131002" "Gnarp station"
3112 "9022021432131003" "Gnarp station"
3123 "9022021432136001" "Bringstaskolan"
3508 "9022021461911001" "Närområde hpl ICA Färila"
3549 "9022021480029030" "Valbo Ikea"
3650 "9022021480092001" "Bergby"
3651 "9022021480092002" "Bergby"
3666 "9022021480106001" "Brisgatan"
3667 "9022021480106002" "Brisgatan"
3684 "9022021480119019" "Gävle Central"
3685 "9022021480119022" "Gävle Central"
3687 "9022021480119025" "Gävle Central"
3688 "9022021480119026" "Gävle Central"
3689 "9022021480119030" "Gävle Central"
3690 "9022021480119041" "Gävle Central"
3692 "9022021480119043" "Gävle Central"
3694 "9022021480119045" "Gävle Central"
3695 "9022021480119046" "Gävle Central"
3696 "9022021480119047" "Gävle Central"
3697 "9022021480119048" "Gävle Central"
3698 "9022021480119049" "Gävle Central"
3699 "9022021480120001" "Dimgatan"
3700 "9022021480120002" "Dimgatan"
3809 "9022021480204030" "Högskolan"
3880 "9022021480266001" "Lottavägen"
3881 "9022021480266002" "Lottavägen"
3902 "9022021480282001" "Gävle sjukhus ingång 25"
3906 "9022021480283030" "Hedvigslund"
3957 "9022021480330001" "Rimfrostgatan"
3958 "9022021480330002" "Rimfrostgatan"
3961 "9022021480334001" "Gävle Rådhuset"
3965 "9022021480334005" "Gävle Rådhuset"
3969 "9022021480334009" "Gävle Rådhuset"
trip_coverage_not_active_for_next7_days WARNING 1

trip_coverage_not_active_for_next7_days

Trips data should be valid for at least the next seven days.

This notice is triggered if the date range where a significant number of trips are running ends in less than 7 days.

You can see more about this notice here.

currentDate (?) Current date (YYYYMMDD format). serviceWindowStartDate (?) The start date of the majority service window. serviceWindowEndDate (?) The end date of the majority service window.
"20260620" "20260817" "20261211"
unexpected_enum_value WARNING 98

unexpected_enum_value

An enum has an unexpected value.

You can see more about this notice here.

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

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" 700
"routes.txt" 3 "route_type" 700
"routes.txt" 4 "route_type" 700
"routes.txt" 5 "route_type" 700
"routes.txt" 6 "route_type" 700
"routes.txt" 7 "route_type" 700
"routes.txt" 8 "route_type" 700
"routes.txt" 9 "route_type" 700
"routes.txt" 10 "route_type" 700
"routes.txt" 11 "route_type" 700
"routes.txt" 12 "route_type" 700
"routes.txt" 13 "route_type" 700
"routes.txt" 14 "route_type" 700
"routes.txt" 15 "route_type" 700
"routes.txt" 16 "route_type" 700
"routes.txt" 17 "route_type" 700
"routes.txt" 18 "route_type" 700
"routes.txt" 19 "route_type" 700
"routes.txt" 20 "route_type" 700
"routes.txt" 21 "route_type" 700
"routes.txt" 22 "route_type" 700
"routes.txt" 23 "route_type" 700
"routes.txt" 24 "route_type" 700
"routes.txt" 25 "route_type" 700
"routes.txt" 26 "route_type" 700
"routes.txt" 27 "route_type" 700
"routes.txt" 28 "route_type" 700
"routes.txt" 29 "route_type" 700
"routes.txt" 30 "route_type" 700
"routes.txt" 31 "route_type" 700
"routes.txt" 32 "route_type" 700
"routes.txt" 33 "route_type" 700
"routes.txt" 34 "route_type" 700
"routes.txt" 35 "route_type" 700
"routes.txt" 36 "route_type" 700
"routes.txt" 37 "route_type" 700
"routes.txt" 38 "route_type" 700
"routes.txt" 39 "route_type" 700
"routes.txt" 40 "route_type" 700
"routes.txt" 41 "route_type" 700
"routes.txt" 42 "route_type" 700
"routes.txt" 43 "route_type" 700
"routes.txt" 44 "route_type" 700
"routes.txt" 45 "route_type" 700
"routes.txt" 46 "route_type" 700
"routes.txt" 47 "route_type" 700
"routes.txt" 48 "route_type" 700
"routes.txt" 49 "route_type" 700
"routes.txt" 50 "route_type" 700
"routes.txt" 51 "route_type" 700
big_gap_in_service INFO 66

big_gap_in_service

A service has a gap of more than 13 days between active service dates.

You can see more about this notice here.

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

serviceId (?) The service_id that has the gap. gapStartDate (?) The first day of the gap. gapEndDate (?) The last day of the gap. gapDurationDays (?) The number of days in the gap.
"17" "2026-06-20" "2026-10-31" 132
"38" "2026-09-27" "2026-10-17" 19
"46" "2026-10-02" "2026-10-19" 16
"50" "2026-10-02" "2026-10-17" 14
"59" "2026-10-02" "2026-10-17" 14
"60" "2026-10-02" "2026-10-19" 16
"64" "2026-09-05" "2026-09-26" 20
"77" "2026-08-21" "2026-09-28" 37
"78" "2026-08-21" "2026-10-02" 41
"84" "2026-08-21" "2026-10-02" 41
"85" "2026-09-06" "2026-10-03" 26
"93" "2026-09-05" "2026-09-26" 20
"96" "2026-09-06" "2026-09-28" 21
"99" "2026-06-26" "2026-08-10" 44
"99" "2026-09-25" "2026-10-12" 16
"100" "2026-09-25" "2026-10-12" 16
"101" "2026-07-04" "2026-08-03" 29
"101" "2026-09-27" "2026-10-12" 14
"102" "2026-09-27" "2026-10-12" 14
"103" "2026-09-25" "2026-10-12" 16
"104" "2026-09-18" "2026-10-05" 16
"109" "2026-06-26" "2026-08-10" 44
"110" "2026-06-26" "2026-08-10" 44
"112" "2026-09-27" "2026-10-12" 14
"113" "2026-06-26" "2026-08-10" 44
"115" "2026-09-27" "2026-10-12" 14
"117" "2026-09-27" "2026-10-12" 14
"119" "2026-06-26" "2026-08-10" 44
"119" "2026-09-25" "2026-10-12" 16
"121" "2026-09-27" "2026-10-12" 14
"123" "2026-09-18" "2026-10-05" 16
"123" "2026-10-23" "2026-11-09" 16
"124" "2026-09-12" "2026-10-03" 20
"124" "2026-10-10" "2026-10-31" 20
"125" "2026-09-13" "2026-10-04" 20
"125" "2026-10-11" "2026-11-01" 20
"135" "2026-09-11" "2026-09-28" 16
"140" "2026-07-10" "2026-07-26" 15
"142" "2026-07-03" "2026-08-03" 30
"147" "2026-08-30" "2026-10-04" 34
"148" "2026-07-12" "2026-08-08" 26
"156" "2026-07-15" "2026-08-03" 18
"157" "2026-09-04" "2026-10-02" 27
"166" "2026-07-17" "2026-08-03" 16
"169" "2026-09-10" "2026-09-28" 17
"171" "2026-09-08" "2026-09-29" 20
"174" "2026-07-11" "2026-08-08" 27
"175" "2026-07-19" "2026-08-03" 14
"181" "2026-07-10" "2026-08-03" 23
"185" "2026-07-10" "2026-08-03" 23
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.
"trips.txt" "samtrafiken_internal_trip_number" 8
"feed_info.txt" "feed_id" 1