From: maxious Date: Fri, 29 Apr 2011 06:01:21 +0000 Subject: Fix retrieving routes by number/number range X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=7e1c482cc6ce474f43e00498caa541a2827fca23 --- Fix retrieving routes by number/number range --- --- /dev/null +++ b/dotcloud/postinstall @@ -1,1 +1,19 @@ +#!/bin/bash +#dotcloud postinstall +curl http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ +-o /home/dotcloud/current/cbrfeed.zip +wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ +-O /tmp/Graph.obj + +#db setup +#curl https://github.com/maxious/ACTBus-ui/raw/master/transitdata.cbrfeed.sql.gz -o transitdata.cbrfeed.sql.gz +#curl https://github.com/maxious/ACTBus-ui/raw/master/lib/postgis.sql -o postgis.sql +#createlang -d transitdata plpgsql +#psql -d transitdata -f postgis.sql +#gunzip /var/www/transitdata.cbrfeed.sql.gz +#psql -d transitdata -f transitdata.cbrfeed.sql +#createuser transitdata -SDRP +#password transitdata +#psql -c \"GRANT SELECT ON TABLE agency,calendar,calendar_dates,routes,stop_times,stops,trips TO transitdata;\" + --- /dev/null +++ b/dotcloud/push.sh @@ -1,1 +1,7 @@ +#wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war +cp ~/workspace/opentripplanner/maven.1277125291275/opentripplanner-webapp/target/opentripplanner-webapp.war ./ +#wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war +cp ~/workspace/opentripplanner/maven.1277125291275/opentripplanner-api-webapp/target/opentripplanner-api-webapp.war ./ +dotcloud push actbus.otp ./ + --- a/include/common-db.inc.php +++ b/include/common-db.inc.php @@ -1,6 +1,6 @@ --- a/include/common-template.inc.php +++ b/include/common-template.inc.php @@ -182,7 +182,7 @@ if ($opendiv) { echo '
- Back + Back

' . $pageTitle . '

Home
--- a/include/common.inc.php +++ b/include/common.inc.php @@ -6,7 +6,7 @@ "phperror", "awsotp", //"squallotp", - //"vanilleotp", + "vanilleotp", "database", "other" ); @@ -15,6 +15,9 @@ $otpAPIurl = 'http://localhost:8080/opentripplanner-api-webapp/'; if (isDebug("awsotp") || php_uname('n') == "maxious.xen.prgmr.com") { $otpAPIurl = 'http://bus-main.lambdacomplex.org:8080/opentripplanner-api-webapp/'; +} +if (isDebug("dotcloudotp") || php_uname('n') == "actbus-www") { + $otpAPIurl = 'http://otp.actbus.dotcloud.com/opentripplanner-api-webapp/'; } if (isDebug("squallotp")) { $otpAPIurl = 'http://10.0.1.108:5080/opentripplanner-api-webapp/'; @@ -30,6 +33,7 @@ include_once ("common-session.inc.php"); include_once ("common-db.inc.php"); include_once ("common-template.inc.php"); +include_once ("common-request.inc.php"); function isDebugServer() { --- a/include/db/route-dao.inc.php +++ b/include/db/route-dao.inc.php @@ -1,113 +1,21 @@ '".current_time()."' and routes.route_id = '$routeID' order by -arrival_time limit 1"; - debug($query,"database"); - $result = pg_query($conn, $query); - if (!$result) { - databaseError(pg_result_error($result)); - return Array(); - } - $r = pg_fetch_assoc($result); - // past last trip of the day special case - if (sizeof($r) == 0) { - $query = "select * from routes join trips on trips.route_id = routes.route_id -join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' order by -arrival_time DESC limit 1"; - debug($query,"database"); - $result = pg_query($conn, $query); - if (!$result) { - databaseError(pg_result_error($result)); - return Array(); - } - $r = pg_fetch_assoc($result); - } - return $r; - } - - function getTimeInterpolatedRouteAtStop($routeID, $stop_id) -{ - $nextTrip = getRouteNextTrip($routeID); - if ($nextTrip['trip_id']){ - foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) { - if ($tripStop['stop_id'] == $stop_id) return $tripStop; - } - } - return Array(); -} - -function getRouteTrips($routeID) { - global $conn; - $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id -join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' and stop_sequence = '1' order by -arrival_time "; - debug($query,"database"); - $result = pg_query($conn, $query); - if (!$result) { - databaseError(pg_result_error($result)); - return Array(); - } - return pg_fetch_all($result); - } -function getRoutesByDestination($destination = "", $service_period = "") { - global $conn; - if ($service_period == "") $service_period = service_period(); - if ($destination != "") { - $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id -FROM stop_times join trips on trips.trip_id = -stop_times.trip_id join routes on trips.route_id = routes.route_id -WHERE route_long_name = '$destination' AND service_id='$service_period' order by route_short_name"; - } else { - $query = "SELECT DISTINCT route_long_name -FROM stop_times join trips on trips.trip_id = -stop_times.trip_id join routes on trips.route_id = routes.route_id -WHERE service_id='$service_period' order by route_long_name"; - } - debug($query,"database"); + debug($query, "database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); @@ -115,16 +23,17 @@ } return pg_fetch_all($result); } - -function getRoutesBySuburb($suburb, $service_period = "") { - if ($service_period == "") $service_period = service_period(); - global $conn; - $query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name -FROM stop_times join trips on trips.trip_id = stop_times.trip_id -join routes on trips.route_id = routes.route_id -join stops on stops.stop_id = stop_times.stop_id -WHERE zone_id LIKE '%$suburb;%' AND service_id='$service_period' ORDER BY route_short_name"; - debug($query,"database"); +function getRoutesByNumber($routeNumber = "") +{ + global $conn; + if ($routeNumber != "") { + $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = +routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where route_short_name = '$routeNumber' order by route_short_name;"; + } + else { + $query = "SELECT DISTINCT route_short_name from routes order by route_short_name"; + } + debug($query, "database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); @@ -132,14 +41,124 @@ } return pg_fetch_all($result); } - -function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) { - - - if ($service_period == "") $service_period = service_period(); - if ($limit != "") $limit = " LIMIT $limit "; - global $conn; - $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, +function getRoutesByNumberSeries($routeNumberSeries = "") +{ + global $conn; + if (strlen($routeNumberSeries) == 1) { + return getRoutesByNumber($routeNumberSeries); + } + $seriesMin = substr($routeNumberSeries, 0, -1) . "0"; + $seriesMax = substr($routeNumberSeries, 0, -1) . "9"; + $query = "Select distinct routes.route_id,routes.route_short_name,routes.route_long_name,service_id from routes join trips on trips.route_id = +routes.route_id join stop_times on stop_times.trip_id = trips.trip_id where to_number(route_short_name, 'FM999') between $seriesMin and $seriesMax order by route_short_name;"; + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} +function getRouteNextTrip($routeID) +{ + global $conn; + $query = "select * from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where +arrival_time > '" . current_time() . "' and routes.route_id = '$routeID' order by +arrival_time limit 1"; + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + $r = pg_fetch_assoc($result); + // past last trip of the day special case + if (sizeof($r) == 0) { + $query = "select * from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' order by +arrival_time DESC limit 1"; + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + $r = pg_fetch_assoc($result); + } + return $r; +} +function getTimeInterpolatedRouteAtStop($routeID, $stop_id) +{ + $nextTrip = getRouteNextTrip($routeID); + if ($nextTrip['trip_id']) { + foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) { + if ($tripStop['stop_id'] == $stop_id) return $tripStop; + } + } + return Array(); +} +function getRouteTrips($routeID) +{ + global $conn; + $query = "select routes.route_id,trips.trip_id,service_id,arrival_time, stop_id, stop_sequence from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where routes.route_id = '$routeID' and stop_sequence = '1' order by +arrival_time "; + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} +function getRoutesByDestination($destination = "", $service_period = "") +{ + global $conn; + if ($service_period == "") $service_period = service_period(); + if ($destination != "") { + $query = "SELECT DISTINCT trips.route_id,route_short_name,route_long_name, service_id +FROM stop_times join trips on trips.trip_id = +stop_times.trip_id join routes on trips.route_id = routes.route_id +WHERE route_long_name = '$destination' AND service_id='$service_period' order by route_short_name"; + } + else { + $query = "SELECT DISTINCT route_long_name +FROM stop_times join trips on trips.trip_id = +stop_times.trip_id join routes on trips.route_id = routes.route_id +WHERE service_id='$service_period' order by route_long_name"; + } + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} +function getRoutesBySuburb($suburb, $service_period = "") +{ + if ($service_period == "") $service_period = service_period(); + global $conn; + $query = "SELECT DISTINCT service_id,trips.route_id,route_short_name,route_long_name +FROM stop_times join trips on trips.trip_id = stop_times.trip_id +join routes on trips.route_id = routes.route_id +join stops on stops.stop_id = stop_times.stop_id +WHERE zone_id LIKE '%$suburb;%' AND service_id='$service_period' ORDER BY route_short_name"; + debug($query, "database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} +function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) +{ + if ($service_period == "") $service_period = service_period(); + if ($limit != "") $limit = " LIMIT $limit "; + global $conn; + $query = "SELECT service_id,trips.route_id,route_short_name,route_long_name,min(stops.stop_id) as stop_id, min(ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE)) as distance FROM stop_times join trips on trips.trip_id = stop_times.trip_id @@ -149,7 +168,7 @@ AND ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), $distance, FALSE) group by service_id,trips.route_id,route_short_name,route_long_name order by distance $limit"; - debug($query,"database"); + debug($query, "database"); $result = pg_query($conn, $query); if (!$result) { databaseError(pg_result_error($result)); --- a/index.php +++ b/index.php @@ -13,14 +13,14 @@
  • Timetables - Stops
  • Major (Timing Point) Stops
  • All Stops
  • -
  • Stops By Suburb
  • +
  • Stops By Suburb
  • Nearby Stops
  • {$route['route_short_name']} {$route['route_long_name']}"; foreach (getRouteTrips($routeid) as $key => $trip) { --- a/labs/tripPlannerTester.kml.php +++ b/labs/tripPlannerTester.kml.php @@ -49,7 +49,7 @@ "latdeltasize" => $latdeltasize, "londeltasize" => $londeltasize, "regionname" => $md['key'], - "plan" => $plan . "
    original plan" + "plan" => $plan . '
    original plan' ); $regionTimes[] = $time; } @@ -137,8 +137,8 @@ "finishlon" => 149.1243, ) ); -$latdeltasize = 0.025; -$londeltasize = 0.025; +$latdeltasize = 0.005; +$londeltasize = 0.005; $from = "Wattle Street"; $fromPlace = (startsWith($from, "-") ? $from : geocode($from, false)); $startTime = "9:00 am"; @@ -147,6 +147,7 @@ $regionTimes = Array(); $testRegions = Array(); $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"; +if ($kml) echo " $from at $startTime on $startDate "; if ($csv) echo "
    ";
     if ($csv) echo "lat,lon,time,latdeltasize, londeltasize, region key name\n";
     $rc = new RollingCurl("processResult_cb");
    @@ -155,11 +156,12 @@
     	for ($i = $boundingBox['startlat']; $i >= $boundingBox['finishlat']; $i-= $latdeltasize) {
     		for ($j = $boundingBox['startlon']; $j <= $boundingBox['finishlon']; $j+= $londeltasize) {
     			$url = $otpAPIurl . "ws/plan?date=" . urlencode($startDate) . "&time=" . urlencode($startTime) . "&mode=TRANSIT%2CWALK&optimize=QUICK&maxWalkDistance=440&wheelchair=false&toPlace=" . $i . "," . $j . "&fromPlace=$fromPlace";
    +			//debug($url);
     			$request = new RollingCurlRequest($url);
     			$request->headers = Array(
     				"Accept: application/json"
     			);
    -			$request->metadata = Array( "i" => $i, "j" => $j, "key" => $key);
    +			$request->metadata = Array( "i" => $i, "j" => $j, "key" => $key, "url" => $url);
     			$rc->add($request);
     		}
     	}
    @@ -171,15 +173,14 @@
     	//$maxTime = max($regionTimes);
     	//$rangeTime = $maxTime - $minTime;
     	//$deltaTime = $rangeTime / $colorSteps;
    -//	$Gradients = Gradient(strrev("66FF00") , strrev("FF0000") , $colorSteps); // KML is BGR not RGB so strrev
    -	$Gradients = Gradient("66FF00" , "FF0000" , $colorSteps); // KML is BGR not RGB so strrev
    +	$Gradients = Gradient(strrev("66FF00") , strrev("FF0000") , $colorSteps); // KML is BGR not RGB so strrev
     	foreach ($testRegions as $testRegion) {
     		//$band = (floor(($testRegion[time] - $minTime) / $deltaTime));
     		$band = (floor($testRegion[time] / 10));
     		if ($band > $colorSteps) $band = $colorSteps;
     		echo "
       " . $testRegion['regionname'] . " time {$testRegion['time']} band $band
    -   {$testRegion['plan']} 
    +