1. The current definition of minimum standards
From the Department of Transport and Planning (DTP), minimum standards requires routes to satisfy 3 metrics:
- Their first service before or at 6am on weekdays, 8am on saturdays, and 9am on sundam
- Their last service after or at 9pm each day
- An hourly frequency as a minimum
In this report, I will assume all routes are running at a minimum of an hourly frequeny.
2. Route directions that meet minimum standards in both directions
64 routes currently meet the minimum standards proposed by the DTP. - When providing 5min either side of the cutoff times, this jumps up to 85 routes. - When providing 15min either side of the cutoff times, this jumps up to 142 routes. - When providing 30min either side of the cutoff times, this jumps up to 187 routes.
The problem isn’t that out cutoffs are too strict. The reality is our services could easily meet minimum standards but haven’t been timetabled to.
| Route # |
Route Name |
|
|
|
|
| 151 |
Tarneit Station - Williams Landing Station |
0 |
05:39:00 - 21:34:00 |
07:24:00 - 21:34:00 |
08:34:00 - 21:34:00 |
| Tarneit Station - Williams Landing Station |
1 |
05:13:00 - 21:44:00 |
07:22:00 - 21:44:00 |
08:22:00 - 21:44:00 |
| 153 |
Werribee Station - Williams Landing Station |
0 |
05:09:00 - 23:58:00 |
06:12:00 - 23:42:00 |
06:07:00 - 22:22:00 |
| Werribee Station - Williams Landing Station |
1 |
05:43:00 - 24:26:00 |
06:45:00 - 24:25:00 |
06:45:00 - 23:05:00 |
| 154 |
Tarneit Station - Laverton Station |
0 |
05:08:00 - 23:59:00 |
06:19:00 - 23:57:00 |
06:39:00 - 22:32:00 |
| ... |
... |
... |
... |
... |
... |
| 906 |
Warrandyte - City (King/Lonsdale Sts) |
1 |
05:00:00 - 23:37:00 |
05:41:00 - 23:37:00 |
07:10:00 - 23:11:00 |
| 907 |
Mitcham - City (King/Lonsdale Sts) |
0 |
05:18:00 - 24:05:00 |
02:55:00 - 26:50:00 |
03:50:00 - 23:55:00 |
| Mitcham - City (King/Lonsdale Sts) |
1 |
05:07:00 - 23:40:00 |
02:05:00 - 27:00:00 |
04:00:00 - 23:20:00 |
| 929 |
Pakenham North - Pakenham Station |
0 |
05:05:00 - 21:30:00 |
06:51:00 - 21:30:00 |
08:09:00 - 21:30:00 |
| Pakenham North - Pakenham Station |
1 |
05:09:00 - 21:40:00 |
06:55:00 - 21:41:00 |
08:13:00 - 21:39:00 |
128 rows × 4 columns
Below is the current map of routes that meet Minimum Standards
'# 1. Ensure shapes are loaded (if not already)\nif not hasattr(buses, \'shapes\'):\n buses.shapes = buses._load_csv(\'shapes.txt\')\n# 2. Filter for the specific routes in your list\nroute_list = two_dir_route_num\n\n# 3. Get the shape_ids associated with these routes\n# We merge routes -> trips -> shapes\nselected_trips = combined[combined[\'route_short_name\'].isin(route_list)]\nshape_keys = selected_trips[[\'route_short_name\', \'shape_id\']].drop_duplicates()\n# 4. Create the Map (centered around the first route\'s first point)\nm = folium.Map(location=[-37.8136, 144.9631], zoom_start=10) # Centered on Melbourne\n# 5. Plot each shape\nfor route_num in route_list:\n # Get all shapes for this route number\n route_shapes = shape_keys[shape_keys[\'route_short_name\'] == route_num][\'shape_id\'].unique()\n\n for sid in route_shapes:\n shape_coords = buses.shapes[buses.shapes[\'shape_id\'] == sid].sort_values(\'shape_pt_sequence\')\n points = list(zip(shape_coords[\'shape_pt_lat\'], shape_coords[\'shape_pt_lon\']))\n\n if points:\n folium.PolyLine(\n points, \n color="blue", \n weight=2.5, \n opacity=0.7,\n tooltip=f"Route {route_num}"\n ).add_to(m)\n\nm.save("route_map.html")\ndisplay(m)\n'
Make this Notebook Trusted to load map: File -> Trust Notebook
Below is a map of routes that would meet minimum standards with less strict cutoffs of 30min on each side each day.
Make this Notebook Trusted to load map: File -> Trust Notebook