On August 15, 2019, T3 Transit Bus 68 started its day just after 6:30 a.m. servicing Route № 3, the route that goes counter-clockwise around the city from downtown through Parkdale, Sherwood, Hillsborough Park, and West Royalty.
For the next 12 hours it drove a total of 245 km, servicing both Route № 3 and, on occasion, Route № 1.
Here’s what its day looked like, compressed down to 2 minutes:
Oliver and I caught the bus at 4:38 p.m. at the corner of Beach Grove and Maypoint Road; it was running about 8 minutes late. It made up a lot of that time, and dropped us downtown 10 minutes later, close to on-time, at 4:48 p.m.
Bus 68 finished up its day just before 7:00 p.m., with one final counter-clockwise run around the city. It then headed back to the garage for the night before starting back again, just after 6:30 a.m., the next morning.
How I Made This
I pulled real-time bus location information from the T3 Transit ReadyPass map. This gave me 2,258 time-stamped bus position points in a CSV file, like:
logTime,busNumber,routeNumber,lat,long,cellStrength,speed,updateTime,accuracy,battery
2019-08-15 06:37:43,68,3,46.234024047852,-63.12748336792,0.019,0,2019-08-15 09:37:42,58,244
2019-08-15 06:37:59,68,3,46.234027862549,-63.12748336792,0.019,0,2019-08-15 09:37:53,49,244
2019-08-15 06:38:14,68,3,46.234027862549,-63.12748336792,0.018,0,2019-08-15 09:38:10,42,244
I imported these points into QGIS and used the TimeManager plug-in, with interpolation set to “Linear interpolation for big datasets” and a time frame size of 15 seconds. I exported the resulting frames to PNG files and then combined the 2,926 frames into a single MP4 video with ffmpeg:
ffmpeg -i frame%5d.png -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
I can watch the resulting video over and over and over: it’s like a transit ballet. Or a transit video game.