cincinnati-metro — Source Data Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-04-23T18:18:58Z,
for the dataset file:///shared/cincinnati-metro_3dcbca40.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Southwest Ohio Regional Transit Authority
Feed Email:
N/A
Feed Language:
English
Feed Start Date:
2026-03-01
Feed End Date:
2026-05-30

Files included


  1. Trips_BlockName.txt
  2. agency.txt
  3. calendar.txt
  4. calendar_dates.txt
  5. fare_attributes.txt
  6. fare_rules.txt
  7. feed_info.txt
  8. routes.txt
  9. shapes.txt
  10. stop_times.txt
  11. stops.txt
  12. trips.txt

Counts


  • Agencies: 1
  • Blocks: 789
  • Routes: 50
  • Shapes: 202
  • Stops: 3743
  • Trips: 6435

Specification Compliance report

14550 notices reported (0 errors, 14361 warnings, 189 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 13

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.
"460006" 123956 4.7586 200002 123955 4.7586 200001 0.11119510161714974
"460003" 122925 4.7586 200002 122924 4.7586 200001 0.11119510161714974
"500031" 131351 7.7349 170002 131350 7.7349 170001 0.08630881348513104
"40030" 17571 16.2011 380002 17570 16.2011 380001 0.14070366641564597
"40025" 13335 15.4245 520002 13334 15.4245 520001 0.14070366641564597
"40029" 16479 15.4245 520002 16478 15.4245 520001 0.14070366641564597
"40028" 15321 15.4245 520002 15320 15.4245 520001 0.14070366641564597
"640011" 145537 15.9645 600002 145536 15.9645 600001 0.08625332729726756
"40004" 7861 15.4245 520002 7860 15.4245 520001 0.14070366641564597
"360014" 97545 25.7631 850002 97544 25.7631 850001 0.08629951936040683
"330010" 93957 5.5804 170018 93956 5.5804 170017 0.0862715839362801
"780047" 163579 16.5916 640006 163578 16.5916 640005 0.11119510161714974
"770019" 160560 12.4332 380002 160559 12.4332 380001 0.08629951936040683
equal_shape_distance_same_coordinates WARNING 10895

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 10895 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`.
"780058" 165350 0.4221 20001 165349 0.4221 10022
"780058" 165365 0.8894 30001 165364 0.8894 20015
"780058" 165381 1.393 40001 165380 1.393 30016
"780058" 165409 2.0976 50001 165408 2.0976 40028
"780058" 165422 2.3937 60001 165421 2.3937 50013
"780058" 165432 2.6395 70001 165431 2.6395 60010
"780058" 165446 2.8798 80001 165445 2.8798 70014
"780058" 165460 3.2689 90001 165459 3.2689 80014
"780058" 165478 3.7669 100001 165477 3.7669 90018
"780058" 165498 4.1376 110001 165497 4.1376 100020
"780058" 165507 4.244 120001 165506 4.244 110009
"780058" 165518 4.5553 130001 165517 4.5553 120011
"780058" 165524 4.7673 140001 165523 4.7673 130006
"780058" 165559 6.2917 150001 165558 6.2917 140035
"780058" 165566 6.4787 160001 165565 6.4787 150007
"780058" 165577 6.8948 170001 165576 6.8948 160011
"780058" 165590 7.1952 180001 165589 7.1952 170013
"780058" 165597 7.4933 190001 165596 7.4933 180007
"780058" 165609 7.9302 200001 165608 7.9302 190012
"780058" 165621 8.1502 210001 165620 8.1502 200012
"780058" 165631 8.5165 220001 165630 8.5165 210010
"780058" 165638 8.7094 230001 165637 8.7094 220007
"780058" 165649 8.9644 240001 165648 8.9644 230011
"780058" 165657 9.1719 250001 165656 9.1719 240008
"780058" 165679 9.6979 260001 165678 9.6979 250022
"780058" 165696 10.2949 270001 165695 10.2949 260017
"780058" 165719 11.057 280001 165718 11.057 270023
"780058" 165727 11.3541 290001 165726 11.3541 280008
"780058" 165736 11.5478 300001 165735 11.5478 290009
"780058" 165744 11.6517 310001 165743 11.6517 300008
"780058" 165751 11.8979 320001 165750 11.8979 310007
"780058" 165765 12.0685 330001 165764 12.0685 320014
"780058" 165770 12.1793 340001 165769 12.1793 330005
"780058" 165782 12.4823 350001 165781 12.4823 340012
"780058" 165789 12.6615 360001 165788 12.6615 350007
"780058" 165803 13.277 370001 165802 13.277 360014
"780058" 165821 13.6629 380001 165820 13.6629 370018
"780058" 165832 14.0138 390001 165831 14.0138 380011
"780058" 165849 14.3434 400001 165848 14.3434 390017
"780058" 165853 14.699 410001 165852 14.699 400004
"780058" 165860 14.8899 420001 165859 14.8899 410007
"780058" 165875 15.2035 430001 165874 15.2035 420015
"780058" 165892 15.5211 440001 165891 15.5211 430017
"780058" 165906 15.9785 450001 165905 15.9785 440014
"780058" 165918 16.4445 460001 165917 16.4445 450012
"780058" 165926 16.6801 470001 165925 16.6801 460008
"780058" 165935 16.9546 480001 165934 16.9546 470009
"780058" 165956 17.3032 490001 165955 17.3032 480021
"780058" 165966 17.4776 500001 165965 17.4776 490010
"780058" 165983 17.749 510001 165982 17.749 500017
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 53

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.

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

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"fare_attributes.txt" 2 "agency_id"
"fare_attributes.txt" 3 "agency_id"
"fare_attributes.txt" 4 "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"
"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"
"routes.txt" 37 "agency_id"
"routes.txt" 38 "agency_id"
"routes.txt" 39 "agency_id"
"routes.txt" 40 "agency_id"
"routes.txt" 41 "agency_id"
"routes.txt" 42 "agency_id"
"routes.txt" 43 "agency_id"
"routes.txt" 44 "agency_id"
"routes.txt" 45 "agency_id"
"routes.txt" 46 "agency_id"
"routes.txt" 47 "agency_id"
"routes.txt" 48 "agency_id"
mixed_case_recommended_field WARNING 3396

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.

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

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" "3RD ST 508" 4
"stops.txt" "stop_name" "3RD ST 640" 5
"stops.txt" "stop_name" "3rd ST. WEST OF BRENT SPENCE BRIDGE" 6
"stops.txt" "stop_name" "3RD ST & EGGLESTON AVE" 7
"stops.txt" "stop_name" "3RD ST EAST OF GEST ST" 8
"stops.txt" "stop_name" "3RD ST & GEST ST" 9
"stops.txt" "stop_name" "3RD ST & SMITH ST" 10
"stops.txt" "stop_name" "3RD ST & SYCAMORE ST" 11
"stops.txt" "stop_name" "3RD & WALNUT" 12
"stops.txt" "stop_name" "3RD ST & WALNUT ST" 13
"stops.txt" "stop_name" "4TH ST & MAIN ST" 14
"stops.txt" "stop_name" "4TH ST & PIKE ST" 15
"stops.txt" "stop_name" "4TH ST & PLUM ST" 16
"stops.txt" "stop_name" "4TH ST & POSTAL AL" 17
"stops.txt" "stop_name" "4TH ST & RACE ST" 18
"stops.txt" "stop_name" "4TH ST & SYCAMORE ST" 19
"stops.txt" "stop_name" "4TH ST & VINE ST" 20
"stops.txt" "stop_name" "4TH ST & WALNUT ST" 21
"stops.txt" "stop_name" "FIFTH THIRD BANK MADISONVILLE 2" 22
"stops.txt" "stop_name" "FIVE MILE RD & NIMITZVIEW DR" 23
"stops.txt" "stop_name" "FIVE MILE RD & WOODCROFT DR" 24
"stops.txt" "stop_name" "5TH ST & ELM ST" 25
"stops.txt" "stop_name" "5TH ST & FOUNTAIN SQUARE" 26
"stops.txt" "stop_name" "5TH ST & LAWRENCE ST" 27
"stops.txt" "stop_name" "5TH ST & PIKE ST" 28
"stops.txt" "stop_name" "5TH ST & SYCAMORE ST" 29
"stops.txt" "stop_name" "5TH ST & VINE ST" 30
"stops.txt" "stop_name" "6TH ST & ELM ST" 31
"stops.txt" "stop_name" "6TH ST & MAIN ST" 32
"stops.txt" "stop_name" "6TH ST & PLUM ST" 33
"stops.txt" "stop_name" "6TH ST & RACE ST" 34
"stops.txt" "stop_name" "6TH ST & RUTH LYONS ALY" 35
"stops.txt" "stop_name" "6TH ST & SYCAMORE ST" 36
"stops.txt" "stop_name" "7TH & CENTRAL AVE" 37
"stops.txt" "stop_name" "7TH ST & PLUM ST" 38
"stops.txt" "stop_name" "7TH ST & RACE ST" 39
"stops.txt" "stop_name" "7TH ST & SYCAMORE ST" 40
"stops.txt" "stop_name" "7TH ST & VINE ST" 41
"stops.txt" "stop_name" "7TH ST & WALNUT ST" 42
"stops.txt" "stop_name" "EIGHT MILE RD 1932" 43
"stops.txt" "stop_name" "EIGHT MILE RD & BEECHMONT AVE" 44
"stops.txt" "stop_name" "EIGHT MILE RD & NORTHPORT DR" 45
"stops.txt" "stop_name" "EIGHT MILE RD & RIOVISTA DR" 46
"stops.txt" "stop_name" "EIGHT MILE RD & SHENSTONE DR" 47
"stops.txt" "stop_name" "8TH ST 4321" 48
"stops.txt" "stop_name" "8TH ST 4332" 49
"stops.txt" "stop_name" "8TH ST & ACADEMY AVE" 50
"stops.txt" "stop_name" "8TH ST & ACADEMY AVE" 51
"stops.txt" "stop_name" "8TH ST & CHEAPSIDE ST" 52
"stops.txt" "stop_name" "8TH ST & CLANORA DR" 53
stop_too_far_from_shape_using_user_distance WARNING 3

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.
922 "360013" "1606138" 74682 "DEL4977i" "DELHI RD 4977" [39.09535499999999,-84.606977] 108.00273792231013
441 "770017" "1605657" 36717 "DEL4977i" "DELHI RD 4977" [39.09535499999999,-84.606977] 108.00273792231013
441 "770017" "1605657" 36730 "DEL963i" "DELHI RD 963" [39.095474,-84.577653] 146.53805883360963
unknown_file INFO 1

unknown_file

A file is unknown.

You can see more about this notice here.

filename (?) The name of the unknown file.
"Trips_BlockName.txt"
unused_station INFO 188

unused_station

Unused station.

A stop has location_type STATION (1) but does not appear in any stop's parent_station.

You can see more about this notice here.

Only the first 50 of 188 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.
3688 "place_MoTy" "Montgmery & Tyne"
3594 "place_Cent" "Vineyard EOL Layover"
3584 "place_BeQu" "Beekman & Queen City"
3682 "place_MoCo" "Mohawk Corner"
3689 "place_MP&R" "Meijer P&R"
3639 "place_Gmbl" "Gamble High School"
3731 "place_ViMc" "McMillan & Vine"
3570 "place_8&St" "8th & State"
3604 "place_CoRo" "Colerain & Round Top"
3611 "place_Delt" "Columbia Pkwy & Delta"
3674 "place_Meri" "Meredith-Hamilton"
3610 "place_DeLi" "Delta & Linwood"
3605 "place_CoTC" "Colerain Towne Center"
3642 "place_GSam" "Good Sam Hopsital"
3558 "place_4&Pl" "4th & Plum"
3695 "place_NoSp" "Northland & Springfield"
3614 "place_DryF" "Dry Fork Rd & I-74"
3683 "place_MoEp" "Montana & Epworth"
3618 "place_ElGl" "Elm & Glass Alley"
3744 "place_WoHe" "Woodburn & Hewitt"
3556 "place_3&Sy" "3rd & Sycamore"
3742 "place_WkR4" "Kemper at OH-4"
3700 "place_Park" "Parkcrest"
3606 "place_CP&V" "Central Parkway & Vine"
3644 "place_GWil" "Goodwill Industries"
3599 "place_ClNa" "Clough Pike & Nagel"
3627 "place_EvLO" "Evendale Commons Layover"
3575 "place_Addy" "Main & Dinning"
3562 "place_5Elm" "5th at Elm"
3554 "place_14El" "14th & Elm"
3589 "place_BrMo" "Brewster & Montgomery"
3583 "place_BeCo" "Beechmont & Corbly"
3721 "place_SeRe" "Seymour & Reading"
3708 "place_RdBr" "Red Bank & Brotherton"
3707 "place_RaLi" "Race & Liberty"
3724 "place_ShWy" "Shepherd & Wyoming"
3676 "place_Milf" "Milford Layover"
3692 "place_MtSJ" "Mount Saint Joseph"
3710 "place_ReEl" "Reading & Elsinore"
3677 "place_MInn" "Wooster Pike & Mariemont Inn"
3693 "place_NoEd" "North Bend Rd & Edwood Ave"
3596 "place_ChiM" "Chicago Ave & Mangham"
3651 "place_HilV" "Hillsdale & Vine"
3563 "place_6&Ma" "6th & Main"
3632 "place_FPPR" "Forest Park Park & Ride"
3581 "place_Bank" "Bank & Dalton"
3671 "place_MaLi" "Main & Lila"
3703 "place_Pres" "President culdesac"
3653 "place_HuCo" "Hughes Corner"
3665 "place_LoLa" "Longmeadow & Lamarque"