In [29]:
from pathlib import Path
import json

import pandas as pd
import shapely.geometry as sg

import new_gtfs_tools as gt  # Collection of GTFS tools from previous homeworks

%load_ext autoreload
%autoreload 2

DATA_DIR = Path('..')/'data'


The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

Problem 2


In [30]:
# Test read_gtfs
#
path = DATA_DIR/'auckland_gtfs_20161017.zip'
feed = gt.read_gtfs(path)
print(feed)


* agency --------------------
	   agency_phone                            agency_url agency_id  \
0  (09)355-3553  http://www.aucklandtransport.govt.nz     NZBGW   
1  (09)355-3553  http://www.aucklandtransport.govt.nz       PHH   
2  (09)355-3553  http://www.aucklandtransport.govt.nz       PBC   
3  (09)355-3553  http://www.aucklandtransport.govt.nz     ABEXP   
4  (09)355-3553  http://www.aucklandtransport.govt.nz        AM   

             agency_name   agency_timezone agency_lang  
0                Go West  Pacific/Auckland          en  
1          SeaLink Group  Pacific/Auckland          en  
2  The Party Bus Company  Pacific/Auckland          en  
3                 SkyBus  Pacific/Auckland          en  
4               AT Metro  Pacific/Auckland          en  
* calendar --------------------
	                          service_id  start_date  end_date  monday  tuesday  \
0  14306060378-20161011155909_v46.26    20161030  20161231       0        0   
1   2366061839-20161011155909_v46.26    20161030  20161231       0        0   
2  14267044430-20161011151756_v46.25    20161017  20161029       0        0   
3   2365061662-20161011155909_v46.26    20161030  20161231       0        0   
4  12913041840-20161011155909_v46.26    20161030  20161231       0        0   

   wednesday  thursday  friday  saturday  sunday  
0          0         0       0         1       1  
1          0         0       0         1       0  
2          0         0       0         0       1  
3          0         0       0         0       1  
4          0         0       0         1       0  
* calendar_dates --------------------
	                          service_id      date  exception_type
0  14267044430-20161011151756_v46.25  20161024               1
1  15428038620-20161011151756_v46.25  20161024               2
2   3090042187-20161011151756_v46.25  20161024               2
3   3922046164-20161011151756_v46.25  20161024               2
4  14625040096-20161011151756_v46.25  20161024               1
* fare_attributes --------------------
	None
* fare_rules --------------------
	None
* feed_info --------------------
	Empty DataFrame
Columns: [feed_publisher_name, feed_publisher_url, feed_lang, feed_start_date, feed_end_date, feed_version]
Index: []
* frequencies --------------------
	None
* routes --------------------
	  route_short_name                         route_long_name  route_type  \
0              005  Britomart To Pt Chevalier Via Westmere           3   
1              007              St Heliers To Pt Chevalier           3   
2              008                     New Lynn To Otahuhu           3   
3              009                    Onehunga To New Lynn           3   
4              010  Wynyard Quarter To Onehunga Via Unitec           3   

   route_text_color agency_id   route_id  route_color  
0               NaN     NZBML  route_001          NaN  
1               NaN     NZBML  route_002          NaN  
2               NaN        UE  route_003          NaN  
3               NaN        UE  route_004          NaN  
4               NaN     NZBML  route_005          NaN  
* shapes --------------------
	                    shape_id  shape_pt_sequence  shape_pt_lon  shape_pt_lat
0  827-20161011151756_v46.25                  0     174.77834     -36.61193
1  827-20161011151756_v46.25                  1     174.77836     -36.61198
2  827-20161011151756_v46.25                  2     174.77844     -36.61196
3  827-20161011151756_v46.25                  3     174.77892     -36.61186
4  827-20161011151756_v46.25                  4     174.77942     -36.61175
* stops --------------------
	   stop_lat  zone_id   stop_lon stop_id parent_station  stop_desc  \
0 -36.77869      NaN  174.75143    3382          41344        NaN   
1 -36.82308      NaN  174.80429    3480          41023        NaN   
2 -36.87175      NaN  174.60227   21094            NaN        NaN   
3 -36.89001      NaN  174.77511   11542            NaN        NaN   
4 -36.89261      NaN  174.77465   11543            NaN        NaN   

                    stop_name  location_type  stop_code  
0                   9 Nile Rd              0       3382  
1              40 Vauxhall Rd              0       3480  
2       Metcalfe Rd and Ranui              1      21094  
3  Manukau Rd and King George              1      11542  
4   Manukau Rd and Queen Mary              1      11543  
* stop_times --------------------
	                            trip_id arrival_time departure_time stop_id  \
0  1000046829-20161011151756_v46.25     07:00:00       07:00:00    6920   
1  1000046829-20161011151756_v46.25     07:02:10       07:02:10    6800   
2  1000046829-20161011151756_v46.25     07:02:20       07:02:20    6364   
3  1000046829-20161011151756_v46.25     07:02:30       07:02:30    6366   
4  1000046829-20161011151756_v46.25     07:02:40       07:02:40    6182   

   stop_sequence  stop_headsign  pickup_type  drop_off_type  \
0              1            NaN          NaN            NaN   
1              2            NaN          NaN            NaN   
2              3            NaN          NaN            NaN   
3              4            NaN          NaN            NaN   
4              5            NaN          NaN            NaN   

   shape_dist_traveled  
0             0.000000  
1             1.179775  
2             1.467670  
3             1.734413  
4             2.006302  
* trips --------------------
	  block_id   route_id  direction_id trip_headsign                    shape_id  \
0      NaN  route_091             1       Mangere  1209-20161011155909_v46.26   
1      NaN  route_128             0       Manukau  1232-20161011155909_v46.26   
2      NaN  route_079             0  Civic Centre   267-20161011151756_v46.25   
3      NaN  route_127             0       Manukau  1230-20161011155909_v46.26   
4      NaN  route_270             1     Glenfield    55-20161011155909_v46.26   

                          service_id                            trip_id  
0  14306060378-20161011155909_v46.26  14306060378-20161011155909_v46.26  
1   2366061839-20161011155909_v46.26   2366061839-20161011155909_v46.26  
2  14267044430-20161011151756_v46.25  14267044430-20161011151756_v46.25  
3   2365061662-20161011155909_v46.26   2365061662-20161011155909_v46.26  
4  12913041840-20161011155909_v46.26  12913041840-20161011155909_v46.26  
* transfers --------------------
	None

In [31]:
# Test build_geometry_by_shape 
#
geometry_by_shape = feed.build_geometry_by_shape()
shape_id = feed.trips['shape_id'].iat[0]  # First trip
geom = geometry_by_shape[shape_id]
geom


Out[31]:

In [32]:
# Test trip_to_geojoson
#
trip_id = feed.trips['trip_id'].iat[0]  
geoj = feed.trip_to_geojson(trip_id)
json.dumps(geoj)

# Paste into geojson.io


Out[32]:
'{"type": "Feature", "properties": {"direction_id": 1, "block_id": "n/a", "route_id": "route_091", "service_id": "14306060378-20161011155909_v46.26", "trip_id": "14306060378-20161011155909_v46.26", "trip_headsign": "Mangere", "shape_id": "1209-20161011155909_v46.26"}, "geometry": {"type": "LineString", "coordinates": [[174.76428, -36.85111], [174.76436999999999, -36.85114], [174.76442, -36.851009999999995], [174.76452, -36.8509], [174.76448, -36.85088], [174.7635, -36.8506], [174.76275, -36.850390000000004], [174.7627, -36.85038], [174.76264, -36.85052], [174.76243, -36.85095], [174.76234, -36.851079999999996], [174.76225, -36.85116], [174.76217, -36.851209999999995], [174.76188, -36.85135], [174.7616, -36.85148], [174.76153, -36.85158], [174.76137, -36.85183], [174.76127, -36.85219], [174.76127, -36.85229], [174.76138, -36.85289], [174.76141, -36.852990000000005], [174.76148999999998, -36.853159999999995], [174.7616, -36.853359999999995], [174.76171000000002, -36.85352], [174.76192, -36.85375], [174.76197, -36.853809999999996], [174.76206000000002, -36.85388], [174.76219, -36.85396], [174.76226, -36.854], [174.76235, -36.85403], [174.76242, -36.85405], [174.7625, -36.85407], [174.76272, -36.85411], [174.76283999999998, -36.85411], [174.76289, -36.85412], [174.76301, -36.85411], [174.7631, -36.8541], [174.76308, -36.85417], [174.76283999999998, -36.85471], [174.76248, -36.85553], [174.76207, -36.85645], [174.76182, -36.85703], [174.76179, -36.857079999999996], [174.7617, -36.8573], [174.76164, -36.85743], [174.76163, -36.857459999999996], [174.76169, -36.857479999999995], [174.76163, -36.857459999999996], [174.76161000000002, -36.8575], [174.76161000000002, -36.8577], [174.76163, -36.85777], [174.76167, -36.857820000000004], [174.7617, -36.85785], [174.76176, -36.857890000000005], [174.76183, -36.85791], [174.76206000000002, -36.8579], [174.76224, -36.85792], [174.76228, -36.857929999999996], [174.76238, -36.85797], [174.76241000000002, -36.85798], [174.76328, -36.858309999999996], [174.76359, -36.85843], [174.76339, -36.858779999999996], [174.76317, -36.859140000000004], [174.76273, -36.85989], [174.76268000000002, -36.85998], [174.76261, -36.8601], [174.76246, -36.86036], [174.76232, -36.86061], [174.76207, -36.86104], [174.762, -36.86115], [174.76199, -36.861270000000005], [174.76171000000002, -36.861779999999996], [174.76163, -36.86195], [174.76136, -36.862770000000005], [174.76119, -36.8633], [174.76121, -36.863479999999996], [174.7612, -36.863690000000005], [174.76123, -36.86381], [174.76135, -36.86404], [174.76148999999998, -36.86412], [174.76165, -36.86418], [174.76172, -36.8642], [174.7619, -36.86423], [174.76219, -36.864290000000004], [174.7622, -36.86423], [174.76219, -36.864290000000004], [174.76265, -36.86438], [174.76356, -36.86457], [174.76411000000002, -36.86469], [174.76528000000002, -36.86493], [174.76555, -36.86499], [174.76637, -36.865159999999996], [174.76641, -36.86517], [174.76723, -36.86535], [174.76741, -36.865390000000005], [174.76809, -36.86553], [174.76862, -36.86565], [174.76893, -36.86571], [174.76924, -36.86578], [174.76938, -36.865809999999996], [174.7705, -36.866040000000005], [174.77123, -36.86619], [174.77137, -36.86622], [174.77139, -36.866170000000004], [174.77137, -36.86622], [174.77139, -36.86622], [174.77194, -36.86634], [174.77258999999998, -36.866479999999996], [174.77369, -36.86671], [174.77455, -36.866890000000005], [174.77543, -36.86708], [174.77629, -36.867259999999995], [174.77661, -36.867329999999995], [174.77723, -36.867459999999994], [174.77725, -36.86741], [174.77723, -36.867459999999994], [174.77742, -36.8675], [174.7778, -36.86758], [174.77818, -36.86766], [174.77806, -36.86793], [174.77805, -36.86797], [174.77804, -36.86802], [174.77803, -36.868120000000005], [174.77805, -36.86828], [174.77804, -36.86834], [174.77803, -36.8684], [174.77799, -36.86853], [174.77775, -36.869279999999996], [174.77756000000002, -36.86988], [174.77746000000002, -36.8702], [174.77735, -36.870540000000005], [174.77722, -36.870940000000004], [174.77729, -36.87096], [174.77722, -36.870940000000004], [174.77703, -36.87153], [174.77701000000002, -36.87161], [174.77698999999998, -36.87172], [174.77698999999998, -36.87188], [174.77702, -36.87243], [174.77705, -36.87297], [174.77705, -36.87304], [174.77714, -36.87304], [174.77705, -36.87304], [174.77706, -36.873059999999995], [174.77709, -36.8736], [174.77711000000002, -36.87399], [174.77719, -36.87546], [174.77713, -36.87557], [174.77711000000002, -36.875609999999995], [174.77707, -36.87578], [174.77698999999998, -36.8761], [174.77698, -36.87615], [174.77697, -36.87618], [174.77705, -36.87619], [174.77697, -36.87618], [174.77647, -36.87843], [174.77647, -36.878440000000005], [174.77639, -36.8788], [174.77613, -36.87997], [174.77595, -36.88078], [174.77591999999999, -36.88097], [174.77591, -36.88105], [174.77589, -36.8814], [174.77581, -36.88237], [174.77579, -36.882709999999996], [174.77575, -36.883309999999994], [174.77573, -36.88358], [174.77572, -36.88371], [174.77567, -36.88447], [174.77565, -36.884890000000006], [174.77563, -36.88514], [174.77556, -36.886390000000006], [174.77553999999998, -36.886540000000004], [174.77553, -36.88667], [174.77543, -36.88748], [174.77541000000002, -36.8877], [174.77534, -36.88828], [174.77532, -36.88839], [174.77531000000002, -36.88852], [174.77526, -36.8888], [174.77517, -36.88928], [174.77505, -36.89], [174.77511, -36.89001], [174.77504, -36.89001], [174.77501999999998, -36.89017], [174.77483999999998, -36.89118], [174.77468000000002, -36.89204], [174.77462, -36.89239], [174.77458000000001, -36.8926], [174.77465, -36.89261], [174.77458000000001, -36.8926], [174.77445, -36.89332], [174.77443, -36.89342], [174.77438999999998, -36.893640000000005], [174.77434, -36.89391], [174.77424, -36.894259999999996], [174.77421, -36.89437], [174.77411999999998, -36.89468], [174.77393999999998, -36.89533], [174.77388, -36.89552], [174.77387, -36.8956], [174.77387, -36.8957], [174.77389, -36.8959], [174.77395, -36.89665], [174.77395, -36.89673], [174.77393, -36.8968], [174.77381, -36.8972], [174.77363, -36.89778], [174.77371000000002, -36.89779], [174.77363, -36.89778], [174.77351000000002, -36.89813], [174.77343, -36.898379999999996], [174.77318, -36.899190000000004], [174.77307, -36.89954], [174.77302, -36.89971], [174.77286, -36.900209999999994], [174.7728, -36.90039], [174.77277, -36.9005], [174.77282, -36.90051], [174.77276, -36.9005], [174.77256, -36.90113], [174.77206999999999, -36.90271], [174.77173, -36.90377], [174.77161999999998, -36.90413], [174.77143, -36.904720000000005], [174.77137, -36.904920000000004], [174.77076, -36.90684], [174.77066000000002, -36.90715], [174.77066000000002, -36.90716], [174.77043, -36.90789], [174.77036, -36.90814], [174.77013, -36.90887], [174.76984, -36.90976], [174.76976000000002, -36.91001], [174.76963, -36.91044], [174.76957, -36.91066], [174.7695, -36.91088], [174.76943, -36.91122], [174.76931000000002, -36.9118], [174.76923, -36.91225], [174.76916, -36.91261], [174.76907, -36.91312], [174.76883999999998, -36.91427], [174.76883999999998, -36.91429], [174.76879, -36.91455], [174.76862, -36.915459999999996], [174.7685, -36.916109999999996], [174.76848, -36.916290000000004], [174.76836, -36.91735], [174.76819, -36.91873], [174.76817, -36.9189], [174.76813, -36.919059999999995], [174.76805, -36.9193], [174.76765, -36.92038], [174.76763, -36.92046], [174.76763, -36.92058], [174.76765, -36.92069], [174.76766, -36.92073], [174.76768, -36.92078], [174.7677, -36.920840000000005], [174.76783, -36.920840000000005], [174.76793999999998, -36.92085], [174.76803, -36.92088], [174.76814, -36.92093], [174.76816000000002, -36.92098], [174.7682, -36.92102], [174.76835, -36.921209999999995], [174.76838999999998, -36.92125], [174.76843, -36.921279999999996], [174.76847, -36.92131], [174.76852, -36.92134], [174.7686, -36.92137], [174.76877, -36.92142], [174.76904, -36.921490000000006], [174.76918999999998, -36.92154], [174.76934, -36.92158], [174.76955, -36.92165], [174.76971, -36.9217], [174.7699, -36.92173], [174.77008999999998, -36.92177], [174.77022, -36.9218], [174.77061, -36.92188], [174.77078, -36.92195], [174.77088, -36.922], [174.77091000000001, -36.92201], [174.77104, -36.92212], [174.77119, -36.92223], [174.77166, -36.922540000000005], [174.77168999999998, -36.92255], [174.77178999999998, -36.92259], [174.77192, -36.92262], [174.77206999999999, -36.92263], [174.77302, -36.92265], [174.77397, -36.92266], [174.77407, -36.92265], [174.7742, -36.92266], [174.77441000000002, -36.92269], [174.77456, -36.92273], [174.77461, -36.922740000000005], [174.77594, -36.92324], [174.77614, -36.92329], [174.7763, -36.92334], [174.77653, -36.92338], [174.77697, -36.92352], [174.77715, -36.923559999999995], [174.77729, -36.92358], [174.77747, -36.92358], [174.77767, -36.92357], [174.77947, -36.92342], [174.78059, -36.923320000000004], [174.78087, -36.9233], [174.78145, -36.92325], [174.78184, -36.92322], [174.78312, -36.92311], [174.78388, -36.92305], [174.78418, -36.92302], [174.78458, -36.922979999999995], [174.78473, -36.92419], [174.78478, -36.92418], [174.78473, -36.92419], [174.78475, -36.9243], [174.78466, -36.92429], [174.7845, -36.9243], [174.7833, -36.924409999999995], [174.78336000000002, -36.924859999999995], [174.78341, -36.925259999999994], [174.78342, -36.925309999999996], [174.78358, -36.9253], [174.78439, -36.92522], [174.78496, -36.92517], [174.78545, -36.92512], [174.78557, -36.92511], [174.78566, -36.9251], [174.78571000000002, -36.92544], [174.78576, -36.92544], [174.78571000000002, -36.92544], [174.78582, -36.92622], [174.78585, -36.92647], [174.78552, -36.92649], [174.78318000000002, -36.92669], [174.78255, -36.92675], [174.78253, -36.92693], [174.78248, -36.92708], [174.78222, -36.92799], [174.78223, -36.92822], [174.78226, -36.928309999999996], [174.78242, -36.9285], [174.78319, -36.9289], [174.78343, -36.92906], [174.7842, -36.92949], [174.78474, -36.929829999999995], [174.78512, -36.93008], [174.78663999999998, -36.931290000000004], [174.78676000000002, -36.93141], [174.78692, -36.93158], [174.78707, -36.93172], [174.78733, -36.93202], [174.78762, -36.93237], [174.78808, -36.93306], [174.78824, -36.93336], [174.78831, -36.93351], [174.7884, -36.933679999999995], [174.78848, -36.933859999999996], [174.78858, -36.93407], [174.78869, -36.93436], [174.78884, -36.9348], [174.78909, -36.935520000000004], [174.7894, -36.936479999999996], [174.78951999999998, -36.936859999999996], [174.78978, -36.93714], [174.78984, -36.93723], [174.78987, -36.93728], [174.78994, -36.93743], [174.79015, -36.93786], [174.79043000000001, -36.93845], [174.79067, -36.938959999999994], [174.79102, -36.939679999999996], [174.79121, -36.9401], [174.79125, -36.94024], [174.79123, -36.94032], [174.79111, -36.94034], [174.79032, -36.940509999999996], [174.78985, -36.9406], [174.78898, -36.94076], [174.78897, -36.94076], [174.78867, -36.94081], [174.7878, -36.94097], [174.78779, -36.94097], [174.78746, -36.94103], [174.78717, -36.94107], [174.78712, -36.94109], [174.78708, -36.9411], [174.78703000000002, -36.94112], [174.78694, -36.941140000000004], [174.78669, -36.941159999999996], [174.78663999999998, -36.941159999999996], [174.78624, -36.94124], [174.78616, -36.94126], [174.78503999999998, -36.94146], [174.78423999999998, -36.9416], [174.78212, -36.941990000000004], [174.78158, -36.94209], [174.781, -36.942190000000004], [174.78091, -36.942209999999996], [174.77986, -36.9424], [174.7793, -36.9425], [174.77916000000002, -36.94252], [174.77903999999998, -36.94256], [174.77893999999998, -36.94265], [174.77889, -36.94273], [174.77831, -36.94247], [174.77683000000002, -36.94182], [174.77682, -36.94181], [174.77591, -36.9414], [174.77581, -36.94135], [174.77516, -36.94106], [174.77508, -36.941], [174.77504, -36.94099], [174.77494, -36.94104], [174.77483, -36.94106], [174.77463999999998, -36.94105], [174.7746, -36.94103], [174.77421999999999, -36.94088], [174.77324, -36.94048], [174.77305, -36.9404], [174.77291, -36.94034], [174.77281000000002, -36.94031], [174.77268, -36.94031], [174.77256, -36.94032], [174.77241999999998, -36.94036], [174.77233999999999, -36.94039], [174.77223999999998, -36.94045], [174.77211, -36.940540000000006], [174.77199, -36.9406], [174.77183, -36.94064], [174.77175, -36.94065], [174.77161, -36.94064], [174.77052, -36.940509999999996], [174.7704, -36.94052], [174.76953999999998, -36.9407], [174.76941000000002, -36.94073], [174.76931000000002, -36.9408], [174.76873, -36.94127], [174.76854, -36.9414], [174.76837, -36.94149], [174.76821999999999, -36.94155], [174.768, -36.9416], [174.76792, -36.94162], [174.76786, -36.941629999999996], [174.76783, -36.941629999999996], [174.76775, -36.94164], [174.76743000000002, -36.94164], [174.76741, -36.94191], [174.76741, -36.942009999999996], [174.76744, -36.942370000000004], [174.76746, -36.94247], [174.76756, -36.942859999999996], [174.76786, -36.94283], [174.76807, -36.94285], [174.76823000000002, -36.94288], [174.76838999999998, -36.94292], [174.76933, -36.94316], [174.76941000000002, -36.94319], [174.76944, -36.94319], [174.76998, -36.943329999999996], [174.77028, -36.94343], [174.77053, -36.94352], [174.77065, -36.94357], [174.77174, -36.94403], [174.7725, -36.94435], [174.7727, -36.94443], [174.77463999999998, -36.945240000000005], [174.77514, -36.94545], [174.7752, -36.945479999999996], [174.77559, -36.945640000000004], [174.77674, -36.94613], [174.77657, -36.9464], [174.77635, -36.94676], [174.77617, -36.94705], [174.77589, -36.94749], [174.77584, -36.94761], [174.77581, -36.94774], [174.7758, -36.94791], [174.77581999999998, -36.94805], [174.77587, -36.948209999999996], [174.77597, -36.948409999999996], [174.77603, -36.94854], [174.77615, -36.94883], [174.77648, -36.94954], [174.7766, -36.94982], [174.77664, -36.949909999999996], [174.77675, -36.95015], [174.77698, -36.95066], [174.777, -36.95071], [174.77743999999998, -36.95167], [174.77751, -36.951840000000004], [174.77764, -36.95199], [174.77773, -36.95205], [174.77781000000002, -36.952090000000005], [174.77862, -36.95256], [174.77879, -36.952659999999995], [174.78026, -36.9535], [174.78085, -36.953829999999996], [174.781, -36.95394], [174.78105, -36.954], [174.78115, -36.95413], [174.78121000000002, -36.9542], [174.78134, -36.954370000000004], [174.78198999999998, -36.95521], [174.78252, -36.95588], [174.78265, -36.95605], [174.78316999999998, -36.9559], [174.78328, -36.95588], [174.78328, -36.955870000000004], [174.78482, -36.95544], [174.78492, -36.95541], [174.7851, -36.95537], [174.78523, -36.95536], [174.78541, -36.95536], [174.78558999999998, -36.95535], [174.78654, -36.955290000000005], [174.7869, -36.955259999999996], [174.78824, -36.95518], [174.78897, -36.95514], [174.78897, -36.9551], [174.78897, -36.95514], [174.78993, -36.95508], [174.79002, -36.95507], [174.79019, -36.955040000000004], [174.79067, -36.9549], [174.79086, -36.954840000000004], [174.79137, -36.95472], [174.79166, -36.95466], [174.79245, -36.95447], [174.79327, -36.95427], [174.79328999999998, -36.95426], [174.79418, -36.95405], [174.79494, -36.95386], [174.79528, -36.95378], [174.79568999999998, -36.95368], [174.79603, -36.9536], [174.79651, -36.95348], [174.79653000000002, -36.95348], [174.79697, -36.95337], [174.7973, -36.95329], [174.79758999999999, -36.95322], [174.79782, -36.95316], [174.79831000000001, -36.95304], [174.79869, -36.95295], [174.79872, -36.95295], [174.8002, -36.95258], [174.80019, -36.95255], [174.8002, -36.95259], [174.80199, -36.95215], [174.80218, -36.95211], [174.80219, -36.9521], [174.80237, -36.95205], [174.80256, -36.95196], [174.8028, -36.95183], [174.80361000000002, -36.95143], [174.80372, -36.951370000000004], [174.80481, -36.95081], [174.80545, -36.95049], [174.80626, -36.95008], [174.80733, -36.94954], [174.8075, -36.94945], [174.80768, -36.94938], [174.80786, -36.949329999999996], [174.80829, -36.9492], [174.80896, -36.949], [174.80929, -36.9497], [174.80938, -36.9499], [174.80941, -36.94997], [174.80945, -36.95012], [174.80946, -36.95023], [174.80945, -36.95035], [174.80938, -36.95067], [174.80927, -36.95113], [174.80913, -36.95169], [174.80895, -36.95245], [174.80876999999998, -36.95322], [174.80863, -36.953790000000005], [174.80862, -36.953829999999996], [174.80856, -36.95394], [174.80845, -36.95405], [174.80838, -36.9541], [174.80808000000002, -36.954240000000006], [174.80772, -36.95442], [174.80695, -36.9548], [174.80655, -36.95499], [174.80631, -36.95511], [174.80594, -36.955290000000005], [174.80482, -36.95583], [174.80385, -36.9563], [174.80418, -36.95714], [174.80418999999998, -36.95717], [174.80456, -36.9581], [174.80472, -36.9585], [174.80488, -36.95892], [174.80489, -36.958940000000005], [174.80496000000002, -36.95913], [174.80508999999998, -36.95944], [174.80553, -36.960570000000004], [174.80553999999998, -36.960570000000004], [174.80585, -36.96138], [174.8065, -36.963], [174.80658, -36.96315], [174.80666000000002, -36.96332], [174.80683, -36.96367], [174.80708, -36.96418], [174.8075, -36.96502], [174.80767, -36.96536], [174.80785, -36.96573], [174.80798000000001, -36.96589], [174.8083, -36.96609], [174.80853000000002, -36.96617], [174.80866, -36.966190000000005], [174.80876, -36.96625], [174.80882, -36.96634], [174.80884, -36.966429999999995], [174.8088, -36.96653], [174.80873, -36.9666], [174.80862, -36.96665], [174.80852, -36.96666], [174.80838, -36.96668], [174.80822, -36.96673], [174.80774, -36.96699], [174.80698999999998, -36.96752], [174.80652, -36.96787], [174.80597, -36.96826], [174.8059, -36.9683], [174.80595, -36.96836], [174.8059, -36.968309999999995], [174.8058, -36.96837], [174.80561, -36.96848], [174.80555, -36.9685], [174.80546999999999, -36.96855], [174.80534, -36.96861], [174.80499, -36.968759999999996], [174.80483999999998, -36.96883], [174.80465, -36.96891], [174.80438, -36.969], [174.80418999999998, -36.96905], [174.80393, -36.9691], [174.80374, -36.969120000000004], [174.80353, -36.96915], [174.8032, -36.96917], [174.80293999999998, -36.96917], [174.80221, -36.9691], [174.80213999999998, -36.9691], [174.80199, -36.969120000000004], [174.80188, -36.96914], [174.80178999999998, -36.9691], [174.80166, -36.96907], [174.80153, -36.96906], [174.80069, -36.96898], [174.80056000000002, -36.96897], [174.80013, -36.968920000000004], [174.79985, -36.9689], [174.79971, -36.96887], [174.79967, -36.96898]]}}'

In [33]:
# Test compute_screen_line_counts
#
# A trip should intersect itself
shape_id = feed.trips['shape_id'].iat[0]
print(shape_id)

screen_line = feed.build_geometry_by_shape(shape_ids=[shape_id])[shape_id]

counts = feed.compute_screen_line_counts(screen_line)
print(counts.head())

shape_id in counts['shape_id'].values


1209-20161011155909_v46.26
                             trip_id   route_id route_short_name  \
0  14306060378-20161011155909_v46.26  route_091              309   
1  14306060390-20161011155909_v46.26  route_091              309   
2  14306060351-20161011155909_v46.26  route_091              309   
3  14306060328-20161011155909_v46.26  route_091              309   
4  14306060389-20161011155909_v46.26  route_091              309   

   direction_id                    shape_id  
0             1  1209-20161011155909_v46.26  
1             1  1209-20161011155909_v46.26  
2             1  1209-20161011155909_v46.26  
3             1  1209-20161011155909_v46.26  
4             1  1209-20161011155909_v46.26  
Out[33]:
True

In [34]:
# Create a screen line across the Auckland Harbour Bridge;
# see http://geojson.io/#id=gist:anonymous/1ef5babe013688950587e853310cda9d&map=14/-36.8301/174.7439
#
screen_line_json = {
    "type": "Feature",
    "properties": {},
    "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            174.74158287048337,
            -36.83037852590646
          ],
          [
            174.74905014038086,
            -36.832233404901814
          ]
        ]
    }
}

screen_line = sg.shape(screen_line_json["geometry"])
screen_line


Out[34]:

In [7]:
counts = feed.compute_screen_line_counts(screen_line)
counts


Out[7]:
trip_id route_id route_short_name direction_id shape_id
0 3922046164-20161011151756_v46.25 route_274 922 1 560-20161011151756_v46.25
1 3922053258-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
2 3922046194-20161011151756_v46.25 route_274 922 1 560-20161011151756_v46.25
3 3922053246-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
4 3922046189-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
5 3922046201-20161011151756_v46.25 route_274 922 1 560-20161011151756_v46.25
6 3922053270-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
7 3922046199-20161011151756_v46.25 route_274 922 1 560-20161011151756_v46.25
8 3922046174-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
9 3922053247-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
10 3922046196-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
11 3922046205-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
12 3922053259-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
13 3922046181-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
14 3922046167-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
15 3922053237-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
16 3922053221-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
17 3922046183-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
18 3922053277-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
19 3922053257-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
20 3922053253-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
21 3922046176-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
22 3922046193-20161011155909_v46.26 route_274 922 1 483-20161011155909_v46.26
23 3922053221-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
24 3922053263-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
25 3922053235-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
26 3922053262-20161011151756_v46.25 route_274 922 0 559-20161011151756_v46.25
27 3922053251-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
28 3922046171-20161011151756_v46.25 route_274 922 1 560-20161011151756_v46.25
29 3922053229-20161011155909_v46.26 route_274 922 0 482-20161011155909_v46.26
... ... ... ... ... ...
4225 4953028243-20161011151756_v46.25 route_280 953 0 816-20161011151756_v46.25
4226 4953052954-20161011155909_v46.26 route_280 953 1 708-20161011155909_v46.26
4227 4953028244-20161011151756_v46.25 route_280 953 0 816-20161011151756_v46.25
4228 4953052957-20161011151756_v46.25 route_280 953 1 817-20161011151756_v46.25
4229 4953028241-20161011151756_v46.25 route_280 953 0 816-20161011151756_v46.25
4230 4953052956-20161011151756_v46.25 route_280 953 1 817-20161011151756_v46.25
4231 4953028242-20161011155909_v46.26 route_280 953 0 707-20161011155909_v46.26
4232 4953052956-20161011155909_v46.26 route_280 953 1 708-20161011155909_v46.26
4233 12528042053-20161011155909_v46.26 route_325 N83 1 576-20161011155909_v46.26
4234 12528042051-20161011155909_v46.26 route_325 N83 1 575-20161011155909_v46.26
4235 12528042050-20161011155909_v46.26 route_325 N83 1 575-20161011155909_v46.26
4236 12528042052-20161011151756_v46.25 route_325 N83 1 658-20161011151756_v46.25
4237 12528042052-20161011155909_v46.26 route_325 N83 1 575-20161011155909_v46.26
4238 12528042051-20161011151756_v46.25 route_325 N83 1 658-20161011151756_v46.25
4239 12528042054-20161011151756_v46.25 route_325 N83 1 659-20161011151756_v46.25
4240 12528042050-20161011151756_v46.25 route_325 N83 1 658-20161011151756_v46.25
4241 12528042055-20161011151756_v46.25 route_325 N83 1 659-20161011151756_v46.25
4242 12528042055-20161011155909_v46.26 route_325 N83 1 576-20161011155909_v46.26
4243 12528042054-20161011155909_v46.26 route_325 N83 1 576-20161011155909_v46.26
4244 12528042053-20161011151756_v46.25 route_325 N83 1 659-20161011151756_v46.25
4245 12866053285-20161011151756_v46.25 route_251 866X 0 732-20161011151756_v46.25
4246 12866053286-20161011155909_v46.26 route_251 866X 0 636-20161011155909_v46.26
4247 12866053286-20161011151756_v46.25 route_251 866X 0 732-20161011151756_v46.25
4248 12866053285-20161011155909_v46.26 route_251 866X 0 636-20161011155909_v46.26
4249 12834046246-20161011151756_v46.25 route_244 834 0 1249-20161011151756_v46.25
4250 12834046246-20161011155909_v46.26 route_244 834 0 1109-20161011155909_v46.26
4251 4970029412-20161011155909_v46.26 route_288 970 1 866-20161011155909_v46.26
4252 4970029411-20161011155909_v46.26 route_288 970 1 866-20161011155909_v46.26
4253 4970029411-20161011151756_v46.25 route_288 970 1 961-20161011151756_v46.25
4254 4970029412-20161011151756_v46.25 route_288 970 1 961-20161011151756_v46.25

4255 rows × 5 columns


In [ ]: