<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"; | |
?> | |
<?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(/'/, "''" |