Add weekend Network 10
Add weekend Network 10

--- a/betweenpoint.php
+++ b/betweenpoint.php
@@ -10,7 +10,7 @@
     // create the ol map object
     var map = new OpenLayers.Map('map');
     
-  var osmtiles = new OpenLayers.Layer.OSM("local", "http://127.0.0.1/Maps/OSM/${z}/${x}/${y}.png")
+  var osmtiles = new OpenLayers.Layer.OSM("local", "http://127.0.0.1/tiles/${z}/${x}/${y}.png")
 // use http://open.atlas.free.fr/GMapsTransparenciesImgOver.php and http://code.google.com/p/googletilecutter/ to make tiles
     markers = new OpenLayers.Layer.Markers("Between Stop Markers");
  
@@ -64,6 +64,7 @@
   fromto = selValue.split(":",2)[1];
   $("#from").val(fromto.split("->",2)[0]);
   $("#to").val(fromto.split("->",2)[1]);
+ document.getElementById("between_points").innerHTML = "";
     return true;
 }
 
@@ -126,7 +127,7 @@
           if (($fname != '.') && ($fname != '..')) {
               $timetable = Spyc::YAMLLoad("maxious-canberra-transit-feed/output/" . $fname);
 		// Strip off individual platforms because it usually doesn't matter for routes
-		$timetable["time_points"] = preg_replace("/(Platform.*/","",$timetable["time_points"]);
+		$timetable["time_points"] = preg_replace("/\(Platform.*/","",$timetable["time_points"]);
               for ($i = 0; $i < sizeof($timetable["time_points"]) - 1; $i++) {
                   @$paths[trim($timetable["time_points"][$i]) . "->" . trim($timetable["time_points"][$i + 1])] .= $timetable["short_name"] . ";";
               }

--- a/betweenpoint.submit.php
+++ b/betweenpoint.submit.php
@@ -16,7 +16,8 @@
          echo("Error in SQL query: " . pg_last_error() ."<br>\n");

      }

      if ($reverse === "on") {

-	$points = implode(";",array_reverse(explode(";",$points)));

+	$p = implode(";",array_reverse(explode(";",$points))).";";

+	$points = str_replace(";","",$p,1);

 $sql = "INSERT INTO between_stops ( toLocation, fromLocation, points, routes) VALUES('$from','$to','$points','$routes')";

 $result = pg_query($conn, $sql);

      if (!$result) {


--- a/busui/common.inc.php
+++ b/busui/common.inc.php
@@ -23,6 +23,10 @@
 	<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script type="text/javascript" 
 src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script> 
 	<script type="text/javascript" src="docs/docs.js"></script> 
+ <meta name="apple-mobile-web-app-capable" content="yes" />
+ <meta name="apple-mobile-web-app-status-bar-style" content="black" />
+ <link rel="apple-touch-startup-image" href="startup.png" />
+ <link rel="apple-touch-icon" href="apple-touch-icon.png" />
 </head> 
 <body> 
  
@@ -83,3 +87,4 @@
 }
 ?>
   
+

--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -369,6 +369,7 @@
     schedule = self.server.schedule
     stop = schedule.GetStop(params.get('stop', None))
     time = int(params.get('time', 0))
+    service_period = params.get('service_period', None)
     time_trips = stop.GetStopTimeTrips(schedule)
     time_trips.sort()  # OPT: use bisect.insort to make this O(N*ln(N)) -> O(N)
     # Keep the first 15 after param 'time'.
@@ -397,8 +398,8 @@
         trip_name += route.route_long_name
       if headsign:
         trip_name += " (Direction: %s)" % headsign
-
-      result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
+      if service_period == None or trip.service_id == service_period:
+        result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
     return result
 
   def handle_GET_ttablegraph(self,params):

--- a/busui/stop.php
+++ b/busui/stop.php
@@ -5,11 +5,12 @@
 
 include_header("Trips passing ".$stop[1]);
 echo '  <ul data-role="listview" >';
-$url = $APIurl."/json/stoptrips?stop=".$_REQUEST['stopid']."&time=".midnight_seconds();
+$url = $APIurl."/json/stoptrips?stop=".$_REQUEST['stopid']."&time=".midnight_seconds()."&service_period=".service_period();
 $page = getPage($url);
+echo $page;
 foreach (json_decode($page) as $row)
 {
-if ($row[1][2] === service_period()) echo  '<li>'.midnight_seconds_to_time($row[0]).' <a href="trip.php?stopid='.$_REQUEST['stopid'].'&tripid='.$row[1][0].'">'.$row[1][1].'</a></li>';        
+echo  '<li>'.midnight_seconds_to_time($row[0]).' <a href="trip.php?stopid='.$_REQUEST['stopid'].'&tripid='.$row[1][0].'">'.$row[1][1].'</a></li>';        
 }
 echo '</ul>';
 include_footer();

--- a/busui/stopList.php
+++ b/busui/stopList.php
@@ -2,7 +2,8 @@
 include('common.inc.php');
 include_header("Stops");
 echo '  <ul data-role="listview" data-filter="true">';
-$url = $APIurl."/json/stops";
+$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";
 $contents = json_decode(getPage($url));
 foreach ($contents as $key => $row) {
@@ -19,16 +20,14 @@
       echo  '<li><a href="stop.php?stopid='.$row[0].'">'.$row[1].'</a></li>';
         }
 echo '</ul>';
-/*
+echo'
  <div data-role="footer" data-id="foo1" data-position="fixed"> 
 		<div data-role="navbar"> 
 			<ul> 
-				<li><a href="footer-persist-a.html" class="ui-btn-active">Friends</a></li> 
-				<li><a href="footer-persist-b.html">Albums</a></li> 
-				<li><a href="footer-persist-c.html">Emails</a></li> 
+				<li><a href="stopList.php" class="ui-btn-active">Timing Points</a></li> 
+				<li><a href="stopList.php?allstops=yes">All Stops</a></li> 
 			</ul> 
-		</div><!-- /navbar -->
-*/
+	';
 include_footer();
 ?>
 

--- a/maxious-canberra-transit-feed/01-extracttimes.rb
+++ b/maxious-canberra-transit-feed/01-extracttimes.rb
@@ -14,31 +14,34 @@
 	timetable = {"between_stops" => [], "short_name" => short_name}
 	time_points = table.xpath('tr[1]//th').map do |tp|
 		if tp.content != "\302\240" && tp.content != "" && tp.content != "<br/>"
-			timing_point = tp.content.squeeze(" ").gsub("Bus Station"," Bus Station ").gsub(" Platform"," (Platform").gsub("  - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(",",", ").gsub("\302\240","").squeeze(" ").strip
+			timing_point = tp.content.squeeze(" ").gsub("Bus Station"," Bus Station ").gsub(" Platform"," (Platform").gsub("  - "," - ").gsub("\n"," ").gsub("\r"," ").gsub("\t"," ").gsub("\\"," / ").gsub("/"," / ").gsub(","," ").gsub("\302\240","").squeeze(" ").strip
 			if (tp.content.match('Platform'))
 			  timing_point.concat(")")
 			end;
+			if tp.to_s.match(/[0-9][0-9][0-9]/) or tp.to_s.include? "Wheelchair"
+			  timing_point = nil
+			end
 			timing_point
 		end
 	end
 	time_points.delete(nil)
-	time_points.delete("WheelchairAccessible")
-	time_points.delete("Wheelchair Accessible")
 	timetable["time_points"] = time_points.to_a
 	timetable["long_name"] = "To " + time_points.last
 	periodtimes = []
 	table.css('tr').each do |row|
 		times = row.css('td').map do |cell|
 			time = cell.content.squeeze(" ").strip
-			time = time.gsub(/ *A\S?M/,"a").gsub(/ ?P\S?M/,"p").gsub("12:08 AM","1208x").gsub(":","").gsub("1.","1").gsub("2.","2")
-			time = time.gsub("3.","3").gsub("4.","4")
+			time = time.gsub(/ *A\S?M/,"a").gsub(/ ?P\S?M/,"p").gsub(/ *a\S?m/,"a").gsub(/ ?p\S?m/,"p")
+			time = time.gsub("12:08 AM","1208x").gsub(":","").gsub("1.","1").gsub("2.","2").gsub("3.","3").gsub("4.","4")
 			time = time.gsub("5.","5").gsub("6.","6").gsub("7.","7").gsub("8.","8").gsub("9.","9").gsub("10.","10")
 			time = time.gsub("11.","11").gsub("12.","12").gsub(/\.+/,"-").gsub("\302\240","")
-			if time == "" then time = nil end 
+			if time == "" or time.include? "chool" or time.include? "On Race Days" or time.include? "Bus"
+				time = nil # This hacky way is faster than using position()>1 xpath on <TD>s!
+			end 
 			time
 		end
 		times.delete(nil)
-		if not times.empty?
+		if not times.empty? 
 			if not (route = times.shift)
 				raise("TODO: account for shifting route numbers eg. intertown/redex 62/162")
 			end
@@ -59,14 +62,14 @@
 	timetable
 end
 
-Dir.glob("source-html/Route*.htm*") { |file|
+Dir.glob("source-html/*oute*.htm*") { |file|
 	puts "Opened " + file
 	doc = Nokogiri::HTML(open(file))
 	# Search for nodes by css
 	timetables = []
 	short_name = "";
 	doc.xpath('//title').each do |title|
-		short_name = title.content.gsub("Route_","").gsub("Route ","").gsub(", ","/").gsub("ACTION Buses Timetable for ","").squeeze(" ").strip
+		short_name = title.content.gsub("Route_","").gsub("Route ","").gsub("route ","").gsub(", ","/").gsub("ACTION Buses Timetable for ","").squeeze(" ").strip
 	end
 	if short_name == ""
 		raise "Route number(s) not found in <title> tag"

--- a/maxious-canberra-transit-feed/02-tidytimepoints.rb
+++ b/maxious-canberra-transit-feed/02-tidytimepoints.rb
@@ -19,17 +19,15 @@
 		end
 	}
 end
-
-getTimePoints()
-#pp $time_points.sort!
-#pp $time_points_sources.sort
-
+def correctTimePoints()
 time_point_corrections = {"North Lynehamham" => "North Lyneham",
-  "Woden Bus Station Platform 10)" => "Woden Bus Station (Platform 10)",
-  "Saint AndrewsVillage Hughes"=>"Saint Andrews Village Hughes",
+ "Woden Bus Station Platform 10)" => "Woden Bus Station (Platform 10)",
+ "Saint AndrewsVillage Hughes"=>"Saint Andrews Village Hughes",
  "Flemmington Road / Sandford St"=>"Flemington Road / Sandford St",
  "City Interchange"=>"City Bus Station",
  "City Interchange (Platform 9)"=>"City Bus Station (Platform 9)",
+ "City Bus Station Platfrom 9"=>"City Bus Station (Platform 9)",
+ "Belconnen Community Bus StationPlatform 2)"=>"Belconnen Community Bus Station (Platform 2)",
  "Bridbabella Gardens Nursing Home"=>"Brindabella Gardens Nursing Home",
  "Bridbabella GardensNursing Home"=> "Brindabella Gardens Nursing Home",
  "BrindabellaBusiness Park"=> "Brindabella Business Park",
@@ -37,31 +35,80 @@
  "Railway StationKingston"=>"Railway Station Kingston",
  "Saint AndrewsVillage Hughes"=>"Saint Andrews Village Hughes",
  "Dickson ShopsAntill Street"=>"Dickson Shops",
- "Cohen St Bus Station (Platform 3)"=>"Cohen Street Bus Station (Platform 3)",
- "Cohen St Bus Station (Platform 6)"=>"Cohen Street Bus Station (Platform 6)",
- "Newcastle Streetafter Isa Street"=>"Newcastle Street after Isa Street",
+ "Cohen St Bus Station (Platform 3)" => "Cohen Street Bus Station (Platform 3)",
+ "Cohen St Bus Station (Platform 6)" => "Cohen Street Bus Station (Platform 6)",
+ "Newcastle Streetafter Isa Street" => "Newcastle Street after Isa Street",
+ "Newcastle St after Isa St" => "Newcastle Street after Isa Street",
+ "Newcastle Street after Isa St" => "Newcastle Street after Isa Street",
+ "Northbourne Ave / Antill St" => "Northbourne Avenue / Antill St",
+ "Macarthur / Northbourne" => "Macarthur / Northbourne Ave",
+ "Macarthur Ave / Northbourne" => "Macarthur / Northbourne Ave",
+ "Kings Ave / National Cct"=> "Kings Ave / National Circuit",
+ "Kosciuszco Ave / Everard Street"=>"Kosciuszko / Everard",
+ "Lithgow St Terminus" => "Lithgow St Terminus Fyshwick",
+ "Hospice Menindee Dr" => "Hospice / Menindee Dr",
+ "Gungahlin Market Place"=> "Gungahlin Marketplace",
+ "Gwyder Square Kaleen"=> "Gwydir Square Kaleen",
+ "Flemington Road / Nullabor Ave"=>"Flemington Rd / Nullabor Ave",
+ "Flemington Road / Sandford St"=>"Flemington Rd / Sandford St",
+ "Heagney Cres Clift Cres Richardson"=>  "Heagney / Clift Richardson",
+ "Charnwood Shops (Tillyard Drive)"=> "Charnwood Shops",
+ "charnwood Shops"=> "Charnwood Shops",
+ "Black Moutain- Telstra Tower"=>"Black Mountain Telstra Tower",
+ "Bonython Primary"=> "Bonython Primary School",
+ "Athllon Drive / Sulwood Dr Kambah"=>"Athllon / Sulwood Kambah",
+ "Alexander Machonochie Centre Hume"=>"Alexander Maconochie Centre",
+ "Alexander Maconochie Centre Hume"=>"Alexander Maconochie Centre",
+ "Anthony Rolfe Ave / Moonight Ave" =>"Anthony Rolfe Av / Moonlight Av",
+ "Australian National Botanic Gardens"=>"Botanic Gardens",
+ "Calwell shops"=> "Calwell Shops", 
+ "Chuculba / William Slim Drive"=>"Chuculba / William Slim Dr",
+ "Fyshwick direct Factory Outlet"=>"Fyshwick Direct Factory Outlet",
+ "Kaleen Village / Maibrynong"=>"Kaleen Village / Marybrynong",
+ "Kaleen Village / Marybrynong Ave"=>"Kaleen Village / Marybrynong",
+ "National Aquarium"=>"National Zoo and Aquarium",
+ "chisholm Shops"=>"Chisholm Shops",
+ "O'connor Shops"=>"O'Connor Shops",
+ "Mckellar Shops"=>"McKellar Shops",
+ "Melba shops"=> "Melba Shops",
  "William Web / Ginninderra Drive"=>"William Webb / Ginninderra Drive",
  "Procor / Mead"=>"Proctor / Mead",
-"Fyshwick DirectFactory Outlet"=>"Fyshwick Direct Factory Outlet",
-"Dickson ShopsAntill Street"=>"Dickson Shops/Antill St",
-"Yarrulumla Shops"=>"Yarralumla Shops",
-"Tharwa Dr / Pocket Ave"=>"Tharwa Dr / Pockett Ave",
-"Paul Coe / Mirrebei Dr"=>"Paul Coe / Mirrabei Dr",
-"Mirrebei Drive / Dam Wall"=>"Mirrabei Drive / Dam Wall"
+ "Fyshwick DirectFactory Outlet"=>"Fyshwick Direct Factory Outlet",
+ "Yarrulumla Shops"=>"Yarralumla Shops",
+ "Tharwa Dr / Pocket Ave"=>"Tharwa Dr / Pockett Ave",
+ "Paul Coe / Mirrebei Dr"=>"Paul Coe / Mirrabei Dr",
+ "Mirrebei Drive / Dam Wall"=>"Mirrabei Drive / Dam Wall",
+ "Tharwa / Knoke" => "Tharwa Drive / Knoke Ave",
+ "Tharwa / Pocket" => "Tharwa Dr / Pockett Ave",
+ "Outrim / Duggan" => "Outtrim / Duggan",
+ "ANU Burton and Garran Hall Daley Rd" => "Burton and Garran Hall Daley Road",
+ "Farrer Primary"=>"Farrer Primary School",
+ "St Thomas More Campbell"=>"St Thomas More's Campbell",
+ "Lyneham Shops"=>"Lyneham Shops Wattle Street",
+ 
+ 
 }
-
-time_point_corrections.each do |wrong, right|
-	$time_points_sources[wrong].each do |wrongfile|
-		badtimetable = YAML::load_file(wrongfile)
-		badentrynumber = badtimetable["time_points"].index wrong
-		badtimetable["time_points"][badentrynumber] = right
-		puts "Corrected '" + wrong + "' to '" + right + "' in " + wrongfile
-		File.open(wrongfile, "w") do |f|
-	 		f.write badtimetable.to_yaml
+	time_point_corrections.each do |wrong, right|
+		$time_points_sources[wrong].each do |wrongfile|
+			badtimetable = YAML::load_file(wrongfile)
+			badentrynumber = badtimetable["time_points"].index wrong
+			badtimetable["time_points"][badentrynumber] = right
+			puts "Corrected '" + wrong + "' to '" + right + "' in " + wrongfile
+			File.open(wrongfile, "w") do |f|
+	 			f.write badtimetable.to_yaml
+			end
 		end
 	end
 end
 
 getTimePoints()
+#pp $time_points.sort!
+#pp $time_points_sources.sort
+
+
+correctTimePoints()
+getTimePoints()
+correctTimePoints()
+getTimePoints()
 pp $time_points.sort!
 

--- a/maxious-canberra-transit-feed/cbrtable.yml
+++ b/maxious-canberra-transit-feed/cbrtable.yml
@@ -17,7 +17,7 @@
   - { name: Anthony Rolfe Av / Moonlight Av,stop_code: Anthony Rolfe Av / Moonlight Av, lat: -35.1856021, lng: 149.1543639}
   - { name: Aranda,stop_code: Aranda, lat: -35.257534, lng: 149.0762963}
   - { name: Aranda Shops,stop_code: Aranda Shops, lat: -35.25753, lng: 149.0763}
-  - { name: Athllon / Sulwood, Kambah,stop_code: Athllon / Sulwood, Kambah, lat: -35.38442, lng: 149.09328}
+  - { name: Athllon / Sulwood Kambah,stop_code: Athllon / Sulwood Kambah, lat: -35.38442, lng: 149.09328}
   - { name: Australian Institute of Sport,stop_code: Australian Institute of Sport, lat: -35.246351, lng: 149.101478}
   - { name: Belconnen Community Bus Station,stop_code: Belconnen Community Bus Station, lat: -35.23987, lng: 149.0619}
   - { name: Belconnen Community Bus Station (Platform 1),stop_code: Belconnen Community Bus Station (Platform 1), lat: -35.23982, lng: 149.06978}
@@ -35,7 +35,7 @@
   - { name: Brindabella Business Park,stop_code: Brindabella Business Park, lat: -35.314496, lng: 149.189145}
   - { name: Brindabella Gardens Nursing Home,stop_code: Brindabella Gardens Nursing Home, lat: -35.3294459, lng: 149.0806116}
   - { name: Bugden Sternberg,stop_code: Bugden Sternberg, lat: -35.4017223, lng: 149.0992172}
-  - { name: Burton and Garran Hall, Daley Road,stop_code: Burton and Garran Hall, Daley Road, lat: -35.2753671, lng: 149.1172822}
+  - { name: Burton and Garran Hall Daley Road,stop_code: Burton and Garran Hall Daley Road, lat: -35.2753671, lng: 149.1172822}
   - { name: Calvary Hospital,stop_code: Calvary Hospital, lat: -35.25212, lng: 149.09088}
   - { name: Calwell Shops,stop_code: Calwell Shops, lat: -35.43524, lng: 149.113942}
   - { name: Cameron Ave Bus Station,stop_code: Cameron Ave Bus Station, lat: -35.2410195, lng: 149.0722506}
@@ -45,7 +45,7 @@
   - { name: Cameron Ave Bus Station (Platform 4),stop_code: Cameron Ave Bus Station (Platform 4), lat: -35.2411773, lng: 149.0709793}
   - { name: Cameron Ave Bus Station (Platform 5),stop_code: Cameron Ave Bus Station (Platform 5), lat: -35.241186, lng: 149.0720789}
   - { name: Campbell Park Offices,stop_code: Campbell Park Offices, lat: -35.28368, lng: 149.17045}
-  - { name: Canberra College, Weston Campus,stop_code: Canberra College, Weston Campus, lat: -35.3490278, lng: 149.0486277}
+  - { name: Canberra College Weston Campus,stop_code: Canberra College Weston Campus, lat: -35.3490278, lng: 149.0486277}
   - { name: Canberra Hospital,stop_code: Canberra Hospital, lat: -35.3459462, lng: 149.1012001}
   - { name: Canberra Times,stop_code: Canberra Times, lat: -35.3245431, lng: 149.1705533}
   - { name: Caswell Drive,stop_code: Caswell Drive, lat: -35.25922, lng: 149.08576}
@@ -55,7 +55,7 @@
   - { name: Chapman Shops,stop_code: Chapman Shops, lat: -35.35579, lng: 149.04082}
   - { name: Charnwood,stop_code: Charnwood, lat: -35.2052138, lng: 149.0337266}
   - { name: Charnwood Shops,stop_code: Charnwood Shops, lat: -35.20472, lng: 149.03336}
-  - { name: Charnwood, Tillyard Dr,stop_code: Charnwood, Tillyard Dr, lat: -35.20295, lng: 149.04027}
+  - { name: Charnwood Tillyard Dr,stop_code: Charnwood Tillyard Dr, lat: -35.20295, lng: 149.04027}
   - { name: Chifley,stop_code: Chifley, lat: -35.350985, lng: 149.077319}
   - { name: Chifley Shops,stop_code: Chifley Shops, lat: -35.35099, lng: 149.07732}
   - { name: Chisholm Shops,stop_code: Chisholm Shops, lat: -35.41341, lng: 149.12833}
@@ -101,7 +101,7 @@
   - { name: Duffy Primary,stop_code: Duffy Primary, lat: -35.334219, lng: 149.033656}
   - { name: Dunlop,stop_code: Dunlop, lat: -35.1942693, lng: 149.0206702}
   - { name: Erindale Centre,stop_code: Erindale Centre, lat: -35.4038881, lng: 149.0992283}
-  - { name: Erindale Dr / Charleston St, Monash,stop_code: Erindale Dr / Charleston St, Monash, lat: -35.414616, lng: 149.07888}
+  - { name: Erindale Dr / Charleston St Monash,stop_code: Erindale Dr / Charleston St Monash, lat: -35.414616, lng: 149.07888}
   - { name: Erindale / Sternberg Cres,stop_code: Erindale / Sternberg Cres, lat: -35.4014472, lng: 149.0956545}
   - { name: Evatt,stop_code: Evatt, lat: -35.2091093, lng: 149.0735343}
   - { name: Evatt Shops,stop_code: Evatt Shops, lat: -35.21203, lng: 149.06505}
@@ -114,7 +114,7 @@
   - { name: Fisher Shops,stop_code: Fisher Shops, lat: -35.36056, lng: 149.05765}
   - { name: Flemington Rd,stop_code: Flemington Rd, lat: -35.20756, lng: 149.14778}
   - { name: Flemington Rd / Nullabor Ave,stop_code: Flemington Rd / Nullabor Ave, lat: -35.2008585, lng: 149.1493407}
-  - { name: Flemington Road / Sandford St,stop_code: Flemington Road / Sandford St, lat: -35.2008585, lng: 149.1493407}
+  - { name: Flemington Rd / Sandford St,stop_code: Flemington Rd / Sandford St, lat: -35.221231, lng: 149.144645}
   - { name: Florey Shops,stop_code: Florey Shops, lat: -35.2258544, lng: 149.0546214}
   - { name: Flynn,stop_code: Flynn, lat: -35.2019283, lng: 149.0478356}
   - { name: Fraser,stop_code: Fraser, lat: -35.1896539, lng: 149.0435012}
@@ -127,8 +127,10 @@
   - { name: Garran Shops,stop_code: Garran Shops, lat: -35.34236, lng: 149.1082}
   - { name: Geoscience Australia,stop_code: Geoscience Australia, lat: -35.3429702, lng: 149.1583893}
   - { name: Giralang,stop_code: Giralang, lat: -35.2115608, lng: 149.0960692}
+  - { name: Giralang Shops,stop_code: Giralang Shops, lat: -35.2115608, lng: 149.0960692}
   - { name: Gordon Primary,stop_code: Gordon Primary, lat: -35.455517, lng: 149.086978}
   - { name: Gowrie,stop_code: Gowrie, lat: -35.4120264, lng: 149.1110804}
+  - { name: Gowrie Shops,stop_code: Gowrie Shops, lat: -35.4120264, lng: 149.1110804}
   - { name: Gungahlin Marketplace,stop_code: Gungahlin Marketplace, lat: -35.1769532, lng: 149.1319017}
   - { name: Gwydir Square Kaleen,stop_code: Gwydir Square Kaleen, lat: -35.2338677, lng: 149.1031998}
   - { name: Hackett,stop_code: Hackett, lat: -35.2481617, lng: 149.1626094}
@@ -136,7 +138,7 @@
   - { name: Hawker,stop_code: Hawker, lat: -35.2437386, lng: 149.0432804}
   - { name: Hawker College,stop_code: Hawker College, lat: -35.2454598, lng: 149.0324251}
   - { name: Hawker Shops,stop_code: Hawker Shops, lat: -35.24398, lng: 149.04361}
-  - { name: Heagney/Clift Richardson,stop_code: Heagney/Clift Richardson, lat: -35.4251299, lng: 149.11375}
+  - { name: Heagney / Clift Richardson,stop_code: Heagney / Clift Richardson, lat: -35.4251299, lng: 149.11375}
   - { name: Hibberson / Kate Crace,stop_code: Hibberson / Kate Crace, lat: -35.1861642, lng: 149.1391756}
   - { name: Higgins,stop_code: Higgins, lat: -35.2313901, lng: 149.0271811}
   - { name: Higgins Shops,stop_code: Higgins Shops, lat: -35.23136, lng: 149.02611}
@@ -153,8 +155,7 @@
   - { name: Isabella Shops,stop_code: Isabella Shops, lat: -35.4285703, lng: 149.0916837}
   - { name: Jamison Centre,stop_code: Jamison Centre, lat: -35.2527268, lng: 149.0713712}
   - { name: John James Hospital,stop_code: John James Hospital, lat: -35.3200295, lng: 149.0955996}
-  - { name: Kaleen Village / Maibrynong,stop_code: Kaleen Village / Maibrynong, lat: -35.220819, lng: 149.099751}
-  - { name: Kaleen Village / Maribyrnong,stop_code: Kaleen Village / Maribyrnong, lat: -35.2274031, lng: 149.1075421}
+  - { name: Kaleen Village / Marybrynong,stop_code: Kaleen Village / Marybrynong, lat: -35.2274031, lng: 149.1075421}
   - { name: Kambah High,stop_code: Kambah High, lat: -35.3847749, lng: 149.0720245}
   - { name: Kambah Village,stop_code: Kambah Village, lat: -35.3800314, lng: 149.0576581}
   - { name: Katherine Ave / Horse Park Drive,stop_code: Katherine Ave / Horse Park Drive, lat: -35.1680901, lng: 149.1321801}
@@ -175,21 +176,20 @@
   - { name: Lathlain St Bus Station (Platform 5),stop_code: Lathlain St Bus Station (Platform 5), lat: -35.2405468, lng: 149.0636669}
   - { name: Lathlain St Bus Station (Platform 6),stop_code: Lathlain St Bus Station (Platform 6), lat: -35.2410486, lng: 149.0638326}
   - { name: Lewis Luxton/Woodcock Dr,stop_code: Lewis Luxton/Woodcock Dr, lat: -35.4422566, lng: 149.0854375}
-  - { name: Lithgow St Terminus,stop_code: Lithgow St Terminus, lat: -35.32899, lng: 149.16942}
   - { name: Lithgow St Terminus Fyshwick,stop_code: Lithgow St Terminus Fyshwick, lat: -35.3296912, lng: 149.1668153}
   - { name: Livingston Shops Kambah,stop_code: Livingston Shops Kambah, lat: -35.3883359, lng: 149.0811471}
   - { name: Livingston Shops / Kambah,stop_code: Livingston Shops / Kambah, lat: -35.390246, lng: 149.07822}
   - { name: Lyneham,stop_code: Lyneham, lat: -35.2523304, lng: 149.1246184}
-  - { name: Lyneham , ACT, Wattle Street,stop_code: Lyneham , ACT, Wattle Street, lat: -35.36253, lng: 149.22632}
   - { name: Lyneham High,stop_code: Lyneham High, lat: -35.2524016, lng: 149.130254}
-  - { name: Lyneham Shops, Wattle Street,stop_code: Lyneham Shops, Wattle Street, lat: -35.25205, lng: 149.12524}
+  - { name: Lyneham Shops Wattle Street,stop_code: Lyneham Shops Wattle Street, lat: -35.25205, lng: 149.12524}
   - { name: Lyons,stop_code: Lyons, lat: -35.3415779, lng: 149.0765703}
   - { name: Lyons Shops,stop_code: Lyons Shops, lat: -35.34019, lng: 149.0771}
   - { name: Macarthur / Miller O'Connor,stop_code: Macarthur / Miller O'Connor, lat: -35.2587584, lng: 149.1153561}
-  - { name: Macarthur / Northbourne Ave,stop_code: Macarthur / Northbourne Ave, lat: -35.2481997, lng: 149.134308}
+  - { name: Macarthur / Northbourne Ave,stop_code: Macarthur / Northbourne Ave, lat: -35.26051, lng: 149.13224}
+  - { name: Macgregor,stop_code: Macgregor, lat: -35.2100645, lng: 149.0122952}
   - { name: Macgregor Shops,stop_code: Macgregor Shops, lat: -35.2100645, lng: 149.0122952}
-  - { name: MacKillop College, Isabella Campus,stop_code: MacKillop College, Isabella Campus, lat: -35.42597, lng: 149.09172}
-  - { name: MacKillop College, Wanniassa Campus,stop_code: MacKillop College, Wanniassa Campus, lat: -35.4056, lng: 149.089774}
+  - { name: MacKillop College Isabella Campus,stop_code: MacKillop College Isabella Campus, lat: -35.42597, lng: 149.09172}
+  - { name: MacKillop College Wanniassa Campus,stop_code: MacKillop College Wanniassa Campus, lat: -35.4056, lng: 149.089774}
   - { name: Macquarie,stop_code: Macquarie, lat: -35.2483414, lng: 149.0600666}
   - { name: Majura Business Park,stop_code: Majura Business Park, lat: -35.2987, lng: 149.18561}
   - { name: Manning Clarke / Oodgeroo,stop_code: Manning Clarke / Oodgeroo, lat: -35.193236, lng: 149.146534}
@@ -203,32 +203,35 @@
   - { name: Merici College,stop_code: Merici College, lat: -35.266525, lng: 149.137037}
   - { name: Mirrabei Drive / Dam Wall,stop_code: Mirrabei Drive / Dam Wall, lat: -35.177453, lng: 149.124291}
   - { name: Monash,stop_code: Monash, lat: -35.4190254, lng: 149.0834805}
-  - { name: Monash, Goodwin Village,stop_code: Monash, Goodwin Village, lat: -35.421084, lng: 149.097438}
+  - { name: Monash Goodwin Village,stop_code: Monash Goodwin Village, lat: -35.421084, lng: 149.097438}
   - { name: Monash Primary,stop_code: Monash Primary, lat: -35.414879, lng: 149.089411}
   - { name: Mount Neighbour School,stop_code: Mount Neighbour School, lat: -35.382445, lng: 149.051518}
+  - { name: Narrabundah,stop_code: Narrabundah, lat: -35.332605, lng: 149.154049}
   - { name: Narrabundah College,stop_code: Narrabundah College, lat: -35.3362106, lng: 149.1471005}
   - { name: Narrabundah Terminus,stop_code: Narrabundah Terminus, lat: -35.332605, lng: 149.154049}
-  - { name: National Aquarium,stop_code: National Aquarium, lat: -35.29915, lng: 149.07025}
   - { name: National Circ / Canberra Ave,stop_code: National Circ / Canberra Ave, lat: -35.31407, lng: 149.13011}
   - { name: National Hockey Centre Lyneham,stop_code: National Hockey Centre Lyneham, lat: -35.2446729, lng: 149.1288303}
   - { name: National Museum of Australia,stop_code: National Museum of Australia, lat: -35.29248, lng: 149.1205367}
+  - { name: National Zoo and Aquarium,stop_code: National Zoo and Aquarium, lat: -35.29915, lng: 149.07025}
   - { name: Newcastle Street after Isa Street,stop_code: Newcastle Street after Isa Street, lat: -35.3255, lng: 149.173291}
   - { name: Ngunnawal Primary,stop_code: Ngunnawal Primary, lat: -35.1688551, lng: 149.1112569}
   - { name: Nicholls Primary,stop_code: Nicholls Primary, lat: -35.1905592, lng: 149.0876716}
   - { name: Northbourne Avenue / Antill St,stop_code: Northbourne Avenue / Antill St, lat: -35.248287, lng: 149.134241}
   - { name: North Lyneham,stop_code: North Lyneham, lat: -35.2385618, lng: 149.1221188}
   - { name: O'Connor,stop_code: O'Connor, lat: -35.2640376, lng: 149.1226107}
-  - { name: O'Connor Shops,stop_code: O'Connor Shops, lat: -35.25662, lng: 149.11559}
+  - { name: O'Connor Shops,stop_code: O'Connor Shops, lat: -35.2640376, lng: 149.1226107}
   - { name: Olims Hotel,stop_code: Olims Hotel, lat: -35.27597, lng: 149.1428}
   - { name: Outtrim / Duggan,stop_code: Outtrim / Duggan, lat: -35.435871, lng: 149.097692}
   - { name: Page Shops,stop_code: Page Shops, lat: -35.2360695, lng: 149.0536554}
   - { name: Parliament House,stop_code: Parliament House, lat: -35.3081571, lng: 149.1244592}
   - { name: Paul Coe / Mirrabei Dr,stop_code: Paul Coe / Mirrabei Dr, lat: -35.17467, lng: 149.12005}
   - { name: Pearce,stop_code: Pearce, lat: -35.3625413, lng: 149.0815935}
+  - { name: Pearce Shops,stop_code: Pearce Shops, lat: -35.3625413, lng: 149.0815935}
   - { name: Police College Weston,stop_code: Police College Weston, lat: -35.33018, lng: 149.05458}
   - { name: Proctor / Mead,stop_code: Proctor / Mead, lat: -35.415305, lng: 149.127204}
   - { name: Railway Station Kingston,stop_code: Railway Station Kingston, lat: -35.319602, lng: 149.149083}
   - { name: Red Hill,stop_code: Red Hill, lat: -35.336505, lng: 149.131645}
+  - { name: Red Hill Shops,stop_code: Red Hill Shops, lat: -35.336505, lng: 149.131645}
   - { name: Rivett,stop_code: Rivett, lat: -35.3473758, lng: 149.0365438}
   - { name: Rivett Shops,stop_code: Rivett Shops, lat: -35.34737, lng: 149.03654}
   - { name: Russell Offices,stop_code: Russell Offices, lat: -35.2973294, lng: 149.1508803}
@@ -243,7 +246,7 @@
   - { name: Spence Terminus,stop_code: Spence Terminus, lat: -35.199684, lng: 149.0676196}
   - { name: St Clare of Assisi,stop_code: St Clare of Assisi, lat: -35.46063, lng: 149.09627}
   - { name: St Clare of Assisi Primary,stop_code: St Clare of Assisi Primary, lat: -35.4606284, lng: 149.0962704}
-  - { name: St Francis Xavier, Florey,stop_code: St Francis Xavier, Florey, lat: -35.223951, lng: 149.0406888}
+  - { name: St Francis Xavier Florey,stop_code: St Francis Xavier Florey, lat: -35.223951, lng: 149.0406888}
   - { name: Stromlo High Waramanga,stop_code: Stromlo High Waramanga, lat: -35.3551186, lng: 149.0547624}
   - { name: St Thomas More's Campbell,stop_code: St Thomas More's Campbell, lat: -35.286717, lng: 149.156836}
   - { name: Sydney Ave,stop_code: Sydney Ave, lat: -35.31193, lng: 149.13105}
@@ -264,8 +267,9 @@
   - { name: Wanniassa High,stop_code: Wanniassa High, lat: -35.3952462, lng: 149.0852655}
   - { name: Waramanga,stop_code: Waramanga, lat: -35.3526825, lng: 149.0594712}
   - { name: Waramanga Shops,stop_code: Waramanga Shops, lat: -35.35268, lng: 149.05948}
-  - { name: War Memorial, Limestone Ave,stop_code: War Memorial, Limestone Ave, lat: -35.280477, lng: 149.149085}
+  - { name: War Memorial Limestone Ave,stop_code: War Memorial Limestone Ave, lat: -35.280477, lng: 149.149085}
   - { name: Watson,stop_code: Watson, lat: -35.2389399, lng: 149.1535345}
+  - { name: Watson Shops,stop_code: Watson Shops, lat: -35.2389399, lng: 149.1535345}
   - { name: Watson Terminus,stop_code: Watson Terminus, lat: -35.2374698, lng: 149.1534553}
   - { name: Weetangera Shops,stop_code: Weetangera Shops, lat: -35.248393, lng: 149.0506342}
   - { name: Westfield Bus Station,stop_code: Westfield Bus Station, lat: -35.23875, lng: 149.0638}
@@ -1716,1004 +1720,2480 @@
   - { name: Gilmore Crescent,stop_code: Wjz3BfO, lat: -35.3434784, lng: 149.1088951}
 routes:
   -  
-    long_name: To Cohen Street Bus Station
-    between_stops: {}
-    
+    time_points: [Tuggeranong Bus Station (Platform 7), Bonython Primary School, Lanyon Market Place, Conder Primary, Tharwa Drive / Knoke Ave, Gordon Primary, Woodcock / Clare Dennis, Bonython Primary School, Tuggeranong Bus Station]
+    long_name: To Tuggeranong Bus Station
+    between_stops: {}
+    
+    short_name: "914"
+    stop_times: [[1025a, 1034a, 1040a, 1047a, 1050a, 1054a, 1059a, 1102a, 1112a], [1225p, 1234p, 1240p, 1247p, 1250p, 1254p, 1259p, 102p, 112p], [225p, 234p, 240p, 247p, 250p, 254p, 259p, 302p, 312p], [425p, 434p, 440p, 447p, 450p, 454p, 459p, 502p, 512p], [625p, 634p, 640p, 647p, 650p, 654p, 659p, 702p, 712p]]
+  -  
+    time_points: [Woden Bus Station (Platform 4), Belconnen Community Bus Station, Westfield Bus Station, Cohen Street Bus Station]
+    long_name: To Cohen Street Bus Station
+    between_stops: 
+      Westfield Bus Station-Cohen Street Bus Station: []
+      Belconnen Community Bus Station-Westfield Bus Station: []
+    short_name: "749"
+    stop_times: [[753a, 820a, 822a, 827a], [436p, 505p, 507p, 512p], [510p, 539p, 541p, 546p], [540p, 609p, 611p, 616p]]
+  -  
+    time_points: [Woden Bus Station (Platform 11), Erindale Centre, Proctor / Mead, Deamer / Clift Richardson, Bonython Primary School, Tuggeranong Bus Station]
+    long_name: To Tuggeranong Bus Station
+    between_stops: {}
+    
+    short_name: "66"
+    stop_times: [["-", 602a, 610a, 617a, 622a, 631a], [622a, 632a, 640a, 647a, 652a, 701a], [652a, 702a, 710a, 717a, 722a, 731a], [722a, 734a, 744a, 751a, 758a, 808a], [752a, 810a, 820a, 827a, 834a, 844a], [822a, 840a, 850a, 857a, 904a, 914a], [916a, 933a, 941a, 948a, 954a, 1003a], [1022a, 1036a, 1044a, 1051a, 1057a, 1106a], [1122a, 1136a, 1144a, 1151a, 1157a, 1206p], [1222p, 1236p, 1244p, 1251p, 1257p, 106p], [122p, 136p, 144p, 151p, 157p, 206p], [222p, 236p, 244p, 251p, 257p, 307p], [252p, 308p, 319p, 326p, 333p, 343p], [322p, 340p, 351p, 358p, 405p, 415p], [352p, 410p, 421p, 428p, 435p, 445p], [422p, 440p, 451p, 458p, 505p, 515p], [452p, 510p, 521p, 528p, 535p, 545p], [522p, 540p, 551p, 558p, 605p, 615p], [552p, 610p, 621p, 628p, 634p, 643p], [622p, 638p, 646p, 653p, 658p, 707p], [722p, 736p, 744p, 751p, 756p, 805p], [822p, 836p, 844p, 851p, 856p, 905p], [922p, 936p, 944p, 951p, 956p, 1005p], [1022p, 1036p, 1044p, 1051p, 1056p, 1105p], [1122p, 1136p, 1144p, 1151p, 1156p, "-"]]
+  -  
+    time_points: [City West, City Bus Station (Platform 10), ACTEW AGL House, Mentone View / Tharwa Drive, Tharwa Dr / Pockett Ave, Lanyon Market Place]
+    long_name: To Lanyon Market Place
+    between_stops: 
+      ACTEW AGL House-Mentone View / Tharwa Drive: [Wjz33LB, Wjz34Gq, WjrXUAm, WjrXUsW, WjrXUoV, WjrW_uo, Wjz2a26, Wjz1kvl]
+      City West-City Bus Station (Platform 10): []
+      City Bus Station (Platform 10)-ACTEW AGL House: [Wjz5Nht]
+    short_name: "785"
+    stop_times: [[505p, 511p, 513p, 549p, 605p, 607p], [530p, 536p, 538p, 614p, 630p, 632p], [545p, 551p, 553p, 629p, 645p, 647p]]
+  -  
+    time_points: [Fyshwick Direct Factory Outlet, Railway Station Kingston, Kings Ave / National Circuit, Russell Offices, City Bus Station (Platform 8), Macarthur / Northbourne Ave, Northbourne Avenue / Antill St, Flemington Rd / Sandford St, Gungahlin Marketplace]
+    long_name: To Gungahlin Marketplace
+    between_stops: 
+      Macarthur / Northbourne Ave-Northbourne Avenue / Antill St: [Wjz5RkN, Wjz5Rsi, Wjz5RvC, Wjz5Sqk, Wjz5SrO, Wjz5Sux, Wjz5SDc]
+      City Bus Station (Platform 8)-Macarthur / Northbourne Ave: [Wjz5O3Q, Wjz5Oci, Wjz5P8n, Wjz5P8K, Wjz5PdJ, Wjz5Pl0, Wjz5Qi2, Wjz5Qgn, Wjz5Qmu, Wjz5QmR]
+      Kings Ave / National Circuit-Russell Offices: [Wjz4Quk, Wjz4RwH, Wjz4RFJ]
+      Russell Offices-City Bus Station (Platform 8): [Wjz4-WZ, Wjz4-WL, Wjz4-Rc, Wjz4-KO, Wjz4_wS, Wjz4_jm, Wjz4T-X, Wjz5MEL, Wjz5MsT, Wjz5MsD, Wjz5Nht]
+    short_name: "200"
+    stop_times: [[658a, 706a, 713a, 717a, 725a, 732a, 734a, 741a, 748a], [713a, 721a, 728a, 732a, 740a, 747a, 749a, 756a, 804a], [728a, 736a, 743a, 747a, 755a, 802a, 804a, 811a, 821a], [743a, 751a, 758a, 803a, 812a, 818a, 820a, 827a, 837a], [758a, 806a, 814a, 820a, 829a, 835a, 837a, 844a, 854a], [813a, 821a, 829a, 835a, 844a, 850a, 852a, 859a, 906a], [828a, 836a, 844a, 850a, 859a, 906a, 908a, 915a, 922a], [843a, 851a, 859a, 903a, 911a, 918a, 920a, 927a, 934a], [858a, 906a, 913a, 917a, 925a, 932a, 934a, 941a, 948a], [913a, 921a, 928a, 932a, 940a, 947a, 949a, 956a, 1003a], [928a, 936a, 943a, 947a, 955a, 1002a, 1004a, 1011a, 1018a], [943a, 951a, 958a, 1002a, 1010a, 1017a, 1019a, 1026a, 1033a], [958a, 1006a, 1013a, 1017a, 1025a, 1032a, 1034a, 1041a, 1048a], [1013a, 1021a, 1028a, 1032a, 1040a, 1047a, 1049a, 1056a, 1103a], [1028a, 1036a, 1043a, 1047a, 1055a, 1102a, 1104a, 1111a, 1118a], [1043a, 1051a, 1058a, 1102a, 1110a, 1117a, 1119a, 1126a, 1133a], [1058a, 1106a, 1113a, 1117a, 1125a, 1132a, 1134a, 1141a, 1148a], [1113a, 1121a, 1128a, 1132a, 1140a, 1147a, 1149a, 1156a, 1203p], [1128a, 1136a, 1143a, 1147a, 1155a, 1202p, 1204p, 1211p, 1218p], [1143a, 1151a, 1158a, 1202p, 1210p, 1217p, 1219p, 1226p, 1233p], [1158a, 1206p, 1213p, 1217p, 1225p, 1232p, 1234p, 1241p, 1248p], [1213p, 1221p, 1228p, 1232p, 1240p, 1247p, 1249p, 1256p, 103p], [1228p, 1236p, 1243p, 1247p, 1255p, 102p, 104p, 111p, 118p], [1243p, 1251p, 1258p, 102p, 110p, 117p, 119p, 126p, 133p], [1258p, 106p, 113p, 117p, 125p, 132p, 134p, 141p, 148p], [113p, 121p, 128p, 132p, 140p, 147p, 149p, 156p, 203p], [128p, 136p, 143p, 147p, 155p, 202p, 204p, 211p, 218p], [143p, 151p, 158p, 202p, 210p, 217p, 219p, 226p, 233p], [158p, 206p, 213p, 217p, 225p, 232p, 234p, 241p, 248p], [213p, 221p, 228p, 232p, 240p, 247p, 249p, 256p, 303p], [228p, 236p, 243p, 247p, 255p, 302p, 304p, 311p, 318p], [243p, 251p, 258p, 302p, 310p, 317p, 319p, 326p, 333p], [258p, 306p, 313p, 317p, 325p, 332p, 334p, 341p, 348p], [313p, 321p, 328p, 332p, 340p, 347p, 349p, 356p, 404p], [328p, 336p, 343p, 347p, 355p, 401p, 404p, 411p, 421p], [343p, 351p, 358p, 403p, 415p, 420p, 423p, 430p, 440p], [358p, 408p, 416p, 422p, 434p, 439p, 442p, 449p, 459p], [413p, 423p, 431p, 437p, 449p, 454p, 457p, 504p, 514p], [428p, 438p, 446p, 452p, 504p, 509p, 512p, 519p, 529p], [443p, 453p, 501p, 507p, 519p, 524p, 527p, 534p, 544p], [458p, 508p, 516p, 522p, 534p, 539p, 542p, 549p, 559p], [513p, 523p, 531p, 537p, 549p, 554p, 557p, 604p, 611p], [528p, 538p, 546p, 552p, 603p, 610p, 612p, 619p, 626p], [543p, 553p, 601p, 605p, 613p, 620p, 622p, 629p, 636p], [558p