Tidy Network 09 output away
Tidy Network 09 output away

file:a/betweenpoint.load.php (deleted)
--- a/betweenpoint.load.php
+++ /dev/null
@@ -1,76 +1,1 @@
-<?php

-/*

- * GeoPo Encode in PHP

- * @author : Shintaro Inagaki

- * @param $location (Array)

- * @return $geopo (String)

- */

-function geopoEncode($lat, $lng) {

-	// 64characters (number + big and small letter + hyphen + underscore)

-	$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";

-

-	$geopo = "";

-	$scale = 7;

-	

-	// Change a degree measure to a decimal number

-	$lat = ($lat + 90) / 180 * pow(8, 10);

-	$lng = ($lng + 180) / 360 * pow(8, 10);

-	// Compute a GeoPo code from head and concatenate

-	for($i = 0; $i < $scale; $i++) {

-		$geopo .= substr($chars, floor($lat / pow(8, 9 - $i) % 8) + floor($lng / pow(8, 9 - $i) % 8) * 8, 1);

-	}

-	return $geopo;

-}		

-

-/*

- * GeoPo Decode in PHP

- * @author : Shintaro Inagaki

- * @param $geopo (String)

- * @return $location (Array)

- */

-function geopoDecode($geopo) {

-	// 64characters (number + big and small letter + hyphen + underscore)

-	$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_";

-	// Array for geolocation

-	$location = array ();

-

-	for ($i = 0; $i < strlen($geopo); $i++) {

-		// What number of character that equal to a GeoPo code (0-63)

-		$order = strpos($chars, substr($geopo, $i, 1));

-		// Lat/Lng plus geolocation value of scale 

-		$location['lat'] = $location['lat'] + floor($order % 8) * pow(8, 9 - $i);

-		$location['lng'] = $location['lng'] + floor($order / 8) * pow(8, 9 - $i);

-	}

-

-	// Change a decimal number to a degree measure, and plus revised value that shift center of area

-	$location['lat'] = $location['lat'] * 180 / pow(8, 10) + 180 / pow(8, strlen($geopo)) / 2 - 90;

-	$location['lng'] = $location['lng'] * 360 / pow(8, 10) + 360 / pow(8, strlen($geopo)) / 2 - 180;

-	$location['scale'] = strlen($geopo);

-

-	return $location;

-}	

-

-$conn = pg_connect("dbname=bus user=postgres password=snmc");

-if (!$conn) {

-  echo "An error occured.\n";

-  exit;

-}

-$xml = simplexml_load_file("04-locatebetweenpoints.osm");

-

-/* Access the <rating> nodes of the first movie.

- * Output the rating scale, too. */

-foreach ($xml->node as $node) {

-	$geoPo = geopoEncode((float)$node['lat'],(float)$node['lon']);

-	$node['lat'] = (int) ((float)$node['lat']*10000000);

-	$node['lon'] = (int) ((float)$node['lon']*10000000);

-	echo($node['lat'].",".$node['lon']."=$geoPo<br>");

-   $sql = "INSERT INTO stops (geohash, lat, lng) VALUES('$geoPo','{$node['lat']}','{$node['lon']}')";

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

-     if (!$result) {

-         echo("Error in SQL query: " . pg_last_error() ."<br>\n");

-     }

-flush();

-    

-}

-?>

 

--- a/betweenpoint.php
+++ b/betweenpoint.php
@@ -126,7 +126,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"] . ";";
               }

file:a/busui/list.php (deleted)
--- a/busui/list.php
+++ /dev/null
@@ -1,22 +1,1 @@
-<div id="get">
-    <div class="toolbar">
-        <h1>GET Example</h1>
-        <a class="back" href="#">AJAX</a>
-    </div>
-    <div class="info">
-        This page was loaded via AJAX.
-    </div>
-    <ul class="rounded">
-        <li><a href="#livetest">Test live events</a></li>
-    </ul>
-</div>
-<div id="livetest">
-    <div class="toolbar">
-        <h1>Events test</h1>
-        <a class="back" href="#">AJAX</a>
-        <a class="button goback" href="#home">Home</a>
-    </div>
-    <div class="info">
-        This is a test of live events.
-    </div>
-</div>
+

--- a/busui/schedule_viewer.py
+++ b/busui/schedule_viewer.py
@@ -337,6 +337,14 @@
   def handle_json_GET_stops(self, params):
     schedule = self.server.schedule
     return [StopToTuple(s) for s in schedule.GetStopList()]
+    
+  def handle_json_GET_timingpoints(self, params):
+    schedule = self.server.schedule
+    matches = []
+    for s in schedule.GetStopList():
+      if s.stop_code.find("Wj") == -1:
+        matches.append(StopToTuple(s))
+    return matches
 
   def handle_json_GET_stopsearch(self, params):
     schedule = self.server.schedule

--- a/maxious-canberra-transit-feed/01-extracttimes.rb
+++ b/maxious-canberra-transit-feed/01-extracttimes.rb
@@ -14,10 +14,16 @@
 	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("\r\n Platform"," - Platform").gsub("  - "," - ").gsub("\n","").gsub("\r","").gsub("\\"," / ").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;
+			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 = []
@@ -27,8 +33,11 @@
 			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("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(/\.+/,"-")
+			time = time.gsub("11.","11").gsub("12.","12").gsub(/\.+/,"-").gsub("\302\240","")
+			if time == "" then time = nil end 
+			time
 		end
+		times.delete(nil)
 		if not times.empty?
 			if not (route = times.shift)
 				raise("TODO: account for shifting route numbers eg. intertown/redex 62/162")
@@ -42,7 +51,7 @@
 	timetable[period] = periodtimes.to_a
 	# pp timetable
 	filename = timetable["short_name"] + "-" + timetable["long_name"]+ "." + period + ".yml"
-	filename = filename.downcase.gsub(" ","-").gsub("/","-")
+	filename = filename.downcase.gsub(" ","-").gsub("/","-").gsub("(","").gsub(")","")
 	puts "Saving " + filename
 	File.open("#{File.dirname(__FILE__)}/output/"+filename, "w") do |f|
 		f.write timetable.to_yaml
@@ -50,7 +59,6 @@
 	timetable
 end
 
-#TODO fix route 934
 Dir.glob("source-html/Route*.htm*") { |file|
 	puts "Opened " + file
 	doc = Nokogiri::HTML(open(file))
@@ -58,7 +66,7 @@
 	timetables = []
 	short_name = "";
 	doc.xpath('//title').each do |title|
-		short_name = title.content.gsub("Route_","").gsub("Route ","").gsub(", ","/").squeeze(" ").strip
+		short_name = title.content.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"
@@ -67,7 +75,15 @@
 	doc.xpath('//table[preceding::text()="Weekdays"]').each do |table|
 		timetables << makeTimetable(table, "stop_times", short_name)
 	end
-
+	doc.xpath('//table[preceding::text()="This timetable is effective from Monday 15th November 2010."]').each do |table|
+		timetables << makeTimetable(table, "stop_times", short_name)
+	end
+	#all tables are weekdays on some really malformatted timetables
+	if short_name == "170"
+		doc.xpath('//table').each do |table|
+			timetables << makeTimetable(table, "stop_times", short_name)
+		end
+	end
 	#weekends
 	doc.xpath('//table[preceding::text()="Saturdays" and following::a]').each do |table|
 		timetables << makeTimetable(table, "stop_times_saturday", short_name)

--- a/maxious-canberra-transit-feed/02-tidytimepoints.rb
+++ b/maxious-canberra-transit-feed/02-tidytimepoints.rb
@@ -2,9 +2,9 @@
 require 'pp'
 require 'yaml'
 class Array
-  def to_yaml_style
-    :inline
-  end
+ def to_yaml_style
+  :inline
+ end
 end
 Dir.chdir("output")
 
@@ -25,60 +25,26 @@
 #pp $time_points_sources.sort
 
 time_point_corrections = {"North Lynehamham" => "North Lyneham",
-			  "Lathlain St Platform 2" => "Lathlain St Bus Station - Platform 2",
-			  "Lathlain St Sation - Platform 5" => "Lathlain St Bus Station - Platform 5",
-	 		  "Lathlain Steet Station" => "Lathlain St Bus Station",
-			  "Lathlain St - Platform 3"  => "Lathlain St Bus Station - Platform 3",
-			  "Lathlain Steet Station - Platform 3"	  => "Lathlain St Bus Station - Platform 3",
-			  "Lathlain St Station" => "Lathlain St Bus Station",
-			  "Lathlain St Station - Platform 1" => "Lathlain St Bus Station - Platform 1",
-			  "Lathlain St Station - Platform 2" => "Lathlain St Bus Station - Platform 2",
-			  "Lathlain St Station - Platform 3" => "Lathlain St Bus Station - Platform 3",
-			  "Lathlain St Station - Platform 4" => "Lathlain St Bus Station - Platform 4",
-			  "Lathlain St Station - Platform 5" => "Lathlain St Bus Station - Platform 5",
-			  "Lathlain St Station - Platform 6" => "Lathlain St Bus Station - Platform 6",
-			  "Flemington Rd, Sandford St" => "Flemington Rd/Sandford St",
-			  "Erindale Centre /Sternberg Crescent" => "Erindale Drive/Sternberg",
-			  "Canberra Hospita" => "Canberra Hospital",
-			  "Cohen Str Station - Platform 1" => "Cohen St Bus Station - Platform 1",
-			  "Cohen Street Station" => "Cohen St Bus Station",
-			  "Cohen Street Station - Platform 2" => "Cohen St Bus Station - Platform 2",
-			  "Cohn St Station - Platform 3" => "Cohen St Bus Station - Platform 3",
-			  "Cohen St Station" => "Cohen St Bus Station",
-			  "Cohen St Station - Platform 1" => "Cohen St Bus Station - Platform 1",
-			  "Cohen St Station - Platform 2" => "Cohen St Bus Station - Platform 2",
-			  "Cohen St Station - Platform 3" => "Cohen St Bus Station - Platform 3",
-			  "Cohen St Station - Platform 4" => "Cohen St Bus Station - Platform 4",
-			  "Cohen St Station - Platform 5" => "Cohen St Bus Station - Platform 5",
-			  "Cohen St Station - Platform 6" => "Cohen St Bus Station - Platform 6",
-			  "City - Platform 7" => "City Interchange - Platform 7",
-			  "Cameron Avenue Station" => "Cameron Ave Bus Station",
-			  "Cameron Avenue Station - Platform 1" => "Cameron Ave Bus Station - Platform 1",
-			  "Cameron Avenue Station - Platform 2" => "Cameron Ave Bus Station - Platform 2",
-			  "Cameron Avenue Station - Platform 3" => "Cameron Ave Bus Station - Platform 3",
-			  "Cameron Avenue Station - Platform 4" => "Cameron Ave Bus Station - Platform 4",
-			  "Cameron Avenue Station - Platform 5" => "Cameron Ave Bus Station - Platform 5",
-			  "Cameron Ave Station" => "Cameron Ave Bus Station",
-			  "Cameron Ave Station - Platform 1" => "Cameron Ave Bus Station - Platform 1",
-			  "Cameron Ave Station - Platform 2" => "Cameron Ave Bus Station - Platform 2",
-			  "Cameron Ave Station - Platform 3" => "Cameron Ave Bus Station - Platform 3",
-			  "Cameron Ave Station - Platform 4" => "Cameron Ave Bus Station - Platform 4",
-			  "Cameron Ave Station - Platform 5" => "Cameron Ave Bus Station - Platform 5",
-			  "Burton & Garranan Hall, Daley Road ANU" => "Burton & Garran Hall/Daley Road ANU",
-			  "Burton & Garranan Hall,Daley Road ANU" => "Burton & Garran Hall/Daley Road ANU",
-			  "Garran/Daley Rd" => "Burton & Garran Hall/Daley Road ANU",
-			  "Kingstons Ave/National Crt" => "Kings Ave/National Crt",
-			  "Newcastle Street after Isa St" => "Newcastle / Isa Street Fyshwick",
-			  "National Circ/Canberra Ave" => "National Circuit / Canberra Ave",
-			  "St Clare of Conder" => "St Clare of Assisi Primary",
-			  "McKillop College Isabella Campus" => "MacKillop College Isabella Campus",
-			  "Outrim / Duggan" => "Outtrim / Duggan",
-			  "Manuka Captain Cook" => "Manuka/Captain Cook",
-			  "Manuka, Captain Cook" => "Manuka/Captain Cook",
-			  "Hospice, Menindee Drive" => "Hospice",
-			  "Tharwa/Pocket" => "Tharwa/Pockett",
-			  "Paul-Co / Mirrabei" => "Paul Coe / Mirrabei"
-			}
+  "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)",
+ "Bridbabella Gardens Nursing Home"=>"Brindabella Gardens Nursing Home",
+ "Bridbabella GardensNursing Home"=> "Brindabella Gardens Nursing Home",
+ "BrindabellaBusiness Park"=> "Brindabella Business Park",
+ "NarrabundahTerminus"=>"Narrabundah Terminus",
+ "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",
+ "William Web / Ginninderra Drive"=>"William Webb / Ginninderra Drive",
+ "Procor / Mead"=>"Proctor / Mead",
+"Fyshwick DirectFactory Outlet"=>"Fyshwick Direct Factory Outlet"
+}
+
 time_point_corrections.each do |wrong, right|
 	$time_points_sources[wrong].each do |wrongfile|
 		badtimetable = YAML::load_file(wrongfile)
@@ -86,7 +52,7 @@
 		badtimetable["time_points"][badentrynumber] = right
 		puts "Corrected '" + wrong + "' to '" + right + "' in " + wrongfile
 		File.open(wrongfile, "w") do |f|
-	  		f.write badtimetable.to_yaml
+	 		f.write badtimetable.to_yaml
 		end
 	end
 end

--- a/maxious-canberra-transit-feed/03-locatetimepoints.rb
+++ b/maxious-canberra-transit-feed/03-locatetimepoints.rb
@@ -1,10 +1,10 @@
 #!/usr/bin/ruby
-require 'postgres'
 
 require 'highline.rb'
 include HighLine
 
 require 'rubygems'
+require 'postgres'
 require 'json'
 require 'net/http'
 def cbr_geocode(query)
@@ -51,13 +51,12 @@
 
 connbus = PGconn.connect("localhost", 5432, '', '', "bus", "postgres", 
 "snmc")
-connosm = PGconn.connect("localhost", 5432, '', '', "openstreetmap", 
-"postgres", "snmc")
+connosm = PGconn.connect("localhost", 5432, '', '', "openstreetmap", "postgres", "snmc")
 
 if ask_if("Insert Timing Point names to database?")
 	$time_points.each do |time_point|
 		begin
-			time_point = time_point.gsub(/\\/, '\&\&').gsub(/'/, "''").gsub("St", "%")
+			time_point = time_point.gsub(/\\/, '\&\&').gsub(/'/, "''")
 			res = connbus.exec("INSERT INTO timing_point (name) VALUES ('#{time_point}')")
 			puts "Put '#{time_point}' into DB"
 		rescue PGError => e

--- a/maxious-canberra-transit-feed/04-generateymlinclude.rb
+++ b/maxious-canberra-transit-feed/04-generateymlinclude.rb
@@ -44,8 +44,9 @@
 		# 0 = geoPo
 		# 1 = lat*100000
 		# 2 = lng*100000
+		# 3 = name
 		#pp time_point[0]
-		f2.puts "  - { name: #{stop[0]},stop_code: #{stop[0]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}}"
+		f2.puts "  - { name: #{stop[3]},stop_code: #{stop[0]}, lat: #{Float(stop[1])/10000000}, lng: #{Float(stop[2])/10000000}}"
 	end
 	f2.puts "routes:\n";
 end

--- /dev/null
+++ b/maxious-canberra-transit-feed/04-locatebetweenpoints.reversegeocode.php
@@ -1,1 +1,38 @@
+<?php
+function getPage($url)
+{
+    $ch = curl_init($url);
+curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
+curl_setopt( $ch, CURLOPT_HEADER, 0 );
+$page = curl_exec($ch);
+curl_close($ch);
+return $page;
+}
+// 
+// http://developers.cloudmade.com/wiki/geocoding-http-api/Documentation
+$conn = pg_connect("dbname=bus user=postgres password=snmc");
+if (!$conn) {
+  echo "An error occured.\n";
+  exit;
+}
+$sql = "Select * from stops where name is null";
+     $result_stops = pg_query($conn, $sql);
+     if (!$result_stops) {
+	cho("Error in SQL query: " . pg_last_error() ."<br>\n");
+     }
+     while ($stop = pg_fetch_assoc($result_stops)) {
+      echo "Processing ".$stop['geohash'] . " ... ";
+      $url = "http://geocoding.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/geocoding/v2/find.js?around=".($stop['lat']/10000000).",".($stop['lng']/10000000)."&distance=closest&object_type=road";
+      $contents = json_decode(getPage($url));
+      $name = $contents->features[0]->properties->name;
+      echo "Saving $name ! <br>" ;
+      $result_save = pg_query($conn, "UPDATE stops set name = '".pg_escape_string($name)."' where geohash = '{$stop['geohash']}' ");
+			      if (!$result_save) {
+	echo("Error in SQL query: " . pg_last_error() ."<br>\n");
+     }
+     flush();
+     }
 
+?>
+
+

--- a/maxious-canberra-transit-feed/05-addbetweenpointstotimetables.rb
+++ b/maxious-canberra-transit-feed/05-addbetweenpointstotimetables.rb
@@ -23,9 +23,11 @@
     timetable["between_stops"] = {}
     for i in 0..timetable["time_points"].length-2
 	begin
-	  searchFrom = timetable["time_points"][i].escape_single_quotes.split("-")[0].strip
-	  searchTo = timetable["time_points"][i+1].escape_single_quotes.split("-")[0].strip
-	  
+	  searchFrom = timetable["time_points"][i].escape_single_quotes.split("(")[0].strip
+	  searchTo = timetable["time_points"][i+1].escape_single_quotes.split("(")[0].strip
+	#  print "SELECT * from between_stops
+	#	  WHERE fromlocation = '#{searchFrom}'
+	#  AND tolocation = '#{searchTo}' AND routes LIKE '%#{route_name};%'"
 	  between_points = connbus.exec("SELECT * from between_stops
 		  WHERE fromlocation = '#{searchFrom}'
 	  AND tolocation = '#{searchTo}' AND routes LIKE '%#{route_name};%'")
@@ -34,8 +36,9 @@
 		#conn.close() if conn
 	end
 	between_points.each do |between_point_row|
-	  timetable["between_stops"][timetable["time_points"][i] + '-' +timetable["time_points"][i+1]] \
-	      = between_point_row['points'].split(";");
+		points = between_point_row['points'].split(";")
+		points.delete("")
+		timetable["between_stops"][timetable["time_points"][i] + '-' +timetable["time_points"][i+1]] = points;
 	end
     end
     #pp timetable["between_stops"]

--- a/maxious-canberra-transit-feed/05-cleanupyaml.sh
+++ /dev/null
@@ -1,3 +1,1 @@
-#!/bin/bash
-sed -i "s/- ---/- /g" cbrtable.yml
 

 Binary files a/maxious-canberra-transit-feed/cbrfeed.zip and /dev/null differ
--- a/maxious-canberra-transit-feed/cbrtable.yml
+++ /dev/null
@@ -1,3639 +1,1 @@
-options:
-  start_date: 20090525
-  end_date: 20101001
-  remove_date: 20101001
-  agency_name: ACT Internal Omnibus Network (ACTION)
-  agency_url: http://www.action.act.gov.au/ 
-  agency_timezone: Australia/Sydney
 
-
-stops:
-  - { name: ADFA,stop_code: ADFA, lat: -35.2937972, lng: 149.1643403}
-  - { name: Ainslie,stop_code: Ainslie, lat: -35.2620105, lng: 149.1443302}
-  - { name: Alexander Maconochie Centre Hume,stop_code: Alexander Maconochie Centre Hume, lat: -35.3720651, lng: 149.1696618}
-  - { name: Alpen & Clifford St,stop_code: Alpen & Clifford St, lat: -35.20562, lng: 149.06259}
-  - { name: Anthony Rolfe/Moonlight,stop_code: Anthony Rolfe/Moonlight, lat: -35.1856021, lng: 149.1543639}
-  - { name: Aranda,stop_code: Aranda, lat: -35.257534, lng: 149.0762963}
-  - { name: Athllon/Sulwood Kambah,stop_code: Athllon/Sulwood Kambah, lat: -35.38442, lng: 149.09328}
-  - { name: Australian Institute Sports Bruce,stop_code: Australian Institute Sports Bruce, lat: -35.246351, lng: 149.101478}
-  - { name: Belconnen Way,stop_code: Belconnen Way, lat: -35.24809, lng: 149.06765}
-  - { name: Bimberi Centre,stop_code: Bimberi Centre, lat: -35.2219941, lng: 149.1546928}
-  - { name: Black Mountain Telstra Tower,stop_code: Black Mountain Telstra Tower, lat: -35.2748058, lng: 149.0972461}
-  - { name: Bonython,stop_code: Bonython, lat: -35.4297416, lng: 149.0814517}
-  - { name: Bonython Primary,stop_code: Bonython Primary, lat: -35.431019, lng: 149.0831217}
-  - { name: Botanic Gardens,stop_code: Botanic Gardens, lat: -35.278643, lng: 149.1093237}
-  - { 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 & Garran Hall/Daley Road ANU,stop_code: Burton & Garran Hall/Daley Road ANU, 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}
-  - { name: Cameron Ave Bus Station - Platform 1,stop_code: Cameron Ave Bus Station - Platform 1, lat: -35.2410195, lng: 149.0722506}
-  - { name: Cameron Ave Bus Station - Platform 2,stop_code: Cameron Ave Bus Station - Platform 2, lat: -35.2410108, lng: 149.0717142}
-  - { name: Cameron Ave Bus Station - Platform 3,stop_code: Cameron Ave Bus Station - Platform 3, lat: -35.2410064, lng: 149.0710758}
-  - { 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,stop_code: Canberra College Weston, 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}
-  - { name: Causeway,stop_code: Causeway, lat: -35.31615, lng: 149.15058}
-  - { name: Centre Link Tuggeranong,stop_code: Centre Link Tuggeranong, lat: -35.4207496, lng: 149.0700973}
-  - { name: Chapman,stop_code: Chapman, lat: -35.3557877, lng: 149.0408111}
-  - { name: Charnwood,stop_code: Charnwood, lat: -35.2052138, lng: 149.0337266}
-  - { name: Chifley,stop_code: Chifley, lat: -35.350985, lng: 149.077319}
-  - { name: Chisholm Shops,stop_code: Chisholm Shops, lat: -35.41341, lng: 149.12833}
-  - { name: Chuculba/William Slim,stop_code: Chuculba/William Slim, lat: -35.2103241, lng: 149.0997736}
-  - { name: City Interchange,stop_code: City Interchange, lat: -35.2794346, lng: 149.1305879}
-  - { name: City Interchange - Platform 1,stop_code: City Interchange - Platform 1, lat: -35.2794346, lng: 149.1305879}
-  - { name: City Interchange - Platform 10,stop_code: City Interchange - Platform 10, lat: -35.2793571, lng: 149.1293659}
-  - { name: City Interchange - Platform 11,stop_code: City Interchange - Platform 11, lat: -35.2787905, lng: 149.1288627}
-  - { name: City Interchange - Platform 3,stop_code: City Interchange - Platform 3, lat: -35.2787886, lng: 149.1304779}
-  - { name: City Interchange - Platform 4,stop_code: City Interchange - Platform 4, lat: -35.2785658, lng: 149.1301727}
-  - { name: City Interchange - Platform 5,stop_code: City Interchange - Platform 5, lat: -35.2785242, lng: 149.1297348}
-  - { name: City Interchange - Platform 7,stop_code: City Interchange - Platform 7, lat: -35.27843, lng: 149.130345}
-  - { name: City Interchange - Platform 8,stop_code: City Interchange - Platform 8, lat: -35.2778798, lng: 149.1305995}
-  - { name: City Interchange - Platform 9,stop_code: City Interchange - Platform 9, lat: -35.2783224, lng: 149.130726}
-  - { name: Citywest,stop_code: Citywest, lat: -35.2788605, lng: 149.1257969}
-  - { name: Cnr Kerrigan/Lhotsky,stop_code: Cnr Kerrigan/Lhotsky, lat: -35.1995716, lng: 149.0285277}
-  - { name: Cnr Tillyard Dr & Spalding St,stop_code: Cnr Tillyard Dr & Spalding St, lat: -35.2040477, lng: 149.0393052}
-  - { name: Cohen St Bus Station,stop_code: Cohen St Bus Station, lat: -35.2394775, lng: 149.0602031}
-  - { name: Cohen St Bus Station - Platform 1,stop_code: Cohen St Bus Station - Platform 1, lat: -35.2394775, lng: 149.0602031}
-  - { name: Cohen St Bus Station - Platform 2,stop_code: Cohen St Bus Station - Platform 2, lat: -35.2396467, lng: 149.0602152}
-  - { name: Cohen St Bus Station - Platform 3,stop_code: Cohen St Bus Station - Platform 3, lat: -35.239764, lng: 149.0604531}
-  - { name: Cohen St Bus Station - Platform 4,stop_code: Cohen St Bus Station - Platform 4, lat: -35.239844, lng: 149.0600683}
-  - { name: Cohen St Bus Station - Platform 5,stop_code: Cohen St Bus Station - Platform 5, lat: -35.2401211, lng: 149.0597102}
-  - { name: Cohen St Bus Station - Platform 6,stop_code: Cohen St Bus Station - Platform 6, lat: -35.2400028, lng: 149.060315}
-  - { name: Conder Primary,stop_code: Conder Primary, lat: -35.4643475, lng: 149.0986908}
-  - { name: Cook,stop_code: Cook, lat: -35.2596, lng: 149.0638}
-  - { name: Cooleman Court,stop_code: Cooleman Court, lat: -35.34147, lng: 149.05338}
-  - { name: Copland College,stop_code: Copland College, lat: -35.2127018, lng: 149.0596387}
-  - { name: Curtin,stop_code: Curtin, lat: -35.3248779, lng: 149.081441}
-  - { name: Deakin,stop_code: Deakin, lat: -35.3158608, lng: 149.1084563}
-  - { name: Deamer/Clift Richardson,stop_code: Deamer/Clift Richardson, lat: -35.4319597, lng: 149.1187876}
-  - { name: Dickson,stop_code: Dickson, lat: -35.2498434, lng: 149.1391218}
-  - { name: Dickson College,stop_code: Dickson College, lat: -35.24923, lng: 149.15315}
-  - { name: Dickson Cowper St,stop_code: Dickson Cowper St, lat: -35.250297, lng: 149.141336}
-  - { name: Dickson Shops/Antill St,stop_code: Dickson Shops/Antill St, lat: -35.2251335, lng: 149.1658895}
-  - { name: Duffy,stop_code: Duffy, lat: -35.3366908, lng: 149.0324311}
-  - { name: Duffy Primary School,stop_code: Duffy Primary School, lat: -35.334219, lng: 149.033656}
-  - { name: Dunlop,stop_code: Dunlop, lat: -35.1942693, lng: 149.0206702}
-  - { name: Electricity House,stop_code: Electricity House, lat: -35.282374, lng: 149.132047}
-  - { name: Erindale Centre,stop_code: Erindale Centre, lat: -35.4038881, lng: 149.0992283}
-  - { name: Erindale Centre /Sternberg Crescent,stop_code: Erindale Centre /Sternberg Crescent, lat: -35.4014472, lng: 149.0956545}
-  - { name: Erindale Dr/ Charleston St Monash,stop_code: Erindale Dr/ Charleston St Monash, lat: -35.4172271, lng: 149.0813467}
-  - { name: Erindale Drive/Sternberg,stop_code: Erindale Drive/Sternberg, lat: -35.4014472, lng: 149.0956545}
-  - { name: Evatt,stop_code: Evatt, lat: -35.2091093, lng: 149.0735343}
-  - { name: Eye Hospital,stop_code: Eye Hospital, lat: -35.3341884, lng: 149.1656213}
-  - { name: Fairbairn Park,stop_code: Fairbairn Park, lat: -35.3001773, lng: 149.2041185}
-  - { name: Farrer Primary School,stop_code: Farrer Primary School, lat: -35.37887, lng: 149.10641}
-  - { name: Farrer Terminus,stop_code: Farrer Terminus, lat: -35.3771794, lng: 149.1046948}
-  - { name: Federation Square,stop_code: Federation Square, lat: -35.1908726, lng: 149.0848153}
-  - { name: Fisher,stop_code: Fisher, lat: -35.3605627, lng: 149.0576481}
-  - { name: Flemington/Nullabor,stop_code: Flemington/Nullabor, lat: -35.2008585, lng: 149.1493407}
-  - { name: Flemington Rd,stop_code: Flemington Rd, lat: -35.20756, lng: 149.14778}
-  - { name: Flemington Rd/Sandford St,stop_code: Flemington Rd/Sandford St, lat: -35.2008585, lng: 149.1493407}
-  - { 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}
-  - { name: Fraser East Terminus,stop_code: Fraser East Terminus, lat: -35.1896539, lng: 149.0435012}
-  - { name: Fraser West Terminus,stop_code: Fraser West Terminus, lat: -35.191513, lng: 149.038006}
-  - { name: Fyshwick Direct Factory Outlet,stop_code: Fyshwick Direct Factory Outlet, lat: -35.3359862, lng: 149.1796322}
-  - { name: Fyshwick Terminus,stop_code: Fyshwick Terminus, lat: -35.3285202, lng: 149.1785592}
-  - { name: Garran,stop_code: Garran, lat: -35.3423286, lng: 149.10811}
-  - { 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: Gordon Primary,stop_code: Gordon Primary, lat: -35.455517, lng: 149.086978}
-  - { name: Gowrie,stop_code: Gowrie, lat: -35.4120264, lng: 149.1110804}
-  - { name: Gungahlin Market Place,stop_code: Gungahlin Market Place, 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}
-  - { 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: 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: Holder,stop_code: Holder, lat: -35.3378123, lng: 149.0449433}
-  - { name: Holt,stop_code: Holt, lat: -35.223099, lng: 149.0126269}
-  - { name: Hospice,stop_code: Hospice, lat: -35.3029, lng: 149.14957}
-  - { name: Hughes,stop_code: Hughes, lat: -35.3339223, lng: 149.093854}
-  - { name: Isaacs,stop_code: Isaacs, lat: -35.3669823, lng: 149.1119217}
-  - { 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/Maribyrnong,stop_code: Kaleen Village/Maribyrnong, 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 / Horse Park,stop_code: Katherine / Horse Park, lat: -35.1680901, lng: 149.1321801}
-  - { name: Kings Ave/National Crt,stop_code: Kings Ave/National Crt, lat: -35.3062755, lng: 149.1291434}
-  - { name: Kingston,stop_code: Kingston, lat: -35.3197448, lng: 149.1375261}
-  - { name: Kippax,stop_code: Kippax, lat: -35.22225, lng: 149.0195627}
-  - { name: Kippax Centre,stop_code: Kippax Centre, lat: -35.22172, lng: 149.01995}
-  - { name: Kosciuszko/Everard,stop_code: Kosciuszko/Everard, lat: -35.188901, lng: 149.1216937}
-  - { name: Lanyon Market Place,stop_code: Lanyon