rectify inline yaml sequence format
rectify inline yaml sequence format

<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<script type="text/javascript" src="http://loki.com/plugin/files/loki.js"></script>  
<script src="openlayers/OpenLayers.js"></script> <script src="openlayers/OpenLayers.js"></script>
<SCRIPT TYPE="text/javascript" SRC="OpenStreetMap.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="OpenStreetMap.js"></SCRIPT>
<script type="text/javascript"> <script type="text/javascript">
var map, layer;  
   
function aaa(a)  
{  
var lonLat = new OpenLayers.LonLat(a.coords.longitude, a.coords.latitude).transform(new OpenLayers.Projection("EPSG:4326"),  
map.getProjectionObject());  
map.setCenter(lonLat, 13);  
   
}  
   
function handleError(a)  
{  
alert("error in geoloc");  
}  
   
function init() function init()
{ {
var extent = new OpenLayers.Bounds(148.98, -35.48, 149.25, -35.15); var extent = new OpenLayers.Bounds(148.98, -35.48, 149.25, -35.15);
// set up the map options // set up the map options
var options = var options =
{ {
maxExtent: extent, maxExtent: extent,
numZoomLevels: 20, numZoomLevels: 20,
}; };
// create the ol map object // create the ol map object
var map = new OpenLayers.Map('map', options); var map = new OpenLayers.Map('map', options);
layer = new OpenLayers.Layer.OSM("local", "http://10.0.1.153/tiles/${z}/${x}/${y}.png"); var osmtiles = new OpenLayers.Layer.OSM("local", "http://10.0.1.153/tiles/${z}/${x}/${y}.png");
map.addLayer(layer); // use http://open.atlas.free.fr/GMapsTransparenciesImgOver.php and http://code.google.com/p/googletilecutter/ to make tiles
map.addLayer(new OpenLayers.Layer.OSM.NearMap("NearMap")); var graphic = new OpenLayers.Layer.Image(
  'Weekday Bus Map',
  'weekday_bus_map.png',
  new OpenLayers.Bounds(149.0, -35.47, 149.16, -35.16),
  new OpenLayers.Size(1191, 2268),
  {baseLayer: false}
  );
   
  var nearmap = new OpenLayers.Layer.OSM.NearMap("NearMap");
   
  var routes = new OpenLayers.Layer.GML("Routes", "displayroutes.kml.php", {
  format: OpenLayers.Format.KML,
  formatOptions: {
  extractStyles: true,
  extractAttributes: true,
  maxDepth: 2
  }
  });
  var stopicon = new OpenLayers.Icon("http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png",new OpenLayers.Size(32,32));
  var stops = new OpenLayers.Layer.GeoRSS("Stops", "displaystops.georss.php", { icon: stopicon });
  var timeicon = new OpenLayers.Icon("http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png",new OpenLayers.Size(32,32));
  var timepoints = new OpenLayers.Layer.GeoRSS("Timing Points", "displaytimepoints.georss.php", { icon: timeicon });
   
  map.addLayers([osmtiles,stops,routes,timepoints,nearmap]);
   
var lonLat = new OpenLayers.LonLat(149.11, -35.28).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); var lonLat = new OpenLayers.LonLat(149.11, -35.28).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter(lonLat, 13); map.setCenter(lonLat, 13);
map.addControl( new OpenLayers.Control.LayerSwitcher({'ascending':false})); map.addControl( new OpenLayers.Control.LayerSwitcher({'ascending':false}));
map.addControl(new OpenLayers.Control.MousePosition( map.addControl(new OpenLayers.Control.MousePosition(
{ {
displayProjection: new OpenLayers.Projection("EPSG:4326"), displayProjection: new OpenLayers.Projection("EPSG:4326"),
suffix: "__________________________________" suffix: "__________________________________"
})); }));
map.addControl(new OpenLayers.Control.MousePosition( map.addControl(new OpenLayers.Control.MousePosition(
{ {
displayProjection: new OpenLayers.Projection("EPSG:900913") displayProjection: new OpenLayers.Projection("EPSG:900913")
})); }));
if (navigator.geolocation)  
{  
navigator.geolocation.getCurrentPosition(this.aaa, this.handleError);  
}  
else  
{  
var loki = LokiAPI();  
loki.onSuccess = function (location)  
{  
var lonLat = new OpenLayers.LonLat(location.longitude, location.latitude).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());  
map.setCenter(lonLat, 13);  
}  
loki.onFailure = function (error)  
{  
loki.requestIPLocation(true, loki.NO_STREET_ADDRESS_LOOKUP)  
}  
loki.setKey('maxious.lambdacomplex.org');  
loki.requestLocation(true, loki.NO_STREET_ADDRESS_LOOKUP);  
}  
map.addLayer(new OpenLayers.Layer.GML("KML", "displayroutes.kml.php", {  
format: OpenLayers.Format.KML,  
formatOptions: {  
extractStyles: true,  
extractAttributes: true,  
maxDepth: 2  
}  
}));  
map.addLayer(new OpenLayers.Layer.Vector("KML", {  
projection: map.displayProjection,  
strategies: [new OpenLayers.Strategy.Fixed()],  
protocol: new OpenLayers.Protocol.HTTP(  
{  
url: "displaystops.kml.php",  
format: new OpenLayers.Format.KML(  
{  
extractStyles: true,  
extractAttributes: true  
})  
})  
}));  
} }
   
</script> </script>
   
</head> </head>
<body onload="init()"> <body onload="init()">
<div id="map" width="100%" height="100%" class="smallmap"></div> <div id="map" width="100%" height="100%" class="smallmap"></div>
</body> </body>
</html> </html>
   
   
  <?php
  header('Content-Type: application/xml');
  echo '<?xml version="1.0" encoding="utf-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom"
  xmlns:georss="http://www.georss.org/georss"><title>Bus Stops from OSM</title>';
  $conn = pg_connect("dbname=openstreetmap user=postgres password=snmc");
  if (!$conn) {
  echo "An error occured.\n";
  exit;
  }
  /*SELECT * from current_node_tags, (Select id FROM current_node_tags WHERE "v" LIKE '%bus%') as a
  where a.id = current_node_tags.id; */
  $result_stops = pg_query($conn, "Select * FROM current_node_tags INNER JOIN current_nodes ON
  current_node_tags.id=current_nodes.id WHERE v LIKE '%bus%' ");
  if (!$result_stops) {
  echo "An stops retirieve error occured.\n";
  exit;
  }
 
  while ($stop = pg_fetch_assoc($result_stops)) {
  echo "\n<entry>\n";
  echo "<summary>";
  $result_stopkeys = pg_query($conn, "SELECT * from current_node_tags where id = {$stop['id']};");
  if (!$result_stopkeys) {
  echo "An stops keys retirieve error occured.\n";
  exit;
  }
  $name = "";
  while ($stopkeys = pg_fetch_assoc($result_stopkeys)) {
  echo htmlspecialchars(print_r($stopkeys,true));
  $name .= htmlspecialchars($stopkeys['v']);
  }
  echo "</summary>";
  echo "<title>$name</title>";
 
  echo "<georss:point> ";echo ($stop['latitude']/10000000)." ".($stop['longitude']/10000000);
  echo " </georss:point>";
  echo '</entry>';
  }
 
  echo "\n</feed>\n";
  ?>
 
file:a/displaystops.kml.php (deleted)
<?php  
header('Content-Type: application/vnd.google-earth.kml+xml');  
echo '<?xml version="1.0" encoding="UTF-8"?>  
<kml xmlns="http://www.opengis.net/kml/2.2"><Document>';  
echo '<Style id="target">  
<IconStyle>  
<Icon>  
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>  
</Icon>  
</IconStyle>  
</Style>';  
echo '<Style id="player">  
<IconStyle>  
<Icon>  
<href>http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png</href>  
</Icon>  
</IconStyle>  
</Style>';  
$conn = pg_connect("dbname=openstreetmap user=postgres password=snmc");  
if (!$conn) {  
echo "An error occured.\n";  
exit;  
}  
/*SELECT * from current_node_tags, (Select id FROM current_node_tags WHERE "v" LIKE '%bus%') as a  
where a.id = current_node_tags.id; */  
$result_stops = pg_query($conn, "Select * FROM current_node_tags INNER JOIN current_nodes ON  
current_node_tags.id=current_nodes.id WHERE v LIKE '%bus%' ");  
if (!$result_stops) {  
echo "An stops retirieve error occured.\n";  
exit;  
}  
 
while ($stop = pg_fetch_assoc($result_stops)) {  
echo "\n<Placemark>\n";  
echo "<description>";  
$result_stopkeys = pg_query($conn, "SELECT * from current_node_tags where id = {$stop['id']};");  
if (!$result_stopkeys) {  
echo "An stops keys retirieve error occured.\n";  
exit;  
}  
$name = "";  
while ($stopkeys = pg_fetch_assoc($result_stopkeys)) {  
echo htmlspecialchars(print_r($stopkeys,true));  
$name .= htmlspecialchars($stopkeys['v']);  
}  
echo "</description>";  
echo "<name>$name</name>";  
 
echo "<styleUrl>#target</styleUrl>";  
echo "\n <Point><coordinates> ";  
echo ($stop['longitude']/10000000).",".($stop['latitude']/10000000)."\n";  
echo " </coordinates> </Point>";  
echo '</Placemark>';  
}  
 
echo "\n</Document></kml>\n";  
?>  
 
  <?php
  header('Content-Type: application/xml');
  echo '<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss">';
  echo '<title> Points</title>';
  $conn = pg_connect("dbname=bus user=postgres password=snmc");
  if (!$conn) {
  echo "An error occured.\n";
  exit;
  }
  $result_timepoints = pg_query($conn, "Select * FROM timing_point where lat is not null and lng is not null ");
  if (!$result_timepoints) {
  echo "An timepoints retirieve error occured.\n";
  exit;
  }
 
  while ($timepoint = pg_fetch_assoc($result_timepoints)) {
  echo "<entry>";
  echo "<summary>".htmlspecialchars ($timepoint['name'])."</summary>";
  echo "<title>".htmlspecialchars($timepoint['name'])."</title>";
  echo "<georss:point> ".($timepoint['lat']/10000000)." ".($timepoint['lng']/10000000)."</georss:point>";
  echo "</entry>\n";
  }
 
  echo "\n</feed>\n";
  ?>
 
<?php  
header('Content-Type: application/vnd.google-earth.kml+xml');  
echo '<?xml version="1.0" encoding="UTF-8"?>  
<kml xmlns="http://www.opengis.net/kml/2.2"><Document>';  
echo '<Style id="target">  
<IconStyle>  
<Icon>  
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>  
</Icon>  
</IconStyle>  
</Style>';  
echo '<Style id="player">  
<IconStyle>  
<Icon>  
<href>http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png</href>  
</Icon>  
</IconStyle>  
</Style>';  
$conn = pg_connect("dbname=openstreetmap user=postgres password=snmc");  
if (!$conn) {  
echo "An error occured.\n";  
exit;  
}  
/*SELECT * from current_node_tags, (Select id FROM current_node_tags WHERE "v" LIKE '%bus%') as a  
where a.id = current_node_tags.id; */  
$result_stops = pg_query($conn, "Select * FROM current_node_tags INNER JOIN current_nodes ON  
current_node_tags.id=current_nodes.id WHERE v LIKE '%bus%' ");  
if (!$result_stops) {  
echo "An stops retirieve error occured.\n";  
exit;  
}  
 
while ($stop = pg_fetch_assoc($result_stops)) {  
echo "\n<Placemark>\n";  
echo "<description>";  
$result_stopkeys = pg_query($conn, "SELECT * from current_node_tags where id = {$stop['id']};");  
if (!$result_stopkeys) {  
echo "An stops keys retirieve error occured.\n";  
exit;  
}  
$name = "";  
while ($stopkeys = pg_fetch_assoc($result_stopkeys)) {  
echo htmlspecialchars(print_r($stopkeys,true));  
$name .= htmlspecialchars($stopkeys['v']);  
}  
echo "</description>";  
echo "<name>$name</name>";  
 
echo "<styleUrl>#target</styleUrl>";  
echo "\n <Point><coordinates> ";  
echo ($stop['longitude']/10000000).",".($stop['latitude']/10000000)."\n";  
echo " </coordinates> </Point>";  
echo '</Placemark>';  
}  
 
echo "\n</Document></kml>\n";  
?>  
 
require 'rubygems' require 'rubygems'
require 'nokogiri' require 'nokogiri'
require 'open-uri' require 'open-uri'
require 'pp' require 'pp'
  require 'yaml'
  class Array
  def to_yaml_style
  :inline
  end
  end
   
   
def makeTimetable(table, period, short_name) def makeTimetable(table, period, short_name)
timetable = {"stop_times" => [], "between_stops" => [], "short_name" => short_name} timetable = {"stop_times" => [], "between_stops" => [], "short_name" => short_name}
time_points = table.xpath('tr[1]//th').map do |tp| time_points = table.xpath('tr[1]//th').map do |tp|
if tp.content != "\302\240" && tp.content != "" && tp.content != "<br/>" 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("\r\n Platform"," - Platform").gsub(" - "," - ").gsub("\n","").gsub("\r","").gsub("\\"," / ").strip
end end
end end
time_points.delete(nil) time_points.delete(nil)
timetable["time_points"] = time_points timetable["time_points"] = time_points.to_a
timetable["long_name"] = "To " + time_points.last timetable["long_name"] = "To " + time_points.last
periodtimes = [] periodtimes = []
table.css('tr').each do |row| table.css('tr').each do |row|
times = row.css('td').map do |cell| times = row.css('td').map do |cell|
#TODO convert to GTFS time ie. replace " AM" with a #TODO convert to GTFS time ie. replace " AM" with a
time = cell.content.squeeze(" ").strip time = cell.content.squeeze(" ").strip
end end
if not times.empty? if not times.empty?
if not (route = times.shift) if not (route = times.shift)
raise("TODO: account for shifting route numbers eg. intertown/redex 62/162") raise("TODO: account for shifting route numbers eg. intertown/redex 62/162")
end end
periodtimes << times periodtimes << times.to_a
end end
end end
if periodtimes.size < 1 if periodtimes.size < 1
raise "No times for route " + short_name + " in period " + period raise "No times for route " + short_name + " in period " + period
end end
timetable["stop_times"] = { period => periodtimes } timetable["stop_times"] = { period => periodtimes.to_a }
# pp timetable # pp timetable