is the 370 the worst bus in sydney 11 october 2016
play

Is the 370 the worst bus in Sydney? 11 October, 2016 Questions: - PowerPoint PPT Presentation

Is the 370 the worst bus in Sydney? 11 October, 2016 Questions: Bus privitisation? Better or worse? Is the 370 is the worst bus route in Sydney? (or are they all that bad?) Transport for NSW Open Data Old timetables Bus


  1. Is the 370 the worst bus in Sydney?

  2. 11 October, 2016

  3. Questions: » Bus privitisation? Better or worse? » Is the 370 is the worst bus route in Sydney? (or are they all that bad?)

  4. Transport for NSW Open Data » Old timetables » Bus occupancy » Bus/train/light-rail/ferry patronage » Contract areas and details » Opal card usage and stats » Transport Forecasts » Population Forecasts » Fare compliance » Walking data » Aviation data » Cycling data

  5. TripView - Grofsoft https://www.grofsoft.com/

  6. GTFS General Transit Feed Specification Published by Google Apache 2.0 License Separate static (timetable) and realtime data https://developers.google.com/transit/gtfs/ https://developers.google.com/transit/gtfs-realtime/

  7. GTFS [Static Timetable] Map paths (shapes) Stop names Bus Trip stop Agencies Trips and Routes times locations Dates this Exceptions Fare information trip will run to this This is a zip of CSV files

  8. GTFS Realtime trip { stop_time_update { trip_id: "631043" stop_sequence: 47 start_time: "01:55:00" arrival { start_date: "20180111" delay: 125 schedule_relationship: SCHEDULED time: 1516714432 route_id: "2441_370" } } departure { vehicle { delay: 120 id: "42558_346913_3000_14_1" time: 1516714446 } } stop_id: "228776" schedule_relationship: SCHEDULED } stop_time_update { stop_sequence: 48 This is a giant protobuf ... }

  9. Cloudwatch trigger (every minute) TfNSW Open AWS Lambda S3 Data Hub (Python) Fetching and storing realtime data

  10. Cloudwatch trigger (every hour) TfNSW Open AWS Lambda S3 Data Hub (Python) Postgres (RDS) Fetching and storing timetable data

  11. GTFS Static GTFS Realtime 4 Months 4 Months 29 Separate timetable feeds 1 realtime feed (combined NSW) 786 Timetable updates 186,628 collections (every 1min) 3.5 GB 557GB

  12. Realtime Agency Route Trip Trip date stop entry Trip stop Stop time My data model

  13. Map paths (shapes) Route ID Trip ID Stop ID Stop names Bus Trip stop Agencies Trips and Routes times locations Dates this Exceptions Fare information trip will run to this GTFS Static Timetable (Zip of CSV files)

  14. GTFS Realtime Data trip { stop_time_update { Trip ID trip_id: "631043" stop_sequence: 47 start_time: "01:55:00" arrival { start_date: "20180111" delay: 125 schedule_relationship: SCHEDULED time: 1516714432 route_id: "2441_370" } Route ID } departure { vehicle { delay: 120 id: "42558_346913_3000_14_1" time: 1516714446 } } stop_id: "228776" Stop ID schedule_relationship: SCHEDULED } stop_time_update { stop_sequence: 48 ... }

  15. Map paths (shapes) 25:55:00 26:05:00 ... Route ID Trip ID Stop ID Stop names Bus Trip stop Agencies Trips and Routes times locations Dates this Exceptions Fare information trip will run to this 2018-01-10

  16. GTFS Realtime Data "" "631043_2" trip { stop_time_update { Trip ID trip_id: "631043" stop_sequence: 47 start_time: "01:55:00" arrival { start_date: "20180111" delay: 125 schedule_relationship: SCHEDULED time: 1516714432 route_id: "2441_370" } Route ID ??? } departure { vehicle { delay: 120 id: "42558_346913_3000_14_1" time: 1516714446 } } stop_id: "228776" Stop ID schedule_relationship: SCHEDULED } stop_time_update { stop_sequence: 48 ... }

  17. Route did not exist: _382 Route did not exist: _382 Route did not exist: _317 Route did not exist: 2436_993 Route did not exist: 2454_TROL Route did not exist: 2436_994 Route did not exist: 2433_RAIL Route did not exist: 2452_RAIL Route did not exist: 2433_4000 Route did not exist: 2433_RAIL Route did not exist: 2436_994 Route did not exist: 2433_RAIL Route did not exist: 2436_994 Route did not exist: 2454_JC Route did not exist: 2436_993 Route did not exist: 2436_993 Route did not exist: 2454_TROL

  18. Processing realtime data 1. Download 1 realtime dump 2. Parse realtime data protobuf 3. Match each of the ~7000 trips with the timetable 4. Write ~20000 realtime updates to the DB

  19. EC2 Spot EC2 Spot instance instance EC2 Spot EC2 Spot instance instance EC2 Spot instance Main Django Postgres RDS server

  20. Processing the data

  21. Is the 370 the worst bus in Sydney?

  22. Early More than 2min early On time 2 min early - 5 min late (inclusive) Late More than 5min late Very late More than 20min late

  23. Results Recorded bus trips: 3,726,226 On time: 1,180,774 (31.69%) More than 20min late: 106,535 (2.86%)

  24. Best Routes # of trips % on time Route Route Name 1 9215 97.03 Stkn Stockton Ferry 2 1062 96.33 N20 Riverwood to Rockdale 3 8811 92.09 273 Fassifern to Toronto 4 1680 90.36 453 Percival Street, Rockdale to Rockdale Station 5 6086 90.16 954 Hurstville Grove to Hurstville 6 1029 88.53 15 Bay Village to Tuggerah 7 2322 88.20 N10 Sutherland to City Town Hall 8 1190 87.98 N11 Cronulla to City Town Hall 9 4313 87.87 15 Stanwell Park to Helensburgh 10 2005 85.94 280 Cooranbong to Morisset

  25. Worst Routes (by % on time) # of trips % on time Route Route Name 1 542 2.77 160 Cessnock to Newcastle 2 1056 3.22 622 Dural to Milsons Point via Cherrybrook 3 699 3.29 L70 Terrey Hills to City QVB (Limited Stops) 4 2442 3.64 627 Castle Hill to Chatswood 5 1876 3.68 628 Norwest to Chatswood 6 1360 4.19 740 Macquarie Park to Plumpton via Stanhope Gardens 7 1280 4.38 594H Hornsby to City QVB 8 880 5.00 803 Liverpool to Miller (Loop Service) 9 4862 5.78 841 Narellan to Leppington via Gregory Hills 10 2771 5.92 896 Campbelltown to Oran Park via Gregory Hills (Loop Service) 22 14190 8.79 370 Leichhardt Marketplace to Coogee

  26. Worst Routes (by % > 20min late) # of trips % on time % >20min late Route Route Name 1 1104 20.29 34.69 7 Wollongong to Bellambi (Loop Service) 2 1638 23.99 30.40 8 Wollongong to Bellambi via Balgownie (Loop Service) 3 1660 23.61 25.42 3 Wollongong to Bellambi via Towradgi (Loop Service) 4 1592 48.43 24.81 10 Wollongong to West Wollongong (Loop Service) 5 1605 24.61 24.74 277 Castle Cove to Chatswood 6 14190 8.79 23.45 370 Leichhardt Marketplace to Coogee 7 1616 20.85 22.77 11 Wollongong to Wollongong University (Loop Service) 8 1230 29.67 22.68 24 Wollongong to Figtree via Mangerton (Loop Service) 9 2499 16.49 22.45 281 Davidson to Chatswood 10 1200 22.50 21.92 571 Turramurra to South Turramurra (Loop Service)

  27. Worst Agencies (by on-time %) # of trips % on time % >20min late Route 1 312840 21.05 1.69 Hillsbus 2 11297 21.09 3.49 Rover Coaches 3 155130 23.26 1.17 Transit Systems 4 67066 24.87 6.05 Forest Coach Lines 5 1724152 28.34 3.36 State Transit Sydney 6 344292 30.66 3.24 Transdev NSW 7 119277 33.17 3.14 Newcastle Transport 8 97363 33.34 4.31 Busabout 9 29297 36.47 4.13 Blue Mountains Transit 10 82005 37.99 6.28 Premier Illawarra

  28. Conclusions » Bus privitisation - could go either way ¯\_( ツ )_/¯ » The 370 is the worst bus route in Sydney. (or maybe it's 277 - Castle Cove to Chatswood)

  29. Future Work » Analyse wait time between busses » Collect bus fullness data » Publish the data live

  30. Any questions? 24 - 26 August, Sydney ICC Call for talk proposals open now! 2018.pycon-au.org/speak/ Find me at » katiebell.net » @notsolonecoder » github.com/katharosada/bus-shaming

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend