Convert to GeoRSS for nice popups
Convert to GeoRSS for nice popups

<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";  
?>  
 
#!/usr/bin/ruby #!/usr/bin/ruby
require 'postgres' require 'postgres'
   
require 'highline.rb' require 'highline.rb'
include HighLine include HighLine
   
require 'rubygems' require 'rubygems'
require 'json' require 'json'
require 'net/http' require 'net/http'
def cbr_geocode(query) def cbr_geocode(query)
base_url = "http://geocoding.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/geocoding/v2/find.js?query=" base_url = "http://geocoding.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/geocoding/v2/find.js?query="
url = "#{base_url}#{URI.encode(query)}&bbox=-35.47,148.83,-35.16,149.25&return_location=true" url = "#{base_url}#{URI.encode(query)}&bbox=-35.47,148.83,-35.16,149.25&return_location=true"
resp = Net::HTTP.get_response(URI.parse(url)) resp = Net::HTTP.get_response(URI.parse(url))
data = resp.body data = resp.body
   
# we convert the returned JSON data to native Ruby # we convert the returned JSON data to native Ruby
# data structure - a hash # data structure - a hash
result = JSON.parse(data) result = JSON.parse(data)
   
# if the hash has 'Error' as a key, we raise an error # if the hash has 'Error' as a key, we raise an error
if result.has_key? 'Error' if result.has_key? 'Error'
raise "web service error" raise "web service error"
end end
return result return result
end end
   
require 'yaml' require 'yaml'
require 'pp' require 'pp'
Dir.chdir("output") Dir.chdir("output")
   
def getTimePoints() def getTimePoints()
$time_points = [] $time_points = []
$time_points_sources = Hash.new([]) $time_points_sources = Hash.new([])
Dir.glob("*.yml") { |file| Dir.glob("*.yml") { |file|
timetable = YAML::load_file(file) timetable = YAML::load_file(file)
$time_points = $time_points | timetable["time_points"] $time_points = $time_points | timetable["time_points"]
timetable["time_points"].each do |timepoint| timetable["time_points"].each do |timepoint|
$time_points_sources[timepoint] = $time_points_sources[timepoint] | [ file ] $time_points_sources[timepoint] = $time_points_sources[timepoint] | [ file ]
end end
} }
end end
   
getTimePoints() getTimePoints()
$time_points.sort! $time_points.sort!
   
connbus = PGconn.connect("localhost", 5432, '', '', "bus", "postgres", connbus = PGconn.connect("localhost", 5432, '', '', "bus", "postgres",
"snmc") "snmc")
connosm = PGconn.connect("localhost", 5432, '', '', "openstreetmap", connosm = PGconn.connect("localhost", 5432, '', '', "openstreetmap",
"postgres", "snmc") "postgres", "snmc")
   
if ask_if("Insert Timing Point names to database?") if ask_if("Insert Timing Point names to database?")
$time_points.each do |time_point| $time_points.each do |time_point|
begin begin
time_point = time_point.gsub(/\\/, '\&\&').gsub(/'/, "''") time_point = time_point.gsub(/\\/, '\&\&').gsub(/'/, "''"