SRT data check
Feed version 20261025 (1 Jan 2026 to 31 Dec 2026) · imported 26 Oct 2026
To check (3)
Each of these needs a decision. If the feed is wrong and a second source confirms it, add a correction
(NAME_FIXES, POSITION_FIXES); if it is fine as it is, add it to ACCEPTED
with the reason, the key and the text as shown (both in app/services/importer/corrections.py).
Stations off their main line's route (2)
The feed's position of the station, or the route there: correct the position, or accept.
- main lines: Rangsit (stop 222): 185 m from the route of its main line
station-off-route222 - main lines: Bangkok (Krung Thep Aphiwat) (stop 266): 170 m from the route of its main line
station-off-route266
Implausible headways (1)
Find a source for the headways before showing them.
- Dark Red Line: headway 10–45 min
headwaydark-red
Not checked yet
- Fares: the feed is the only source so far (only fares it gives twice are listed).
- Fares of the trains on the main lines: the feed has base fares only (no class or express supplements), not shown.
- Headways of Dark Red Line, Light Red Line: not shown on the pages, no official source yet (the feed's are partly implausible).
Accepted differences (4)
- Dark Red Line: Krung Thep Aphiwat Central Terminal Station (stop 13846), name in the feed / in OSM: “Krung Thep Aphiwat Central Terminal Station” / “Krung Thep Aphiwat” · “สถานีกลางกรุงเทพอภิวัฒน์” / “กรุงเทพอภิวัฒน์” — The station's full name; OSM has the short form (2026-10-26)
- Dark Red Line: Don Mueang (stop 5415), name in the feed / in OSM: “Don Mueang” / “Don Muang” — Spelling variant of ดอนเมือง (2026-10-26)
- Light Red Line: Krung Thep Aphiwat Central Terminal Station (stop 13846), name in the feed / in OSM: “Krung Thep Aphiwat Central Terminal Station” / “Krung Thep Aphiwat” · “สถานีกลางกรุงเทพอภิวัฒน์” / “กรุงเทพอภิวัฒน์” — The station's full name; OSM has the short form (2026-10-26)
- Light Red Line: Taling Chan (stop 13847), name in the feed / in OSM: “Taling Chan” / “Taling Chan Junction” · “ตลิ่งชัน” / “ชุมทางตลิ่งชัน” — The Red Line's station; OSM has the name of the junction station of the main line (2026-10-26)
Sources
What each source has, how good it is, and what the map takes from it. Found by comparing the GTFS feed with OpenStreetMap (below) and looking for the operator's own information.
| Data | GTFS feed (Namtang / OTP) | OpenStreetMap | Operator | On the map |
|---|---|---|---|---|
| Lines, stations, order | Complete: Dark Red 10 stations, Light Red 4, both from Krung Thep Aphiwat; both lines named “Red”, each station with a note on its line in brackets (left out) | The same stations in the same order | – | Feed, checked against OpenStreetMap |
| Route | Close to the tracks | The tracks, accurate to a few metres | – | OpenStreetMap where it agrees with the feed (table below) |
| Station positions | Within 90 m of OpenStreetMap's | Stations, platforms and stops | – | OpenStreetMap (the middle of a station's stops and platforms on the line) |
| Names | Complete, Thai and English, some full names (“Krung Thep Aphiwat Central Terminal Station”) | Complete, short forms, some other spellings (“Don Muang”) | – | Feed |
| Fares | Station to station: Dark Red 14–42 ฿, Light Red 18–35 ฿ | – | Not compared yet | Feed (not checked yet) |
| Headways | Dark Red 10–45 min (implausible), Light Red 10–30 min | – | Not found | Not shown |
| Main lines and their trains | 188 numbered trains, 14 of them twice (an old entry with fewer stations, left out); no line for a train; many trips end at the edge of the region or inside it (the feed's last station is shown) | The tracks; in the snapshot no route relations for the trains | The lines out of Bangkok: Northern, Northeastern, Southern, Eastern, Maeklong (Wikipedia, “Rail transport in Thailand”); no line colours | Trains on the line they stop on (feed), the lines as the SRT names them (the Northern and Northeastern on one line in the map, where they share the track); colours the site's |
| Main lines' routes | Coarse in parts (Rangsit – Ayutthaya up to 1.5 km from the track) | The tracks, which pfaedle lays the trains onto | – | OpenStreetMap section by section where it is within 100 m of the feed, else the feed (table below); up to the edge of the map, drawn on along the tracks where the feed's trips end before it though the trains run on (the Eastern Line, see corrections) |
| Train fares | Base fares only, without class or express supplements | – | Not compared yet | Not shown |
| License | CC BY 4.0 | ODbL: routes and station positions on the map and in the API are © OpenStreetMap contributors |
Import
The lines come from the GTFS feed. A line's trips are grouped into ways per direction: the main route, and a branch or the two sides of a loop where the feed has them as separate trips. Every station of the feed has to be on one of the ways. The State Railway's numbered trains are put on the main lines they stop on in the map (stations of one line only); a main line's ways are as few of its trains' trips as take in all their stations.
Stations per line
| Line | On the map | In the feed | Stations per way, by direction | Headway in the feed |
|---|---|---|---|---|
| Dark Red Line | 10 | 10 | 0: 10 · 1: 10 | 10–45 min (implausible) |
| Light Red Line | 4 | 4 | 0: 4 · 1: 4 | 10–30 min |
| Northern and Northeastern Lines | 26 | 26 | 0: 16 + 16 + 12 + 3 + 12 | 60 trains, by timetable |
| Southern Line | 33 | 33 | 0: 26 + 18 + 7 | 44 trains, by timetable |
| Eastern Line | 16 | 16 | 0: 15 + 14 | 29 trains, by timetable |
| Maeklong Line | 32 | 32 | 0: 18 + 14 | 42 trains, by timetable |
113 distinct stations. Headways are not shown on the public pages until they are checked: the feed's values are partly implausible.
Corrections to the feed (1)
Names, stations, fares and headways are the feed's, except for these clear errors, each confirmed by a
second source (app/services/importer/corrections.py); routes and station positions come from
OpenStreetMap where it agrees with the feed (below). A correction is applied only while the
feed still has the value it corrects.
- Eastern Line: drawn on from Khlong Luang Phaeng to the edge of the map along the OpenStreetMap tracks (about 15 km). The feed's trips end at Khlong Luang Phaeng; by their names its trains run on (Ban Klong Luek Border, Ban Plu Ta Luang, Chachoengsao Junction, Kabin Buri, Prachin Buri). Source: OpenStreetMap tracks, data of 2026-10-24.
Notes (16)
- Train 339: route 79 is train 339 again, with 12 stations (route 2732: 25); left out
- Train 7: route 2143 is train 7 again, with 4 stations (route 2731: 17); left out
- Train 7: route 2730 is train 7 again, with 0 stations (route 2731: 17); left out
- Train 9: route 2145 is train 9 again, with 3 stations (route 2734: 13); left out
- Train 13: route 2146 is train 13 again, with 3 stations (route 2738: 16); left out
- Train 51: route 2147 is train 51 again, with 3 stations (route 2739: 20); left out
- Train 52: route 2159 is train 52 again, with 3 stations (route 2743: 19); left out
- Train 14: route 2160 is train 14 again, with 3 stations (route 2742: 16); left out
- Train 10: route 2161 is train 10 again, with 3 stations (route 2741: 13); left out
- Train 8: route 2163 is train 8 again, with 3 stations (route 2740: 18); left out
- Train 21: route 2733 is train 21 again, with 18 stations (route 2164: 18); left out
- Train 25: route 2168 is train 25 again, with 3 stations (route 2736: 15); left out
- Train 22: route 2173 is train 22 again, with 3 stations (route 2735: 18); left out
- Train 26: route 2175 is train 26 again, with 3 stations (route 2737: 15); left out
- main lines: Rangsit (stop 222): 185 m from the route of its main line
- main lines: Bangkok (Krung Thep Aphiwat) (stop 266): 170 m from the route of its main line
Routes on OpenStreetMap's tracks
pfaedle lays each trip onto OpenStreetMap's tracks, stop by stop (2026-10-24). Between two stops its route is taken where it stays within 100 m of the feed's and passes the stops about as close; elsewhere the feed's route (cleaned) stays, except where the feed has no route between two stops. Routes run from the first stop to the last.
- 154 of 162 sections from OpenStreetMap (95.1 %), 12 of 12 trips matched
- 8 sections stay with the feed: to check which route is right
Sections that differ (8)
| Line | Direction | Section | Why | pfaedle off by | Length |
|---|---|---|---|---|---|
| north | 0 | Don Muang → Rangsit | another way | over 500 m | 7,893 m |
| south | 0 | Pak Tho → SRT Phetchaburi | another way | over 500 m | 32,045 m |
| north | 0 | Don Muang → Lak Hok | another way | over 500 m | 5,153 m |
| north | 0 | SRT Ayutthaya → Rangsit | another way | over 500 m | 41,078 m |
| north | 0 | Rangsit → Don Muang | another way | 187 m | 7,944 m |
| south | 0 | Bang Bamru → Taling Chan Junction | another way | 164 m | 4,422 m |
| east | 0 | Hua Takhe → Khlong Luang Phaeng | another way | 159 m | 8,734 m |
| maeklong | 0 | Talat Phlu → Wongwian Yai | misses a stop | 3 m | 1,565 m |
OpenStreetMap
OpenStreetMap data of 2026-10-25, fetched 2026-10-25
Each line compared with OpenStreetMap's route relations of the same line: a station counts as found when an OSM stop or platform of the line is within 300 m; each way's stations have to follow each other as on an OSM route. Where all stations are found, the order is the same and the OSM tracks lead from station to station (no longer or shorter than the feed's route by more than 30 %), the line's route and station positions come from OpenStreetMap (a station at the middle of its stops and platforms on the line); otherwise from the feed.
| Line | In OpenStreetMap | Found | Map drawn from | Stations moved |
|---|---|---|---|---|
| Dark Red Line | SRT Dark Red Line | 10 of 10 | OpenStreetMap | up to 88 m |
| Light Red Line | SRT Light Red Line | 4 of 4 | OpenStreetMap | up to 88 m |
“Stations moved”: how far the station positions moved from the feed's to OpenStreetMap's. The findings are under To check, or among the accepted differences.