Interpolate stop times for non timing point stops
Interpolate stop times for non timing point stops

--- a/busui/common.inc.php
+++ b/busui/common.inc.php
@@ -2,8 +2,12 @@
 date_default_timezone_set('Australia/ACT');
 $APIurl = "http://localhost:8765";
 error_reporting(E_ALL ^ E_NOTICE);
+
+// SELECT array_to_string(array(SELECT REPLACE(name_2006, ',', '\,') as name FROM suburbs order by name), ',')
+$suburbs = explode(",","Acton,Ainslie,Amaroo,Aranda,Banks,Barton,Belconnen,Bonner,Bonython,Braddon,Bruce,Calwell,Campbell,Chapman,Charnwood,Chifley,Chisholm,City,Conder,Cook,Curtin,Deakin,Dickson,Downer,Duffy,Dunlop,Evatt,Fadden,Farrer,Fisher,Florey,Flynn,Forrest,Franklin,Fraser,Fyshwick,Garran,Gilmore,Giralang,Gordon,Gowrie,Greenway,Griffith,Gungahlin,Hackett,Hall,Harrison,Hawker,Higgins,Holder,Holt,Hughes,Hume,Isaacs,Isabella Plains,Kaleen,Kambah,Kingston,Latham,Lawson,Lyneham,Lyons,Macarthur,Macgregor,Macquarie,Mawson,McKellar,Melba,Mitchell,Monash,Narrabundah,Ngunnawal,Nicholls,Oaks Estate,O'Connor,O'Malley,Oxley,Page,Palmerston,Parkes,Pearce,Phillip,Pialligo,Red Hill,Reid,Richardson,Rivett,Russell,Scullin,Spence,Stirling,Symonston,Tharwa,Theodore,Torrens,Turner,Unclassified ACT,Wanniassa,Waramanga,Watson,Weetangera,Weston,Yarralumla");
+
  // you have to open the session to be able to modify or remove it 
- session_start(); 
+session_start(); 
  
 
 function isDebug()

 Binary files /dev/null and b/busui/css/images/01-refresh.png differ
 Binary files /dev/null and b/busui/css/images/02-redo.png differ
 Binary files /dev/null and b/busui/css/images/06-magnify.png differ
 Binary files /dev/null and b/busui/css/images/07-map-marker.png differ
 Binary files /dev/null and b/busui/css/images/101-gameplan.png differ
 Binary files /dev/null and b/busui/css/images/102-walk.png differ
 Binary files /dev/null and b/busui/css/images/103-map.png differ
 Binary files /dev/null and b/busui/css/images/113-navigation.png differ
 Binary files /dev/null and b/busui/css/images/121-landscape.png differ
 Binary files /dev/null and b/busui/css/images/13-target.png differ
 Binary files /dev/null and b/busui/css/images/139-flags.png differ
 Binary files /dev/null and b/busui/css/images/145-persondot.png differ
 Binary files /dev/null and b/busui/css/images/184-warning.png differ
 Binary files /dev/null and b/busui/css/images/193-location-arrow.png differ
 Binary files /dev/null and b/busui/css/images/28-star.png differ
 Binary files /dev/null and b/busui/css/images/53-house.png differ
 Binary files /dev/null and b/busui/css/images/55-network.png differ
 Binary files /dev/null and b/busui/css/images/57-download.png differ
 Binary files /dev/null and b/busui/css/images/58-bookmark.png differ
 Binary files /dev/null and b/busui/css/images/59-flag.png differ
 Binary files /dev/null and b/busui/css/images/60-signpost.png differ
 Binary files /dev/null and b/busui/css/images/73-radar.png differ
 Binary files /dev/null and b/busui/css/images/74-location.png differ
 Binary files /dev/null and b/busui/css/images/83-calendar.png differ
 Binary files a/busui/images/01-refresh.png and /dev/null differ
 Binary files a/busui/images/02-redo.png and /dev/null differ
 Binary files a/busui/images/06-magnify.png and /dev/null differ
 Binary files a/busui/images/07-map-marker.png and /dev/null differ
 Binary files a/busui/images/101-gameplan.png and /dev/null differ
 Binary files a/busui/images/102-walk.png and /dev/null differ
 Binary files a/busui/images/103-map.png and /dev/null differ
 Binary files a/busui/images/113-navigation.png and /dev/null differ
 Binary files a/busui/images/121-landscape.png and /dev/null differ
 Binary files a/busui/images/13-target.png and /dev/null differ
 Binary files a/busui/images/139-flags.png and /dev/null differ
 Binary files a/busui/images/145-persondot.png and /dev/null differ
 Binary files a/busui/images/184-warning.png and /dev/null differ
 Binary files a/busui/images/193-location-arrow.png and /dev/null differ
 Binary files a/busui/images/28-star.png and /dev/null differ
 Binary files a/busui/images/53-house.png and /dev/null differ
 Binary files a/busui/images/55-network.png and /dev/null differ
 Binary files a/busui/images/57-download.png and /dev/null differ
 Binary files a/busui/images/58-bookmark.png and /dev/null differ
 Binary files a/busui/images/59-flag.png and /dev/null differ
 Binary files a/busui/images/60-signpost.png and /dev/null differ
 Binary files a/busui/images/73-radar.png and /dev/null differ
 Binary files a/busui/images/74-location.png and /dev/null differ
 Binary files a/busui/images/83-calendar.png and /dev/null differ
--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -88,7 +88,10 @@
 def StopToTuple(stop):
   """Return tuple as expected by javascript function addStopMarkerFromList"""
   return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
-          float(stop.stop_lon), stop.location_type)
+          float(stop.stop_lon), stop.location_type, stop.stop_code)
+def StopCodeToTuple(stop, code):
+  return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
+          float(stop.stop_lon), stop.location_type, code)
 
 
 class ScheduleRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
@@ -301,11 +304,11 @@
     except KeyError:
        # if a non-existent trip is searched for, the return nothing
       return
-    time_stops = trip.GetTimeStops()
+    time_stops = trip.GetTimeInterpolatedStops()
     stops = []
     times = []
-    for arr,dep,stop in time_stops:
-      stops.append(StopToTuple(stop))
+    for arr,ts,is_timingpoint in time_stops:
+      stops.append(StopToTuple(ts.stop))
       times.append(arr)
     return [stops, times]
 
@@ -357,8 +360,10 @@
     schedule = self.server.schedule
     matches = []
     for s in schedule.GetStopList():
+      #wtf, stop_code changes into stop_name after .find()
+      virginstopCode = s.stop_code
       if s.stop_code.find("Wj") == -1:
-        matches.append(StopToTuple(s))
+        matches.append(StopCodeToTuple(s,virginstopCode))
     return matches
 
   def handle_json_GET_stopsearch(self, params):
@@ -366,8 +371,28 @@
     query = params.get('q', None).lower()
     matches = []
     for s in schedule.GetStopList():
-      if s.stop_id.lower().find(query) != -1 or s.stop_name.lower().find(query) != -1:
+      if s.stop_name.lower().find(query) != -1 or s.stop_code.lower().find(query) != -1:
         matches.append(StopToTuple(s))
+    return matches
+
+  def handle_json_GET_stopnamesearch(self, params):
+    schedule = self.server.schedule
+    query = params.get('q', None).lower()
+    matches = []
+    for s in schedule.GetStopList():
+      if s.stop_name.lower().find(query) != -1:
+        matches.append(StopToTuple(s))
+    return matches
+  
+  def handle_json_GET_stopcodesearch(self, params):
+    schedule = self.server.schedule
+    query = params.get('q', None).lower()
+    matches = []
+    for s in schedule.GetStopList():
+      #wtf, stop_code changes into stop_name after .find()
+      virginstopCode = s.stop_code
+      if s.stop_code.lower().find(query) != -1:
+        matches.append(StopCodeToTuple(s,virginstopCode))
     return matches
 
   def handle_json_GET_stop(self, params):

--- a/busui/stopList.php
+++ b/busui/stopList.php
@@ -4,12 +4,22 @@
 echo'
 		<div data-role="navbar"> 
 			<ul> 
-				<li><a href="stopList.php">Timing Points</a></li> 
+				<li><a href="stopList.php">Timing Points</a></li>
+				<li><a href="stopList.php?suburbs=yes">By Suburb</a></li>
+				<li><a href="stopList.php?nearby=yes">Nearby Stops</a></li>
 				<li><a href="stopList.php?allstops=yes">All Stops</a></li> 
 			</ul>
                 </div>
 	';
-        
+// By suburb
+if (isset($_REQUEST['suburbs'])) {
+   echo '  <ul data-role="listview" data-filter="true" data-inset="true" >';
+   foreach ($suburbs as $suburb) {
+         echo  '<li><a href="stopList.php?suburb='.urlencode($suburb).'">'.$suburb.'</a></li>';
+   }
+echo '</ul>';
+} else {
+// Timing Points / All stops
         echo '<div class="noscriptnav"> Go to letter: ';
 foreach(range('A','Z') as $letter) 
 { 
@@ -22,7 +32,8 @@
 echo '  <ul data-role="listview" data-filter="true" data-inset="true" >';
 $url = $APIurl."/json/timingpoints";
 if ($_REQUEST['allstops']) $url = $APIurl."/json/stops";
-if ($_REQUEST['lat'] && $_REQUEST['lon']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['lat']}&lon={$_REQUEST['lon']}&limit=15";
+if ($_REQUEST['nearby']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['lat']}&lon={$_REQUEST['lon']}&limit=15";
+if ($_REQUEST['suburb']) $url = $APIurl."/json/neareststops?lat={$_REQUEST['suburb']}";
 $contents = json_decode(getPage($url));
 debug(print_r($contents,true));
 foreach ($contents as $key => $row) {
@@ -42,7 +53,7 @@
       echo  '<li><a href="stop.php?stopid='.$row[0].'">'.bracketsMeanNewLine($row[1]).'</a></li>';
         }
 echo '</ul>';
-
+}
 include_footer();
 ?>
 

--- a/busui/view.sh
+++ b/busui/view.sh
@@ -1,8 +1,2 @@
-# input location (via GPS or favourites or search) and destination (via searchable list, optional)
-# http://10.0.1.153:8765/json/boundboxstops?n=-35.27568499917103&e=149.1346514225006&s=-35.279495003493516&w=149.12622928619385&limit=50
-# http://10.0.1.153:8765/json/stoptrips?stop=43&time=64440 # recursively call to show all services nearby, sort by distance, need to filter by service period
-# Hey, can pick destination again from a list filtered to places these stops go if you're curious!
-# http://10.0.1.153:8765/json/tripstoptimes?trip=2139 # Can recursively call and parse based on intended destination to show ETA
-# http://10.0.1.153:8765/json/triprows?trip=2139 # For pretty maps
 python schedule_viewer.py --feed=../maxious-canberra-transit-feed/cbrfeed.zip --key=ABQIAAAA95XYXN0cki3Yj_Sb71CFvBTPaLd08ONybQDjcH_VdYtHHLgZvRTw2INzI_m17_IoOUqH3RNNmlTk1Q
 

--- a/maxious-canberra-transit-feed/04-generateymlinclude.rb
+++ b/maxious-canberra-transit-feed/04-generateymlinclude.rb
@@ -27,7 +27,6 @@
 	time_points.each do |time_point|
 		#pp time_point
 		# 0 = name
-
 		# 1 = lat*100000
 		# 2 = lng*100000
 		#pp time_point[0]
@@ -45,8 +44,9 @@
 		# 1 = lat*100000
 		# 2 = lng*100000
 		# 3 = name
+		# 4 = suburb(s)
 		#pp time_point[0]
-		f2.puts "  - { name: #{stop[3]},stop_code: #{stop[0]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}}"
+		f2.puts "  - { name: #{stop[3]},stop_code: #{stop[0]}!#{stop[4]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}}"
 	end
 	f2.puts "routes:\n";
 end

--- a/maxious-canberra-transit-feed/cbrtable.yml.in
+++ b/maxious-canberra-transit-feed/cbrtable.yml.in
@@ -228,1664 +228,1664 @@
   - { name: Woden Bus Station (Platform 9),stop_code: Woden Bus Station (Platform 9), lat: -35.3442083, lng: 149.0877771}
   - { name: Woodcock / Clare Dennis,stop_code: Woodcock / Clare Dennis, lat: -35.4422566, lng: 149.0854375}
   - { name: Yarralumla,stop_code: Yarralumla, lat: -35.30725, lng: 149.0972}
-  - { name: Cowper Street,stop_code: Wjz5SWN, lat: -35.2535974, lng: 149.1390827}
-  - { name: Learmonth Drive,stop_code: Wjz230G, lat: -35.4032475, lng: 149.0634951}
-  - { name: Hurtle Avenue,stop_code: Wjz1dX2, lat: -35.4341379, lng: 149.0831762}
-  - { name: Copland Drive,stop_code: Wjz67xQ, lat: -35.2046532, lng: 149.0691406}
-  - { name: Baddeley Crescent,stop_code: Wjz67nz, lat: -35.2006201, lng: 149.0659965}
-  - { name: King Edward Terrace,stop_code: Wjz4S1U, lat: -35.2983385, lng: 149.1296979}
-  - { name: Theodore Street,stop_code: Wjz3fCx, lat: -35.333256, lng: 149.0798309}
-  - { name: Hopetoun Circuit,stop_code: Wjz4A7o, lat: -35.3052441, lng: 149.107042}
-  - { name: Schlich Street,stop_code: Wjz4tpE, lat: -35.3038329, lng: 149.1005569}
-  - { name: Hopetoun Circuit,stop_code: Wjz4A2c, lat: -35.3082791, lng: 149.1066534}
-  - { name: Lawrence Wackett Crescent,stop_code: Wjz1HEb, lat: -35.4471149, lng: 149.1245306}
-  - { name: Chippindall Circuit,stop_code: Wjz1xWZ, lat: -35.4565002, lng: 149.1174205}
-  - { name: Goyder Street,stop_code: Wjzb705, lat: -35.3370433, lng: 149.1505109}
-  - { name: Clift Crescent,stop_code: Wjz1CdY, lat: -35.4270927, lng: 149.1090734}
-  - { name: Kingsford Smith Drive,stop_code: Wjr_UPA, lat: -35.1977713, lng: 149.0605874}
-  - { name: Clarey Crescent,stop_code: Wjz707Z, lat: -35.1948745, lng: 149.0637273}
-  - { name: Owen Dixon Drive,stop_code: Wjz70IY, lat: -35.1970964, lng: 149.0706179}
-  - { name: Copland Drive,stop_code: Wjz67BD, lat: -35.2015929, lng: 149.0686908}
-  - { name: Bimbimbie Street,stop_code: Wjz68Y0, lat: -35.2413091, lng: 149.0832098}
-  - { name: Bimbimbie Street,stop_code: Wjz68Ip, lat: -35.2412881, lng: 149.0809439}
-  - { name: Bandjalong Crescent,stop_code: Wjz5dQt, lat: -35.2573605, lng: 149.0822652}
-  - { name: Cooyong Street,stop_code: Wjz5NAQ, lat: -35.2794375, lng: 149.1349942}
-  - { name: Kambah pool Road,stop_code: WjrXMN9, lat: -35.3751239, lng: 149.0489789}
-  - { name: Hodgson Crescent,stop_code: Wjz3i6e, lat: -35.3603188, lng: 149.084779}
-  - { name: Melrose Drive,stop_code: Wjz3k1J, lat: -35.3528521, lng: 149.0854118}
-  - { name: Amy Ackman Street,stop_code: Wjz7ZaP, lat: -35.1710474, lng: 149.141884}
-  - { name: Cowper Street,stop_code: Wjz5Za5, lat: -35.2588175, lng: 149.1409439}
-  - { name: Gundaroo Drive,stop_code: Wjz7xp9, lat: -35.193896, lng: 149.1108506}
-  - { name: Constitution Avenue,stop_code: Wjz5MsT, lat: -35.2846782, lng: 149.133671}
-  - { name: Hindmarsh Drive,stop_code: WjrXBSS, lat: -35.3438051, lng: 149.0278253}
-  - { name: Northbourne Avenue,stop_code: Wjz5SrO, lat: -35.2528485, lng: 149.1336705}
-  - { name: Northbourne Avenue,stop_code: Wjz5Pl0, lat: -35.2681201, lng: 149.1312}
-  - { name: Northbourne Avenue,stop_code: Wjz5N5h, lat: -35.2790396, lng: 149.1288222}
-  - { name: Northbourne Avenue,stop_code: Wjz5RkN, lat: -35.2577065, lng: 149.1322899}
-  - { name: Kitchener Street,stop_code: Wjz3uK7, lat: -35.3382669, lng: 149.1024969}
-  - { name: Baldwin Drive,stop_code: Wjz6keB, lat: -35.2175697, lng: 149.0866478}
-  - { name: O'Loghlen Street,stop_code: Wjr-IGJ, lat: -35.2203467, lng: 149.0373003}
-  - { name: White Crescent,stop_code: Wjzd0oD, lat: -35.2874406, lng: 149.1552177}
-  - { name: Parliament Drive,stop_code: Wjz4INj, lat: -35.3091118, lng: 149.1261312}
-  - { name: Holman Street,stop_code: Wjz3fO2, lat: -35.3359729, lng: 149.0817737}
-  - { name: Scantlebury Crescent,stop_code: Wjz1HOf, lat: -35.4453654, lng: 149.1258946}
-  - { name: Lawrence Wackett Crescent,stop_code: Wjz1GsO, lat: -35.4499519, lng: 149.1226442}
-  - { name: Louis Loder Street,stop_code: Wjz1G32, lat: -35.4506139, lng: 149.1174495}
-  - { name: Heagney Crescent,stop_code: Wjz1TgM, lat: -35.4253782, lng: 149.1323625}
-  - { name: Baskerville Street,stop_code: Wjz1LBV, lat: -35.4218605, lng: 149.1241279}
-  - { name: O'Halloran Circuit,stop_code: WjrWYDO, lat: -35.3929049, lng: 149.058196}
-  - { name: Canopus Crescent,stop_code: Wjz6t9w, lat: -35.21597, lng: 149.09763}
-  - { name: Haydon Drive,stop_code: Wjz6hxB, lat: -35.2374959, lng: 149.0907853}
-  - { name: Baldwin Drive,stop_code: Wjz6rrI, lat: -35.2252509, lng: 149.1005016}
-  - { name: College Street,stop_code: Wjz681S, lat: -35.2428905, lng: 149.0745728}
-  - { name: Maribyrnong Avenue,stop_code: Wjz6y90, lat: -35.2324006, lng: 149.1079069}
-  - { name: Ellenborough Street,stop_code: Wjz6yzQ, lat: -35.2307289, lng: 149.1130906}
-  - { name: Aikman Drive,stop_code: Wjz69ht, lat: -35.2375061, lng: 149.0768646}
-  - { name: Boddington Crescent,stop_code: WjrWZA3, lat: -35.3893963, lng: 149.0571767}
-  - { name: Anketell  Street,stop_code: Wjz213w, lat: -35.4123171, lng: 149.0633299}
-  - { name: Athllon Drive,stop_code: Wjz3gQn, lat: -35.3725942, lng: 149.0931105}
-  - { name: Athllon Drive,stop_code: Wjz3gMq, lat: -35.3757982, lng: 149.0932419}
-  - { name: Baldwin Drive,stop_code: Wjz6rhW, lat: -35.2267553, lng: 149.0994502}
-  - { name: Liversidge Street,stop_code: Wjz5E4O, lat: -35.2851023, lng: 149.1186022}
-  - { name: Bradley Street,stop_code: Wjz3ldj, lat: -35.3447574, lng: 149.0862912}
-  - { name: Pitman,stop_code: Wjz20nk, lat: -35.4147569, lng: 149.0657435}
-  - { name: Bradley Street,stop_code: Wjz3lm0, lat: -35.34438, lng: 149.0872661}
-  - { name: Callam Street,stop_code: Wjz3lmi, lat: -35.3442093, lng: 149.0876443}
-  - { name: Pitman,stop_code: Wjz21g2, lat: -35.414217, lng: 149.0653492}
-  - { name: Cohen Street,stop_code: Wjr-USa, lat: -35.2398454, lng: 149.0600442}
-  - { name: Darwinia Terrace,stop_code: WjrXBWn, lat: -35.3465295, lng: 149.0286032}
-  - { name: Perry Drive,stop_code: WjrXPbD, lat: -35.356823, lng: 149.0426424}
-  - { name: Darwinia Terrace,stop_code: WjrXIbK, lat: -35.3514081, lng: 149.0319332}
-  - { name: Darwinia Terrace,stop_code: WjrXI5u, lat: -35.3499839, lng: 149.0301495}
-  - { name: Namatjira Drive,stop_code: WjrXPFn, lat: -35.358206, lng: 149.0478792}
-  - { name: Fremantle Drive,stop_code: WjrXQO9, lat: -35.352521, lng: 149.0490119}
-  - { name: Parkinson Street,stop_code: WjrX-90, lat: -35.3423165, lng: 149.0529937}
-  - { name: Parkinson Street,stop_code: WjrXZv3, lat: -35.3434037, lng: 149.0557375}
-  - { name: Hopetoun Circuit,stop_code: Wjz4z9H, lat: -35.3145885, lng: 149.1087065}
-  - { name: Langton Crescent,stop_code: Wjz4KVc, lat: -35.2979705, lng: 149.1272674}
-  - { name: Sainsbury Street,stop_code: Wjz2t4u, lat: -35.389126, lng: 149.096025}
-  - { name: Castleton Crescent,stop_code: Wjz2wnQ, lat: -35.4147625, lng: 149.1103909}
-  - { name: Longmore Crescent,stop_code: Wjz2lAS, lat: -35.389126, lng: 149.0910254}
-  - { name: Yiman Street,stop_code: WjrXYVm, lat: -35.3528022, lng: 149.0616284}
-  - { name: Gladstone Street,stop_code: Wjzch4h, lat: -35.3236753, lng: 149.1727255}
-  - { name: Moonlight Avenue,stop_code: Wjzf1mZ, lat: -35.1901394, lng: 149.154362}
-  - { name: Ratcliffe Crescent,stop_code: Wjr-Ws2, lat: -35.230167, lng: 149.0557628}
-  - { name: Anthony Rolfe Avenue,stop_code: Wjzf24l, lat: -35.1860007, lng: 149.1507571}
-  - { name: Erldunda Circuit,stop_code: WjrZKZn, lat: -35.2510294, lng: 149.0396391}
-  - { name: Badimara Street,stop_code: WjrXXNb, lat: -35.3584898, lng: 149.060019}
-  - { name: Denison Street,stop_code: Wjz4hPC, lat: -35.323921, lng: 149.0935136}
-  - { name: Groom Street,stop_code: Wjz4gou, lat: -35.3314972, lng: 149.0892541}
-  - { name: Shiels Place,stop_code: Wjz4arc, lat: -35.3185933, lng: 149.0779149}
-  - { name: Mair Place,stop_code: Wjz48dZ, lat: -35.3281016, lng: 149.0761465}
-  - { name: Carruthers Street,stop_code: Wjz48qI, lat: -35.3302472, lng: 149.0785498}
-  - { name: Burnie Street,stop_code: Wjz3d3K, lat: -35.3459087, lng: 149.0743512}
-  - { name: Namatjira Drive,stop_code: WjrX-sE, lat: -35.3402511, lng: 149.0565615}
-  - { name: Newman Morris Circuit,stop_code: Wjz29Ya, lat: -35.4114741, lng: 149.0833189}
-  - { name: Cusack Place,stop_code: Wjr_Ow3, lat: -35.1889085, lng: 149.0461463}
-  - { name: Southern Cross Drive,stop_code: Wjr-s5D, lat: -35.2180783, lng: 149.0083939}
-  - { name: Wiluna Street,stop_code: Wjzc8l0, lat: -35.3285713, lng: 149.1642018}
-  - { name: Daley Crescent,stop_code: Wjr_Nwy, lat: -35.1944531, lng: 149.0468698}
-  - { name: Goyder Street,stop_code: Wjz3-aW, lat: -35.3414521, lng: 149.1420263}
-  - { name: Bingley Crescent,stop_code: Wjr_Vbj, lat: -35.1923583, lng: 149.0533723}
-  - { name: Jarrahdale Street,stop_code: WjrXWQ8, lat: -35.3621767, lng: 149.0600261}
-  - { name: Adinda Street,stop_code: WjrXYL4, lat: -35.3488355, lng: 149.0584095}
-  - { name: Bangalay Crescent,stop_code: WjrXQ65, lat: -35.349419, lng: 149.040696}
-  - { name: Tantangara Street,stop_code: WjrXKBE, lat: -35.3395611, lng: 149.0360582}
-  - { name: Dixon Drive,stop_code: WjrYMHm, lat: -35.3294538, lng: 149.0477466}
-  - { name: Blackwood Terrace,stop_code: WjrXTIp, lat: -35.3346742, lng: 149.0480789}
-  - { name: Bingley Crescent,stop_code: Wjr_V2c, lat: -35.192985, lng: 149.0517177}
-  - { name: Glenmaggie Street,stop_code: WjrXLgs, lat: -35.3371612, lng: 149.0328459}
-  - { name: McCay Place,stop_code: Wjz39PE, lat: -35.3683683, lng: 149.0827167}
-  - { name: Dakota Drive,stop_code: Wjzcuw1, lat: -35.2989793, lng: 149.188937}
-  - { name: Kerrigan Street,stop_code: Wjr_xLL, lat: -35.1892698, lng: 149.0264062}
-  - { name: Shakespeare Crescent,stop_code: Wjr_FXR, lat: -35.1922038, lng: 149.0402464}
-  - { name: Bingley Crescent,stop_code: Wjr_Vt9, lat: -35.191134, lng: 149.055871}
-  - { name: Tillyard Drive,stop_code: Wjr-Tf_, lat: -35.2002734, lng: 149.0432168}
-  - { name: Osburn Drive,stop_code: Wjr-tbm, lat: -35.2140927, lng: 149.0093105}
-  - { name: Kerrigan Street,stop_code: Wjr_o_j, lat: -35.1950629, lng: 149.0175978}
-  - { name: Kerrigan Street,stop_code: Wjr_oJA, lat: -35.1964177, lng: 149.0152805}
-  - { name: Archdall Street,stop_code: Wjr-vJY, lat: -35.2019113, lng: 149.0157184}
-  - { name: Brownless Street,stop_code: Wjr-s_F, lat: -35.2172009, lng: 149.0180976}
-  - { name: Krefft Street,stop_code: Wjr-Q8c, lat: -35.2217975, lng: 149.042121}
-  - { name: Starke Street,stop_code: Wjr-sV3, lat: -35.2212162, lng: 149.0172455}
-  - { name: Spofforth Street,stop_code: Wjr-jRn, lat: -35.2235756, lng: 149.0053113}
-  - { name: Beaurepaire Crescent,stop_code: Wjr-rjD, lat: -35.2249706, lng: 149.0111289}
-  - { name: Fullagar Crescent,stop_code: Wjr-ywh, lat: -35.2330631, lng: 149.0245222}
-  - { name: Starke Street,stop_code: Wjr-zWb, lat: -35.2259772, lng: 149.0283569}
-  - { name: Fullagar Crescent,stop_code: Wjr-xLK, lat: -35.2332476, lng: 149.0263679}
-  - { name: Tanumbirini Street,stop_code: Wjr-Ekp, lat: -35.2412759, lng: 149.032879}
-  - { name: Hennessy Street,stop_code: Wjz57T_, lat: -35.2441569, lng: 149.0719751}
-  - { name: Crisp Circuit,stop_code: Wjz68g-, lat: -35.2436119, lng: 149.0775571}
-  - { name: Federal Highway,stop_code: Wjze2va, lat: -35.2281576, lng: 149.1547483}
-  - { name: Krantzcke Circuit,stop_code: Wjz7pfP, lat: -35.189616, lng: 149.0978803}
-  - { name: Temperley Street,stop_code: Wjz7iG_, lat: -35.1872252, lng: 149.0926713}
-  - { name: McClelland Avenue,stop_code: Wjz7i7r, lat: -35.1841251, lng: 149.0850218}
-  - { name: Oldershaw Court,stop_code: Wjz7qvq, lat: -35.1841768, lng: 149.1001944}
-  - { name: Biddell Place,stop_code: Wjz7rMm, lat: -35.1831434, lng: 149.104114}
-  - { name: Gilmore Crescent,stop_code: Wjz3Bea, lat: -35.3442178, lng: 149.1080098}
-  - { name: Anthony Rolfe Avenue,stop_code: Wjz7WRq, lat: -35.1855476, lng: 149.1482315}
-  - { name: Longmore Crescent,stop_code: Wjz2sPc, lat: -35.3954933, lng: 149.1039}
-  - { name: Norriss Street,stop_code: Wjz2E43, lat: -35.4169003, lng: 149.1175471}
-  - { name: Heagney Crescent,stop_code: Wjz1Lxi, lat: -35.4244718, lng: 149.1234372}
-  - { name: Deamer Crescent,stop_code: Wjz1Kwp, lat: -35.4308013, lng: 149.1235016}
-  - { name: Clift Crescent,stop_code: Wjz1K3c, lat: -35.4284584, lng: 149.1176436}
-  - { name: Tharwa Drive,stop_code: Wjz1rQ2, lat: -35.4444028, lng: 149.1038463}
-  - { name: Heagney Crescent,stop_code: Wjz1KTJ, lat: -35.4256696, lng: 149.1266129}
-  - { name: Bugden Avenue,stop_code: Wjz2wcE, lat: -35.4171364, lng: 149.1088245}
-  - { name: Fincham Crescent,stop_code: Wjz2bJV, lat: -35.399901, lng: 149.0816269}
-  - { name: Southern Cross Drive,stop_code: Wjr-HhG, lat: -35.2267451, lng: 149.033272}
-  - { name: Longmore Crescent,stop_code: Wjz2lSC, lat: -35.387814, lng: 149.093493}
-  - { name: Downard Street,stop_code: Wjz1sjb, lat: -35.4395254, lng: 149.0985034}
-  - { name: Davenport Street,stop_code: Wjz3eeL, lat: -35.3382488, lng: 149.0758602}
-  - { name: Stuart Street,stop_code: Wjz4NQF, lat: -35.3236228, lng: 149.1376314}
-  - { name: Flemington Road,stop_code: Wjz7WVd, lat: -35.1880905, lng: 149.149283}
-  - { name: Companion Crescent,stop_code: Wjr-Sbz, lat: -35.2087898, lng: 149.0426061}
-  - { name: Fremantle Drive,stop_code: WjrXQRP, lat: -35.3502995, lng: 149.0498588}
-  - { name: Namatjira Drive,stop_code: WjrXZw7, lat: -35.3478405, lng: 149.0570686}
-  - { name: Namatjira Drive,stop_code: WjrX-l4, lat: -35.3392378, l