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 [ ]: