In [1]:
import sys
from pathlib import Path
import pandas as pd
import numpy as np
import gtfs_kit as gk
sys.path.append('../')
import make_gtfs as mg
DATA_DIR = Path('../data')
%load_ext autoreload
%autoreload 2
In [19]:
path = DATA_DIR/'auckland'
pfeed = mg.read_protofeed(path)
feed = mg.build_feed(pfeed)
print(feed)
* agency --------------------
agency_name agency_url agency_timezone
0 Auckland Transport https://at.govt.nz/ Pacific/Auckland
* calendar --------------------
service_id monday tuesday wednesday thursday friday saturday sunday \
0 srv1111100 1 1 1 1 1 0 0
1 srv0000010 0 0 0 0 0 1 0
start_date end_date
0 20140101 20150101
1 20140101 20150101
* calendar_dates --------------------
None
* fare_attributes --------------------
None
* fare_rules --------------------
None
* feed_info --------------------
None
* frequencies --------------------
None
* routes --------------------
route_short_name route_long_name \
0 A City Link, Wynyard Quarter to Karangahape Rd v...
4 B Inner Link. Britomart, Three Lamps, Ponsonby, ...
route_type route_id
0 3 rA
4 2 rB
* shapes --------------------
shape_id shape_pt_sequence shape_pt_lon shape_pt_lat
0 shp1-1 0 174.767029 -36.844440
1 shp1-1 1 174.767401 -36.843364
2 shp1-1 2 174.768695 -36.843668
3 shp1-1 3 174.768113 -36.845003
4 shp1-1 4 174.767631 -36.844886
* stops --------------------
stop_code stop_lat zone_id stop_lon stop_id parent_station \
15 0133 -36.84429 merged_28 174.76848 stop_0016 NaN
18 10007 -36.59043 merged_29 174.67467 stop_0019 NaN
19 10008 -36.58306 merged_28 174.68597 stop_0020 NaN
20 10036 -36.89758 merged_29 174.80730 stop_0021 NaN
21 10064 -36.76688 merged_28 174.49654 stop_0022 NaN
stop_desc stop_name location_type
15 NaN Britomart Train Station 0
18 NaN Tauranga Place/Maygrove Village 1
19 NaN West Hoe Rd/Evelyn Page Retirement Village 1
20 NaN /Ellerslie 1
21 NaN State Highway 16/Waimauku Park and Ride 1
* stop_times --------------------
trip_id stop_id stop_sequence arrival_time \
0 t-rA-weekday_peak_1-07:00:00-1-0 stop_0016 0 07:00:00
1 t-rA-weekday_peak_1-07:00:00-1-0 stop_0744 1 07:03:58
2 t-rA-weekday_peak_1-07:00:00-1-0 stop_3833 2 07:03:58
3 t-rA-weekday_peak_1-07:00:00-1-0 stop_3834 3 07:04:04
4 t-rA-weekday_peak_1-07:00:00-1-0 stop_0073 4 07:04:48
departure_time shape_dist_traveled
0 07:00:00 0.315691
1 07:03:58 1.334341
2 07:03:58 1.334341
3 07:04:04 1.362424
4 07:04:48 1.549799
* transfers --------------------
None
* trips --------------------
route_id trip_id direction_id shape_id \
0 rA t-rA-weekday_peak_1-07:00:00-1-0 1 shp1-1
1 rA t-rA-weekday_peak_1-07:00:00-1-1 1 shp1-1
2 rA t-rA-weekday_peak_1-07:00:00-1-2 1 shp1-1
3 rA t-rA-weekday_peak_1-07:00:00-1-3 1 shp1-1
4 rA t-rA-weekday_peak_1-07:00:00-1-4 1 shp1-1
service_id
0 srv1111100
1 srv1111100
2 srv1111100
3 srv1111100
4 srv1111100
* dist_units --------------------
km
In [20]:
f = pd.merge(feed.routes[['route_id', 'route_short_name']], pfeed.frequencies)
f = pd.merge(f, pfeed.service_windows).sort_values('route_id')
f
Out[20]:
route_id
route_short_name
route_long_name
route_type
shape_id
service_window_id
frequency
direction
speed
start_time
end_time
monday
tuesday
wednesday
thursday
friday
saturday
sunday
0
rA
A
City Link, Wynyard Quarter to Karangahape Rd v...
3
shp1
weekday_peak_1
12
1
20.0
07:00:00
09:00:00
1
1
1
1
1
0
0
2
rA
A
City Link, Wynyard Quarter to Karangahape Rd v...
3
shp1
weekday_peak_2
12
1
20.0
15:00:00
17:00:00
1
1
1
1
1
0
0
4
rA
A
City Link, Wynyard Quarter to Karangahape Rd v...
3
shp1
weekday_offpeak
4
0
20.0
09:00:00
15:00:00
1
1
1
1
1
0
0
6
rA
A
City Link, Wynyard Quarter to Karangahape Rd v...
3
shp1
saturday
0
0
20.0
09:00:00
19:00:00
0
0
0
0
0
1
0
1
rB
B
Inner Link. Britomart, Three Lamps, Ponsonby, ...
2
shp2
weekday_peak_1
6
2
20.0
07:00:00
09:00:00
1
1
1
1
1
0
0
3
rB
B
Inner Link. Britomart, Three Lamps, Ponsonby, ...
2
shp2
weekday_peak_2
4
2
20.0
15:00:00
17:00:00
1
1
1
1
1
0
0
5
rB
B
Inner Link. Britomart, Three Lamps, Ponsonby, ...
2
shp2
weekday_offpeak
2
1
20.0
09:00:00
15:00:00
1
1
1
1
1
0
0
7
rB
B
Inner Link. Britomart, Three Lamps, Ponsonby, ...
2
shp2
saturday
2
0
20.0
09:00:00
19:00:00
0
0
0
0
0
1
0
In [21]:
# Map some trips
prefix = 't-rB-weekday_peak_1-07:00:00'
t = (
feed.trips
.loc[lambda x: x.trip_id.str.startswith(prefix)]
)
tids = [t.trip_id.iat[0], t.trip_id.iat[-1]]
feed.map_trips(tids)
Out[21]:
In [ ]:
Content source: araichev/make_gtfs
Similar notebooks: