Account for bus stations in myway timeliness calculate
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -31,7 +31,7 @@
}
function getRoutesByShortName($routeShortName) {
global $conn;
- $query = "Select * from routes where route_short_name = :routeShortName";
+ $query = "Select distinct route_id, route_short_name from routes where route_short_name = :routeShortName";
debug($query, "database");
$query = $conn->prepare($query);
$query->bindParam(":routeShortName", $routeShortName);
@@ -42,6 +42,22 @@
}
return $query->fetchAll();
}
+
+function getRouteHeadsigns($routeID) {
+ global $conn;
+ $query = "select distinct trip_headsign,direction_id from routes join trips on trips.route_id = routes.route_id
+join stop_times on stop_times.trip_id = trips.trip_id ";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeID", $routeID);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+return $query->fetchAll();
+}
+
function getRouteByFullName($routeFullName) {
global $conn;
$query = "Select * from routes where route_short_name||route_long_name = :routeFullName LIMIT 1";
--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -56,7 +56,7 @@
function getTripStopTimes($tripID) {
global $conn;
- $query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,stop_code,
+ $query = "SELECT stop_times.trip_id,trip_headsign,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,stop_code,
stop_sequence,service_id,trips.route_id,route_short_name,route_long_name
FROM stop_times
join trips on trips.trip_id = stop_times.trip_id
@@ -83,127 +83,6 @@
}
return Array();
}
-
-/* DEPRECIATED
- function getTimeInterpolatedTrip($tripID, $range = "") {
- global $conn;
- $query = "SELECT stop_times.trip_id,arrival_time,stop_times.stop_id,stop_lat,stop_lon,stop_name,stop_code,
- stop_sequence,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 trips.trip_id = :tripID $range ORDER BY stop_sequence";
- debug($query, "database");
- $query = $conn->prepare($query);
- $query->bindParam(":tripID", $tripID);
- $query->execute();
- if (!$query) {
- databaseError($conn->errorInfo());
- return Array();
- }
- $stopTimes = $query->fetchAll();
- $cur_timepoint = Array();
- $next_timepoint = Array();
- $distance_between_timepoints = 0.0;
- $distance_traveled_between_timepoints = 0.0;
- $rv = Array();
- foreach ($stopTimes as $i => $stopTime) {
- if ($stopTime['arrival_time'] != "") {
- // is timepoint
- $cur_timepoint = $stopTime;
- $distance_between_timepoints = 0.0;
- $distance_traveled_between_timepoints = 0.0;
- if ($i + 1 < sizeof($stopTimes)) {
- $k = $i + 1;
- $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]);
- while ($stopTimes[$k]["arrival_time"] == "" && $k + 1 < sizeof($stopTimes)) {
- $k += 1;
- // echo "k".$k;
- $distance_between_timepoints += distance($stopTimes[$k - 1]["stop_lat"], $stopTimes[$k - 1]["stop_lon"], $stopTimes[$k]["stop_lat"], $stopTimes[$k]["stop_lon"]);
- }
- $next_timepoint = $stopTimes[$k];
- }
- $rv[] = $stopTime;
- } else {
- // is untimed point
- // echo "i".$i;
- $distance_traveled_between_timepoints += distance($stopTimes[$i - 1]["stop_lat"], $stopTimes[$i - 1]["stop_lon"], $stopTimes[$i]["stop_lat"], $stopTimes[$i]["stop_lon"]);
- // echo "$distance_traveled_between_timepoints / $distance_between_timepoints<br>";
- $distance_percent = $distance_traveled_between_timepoints / $distance_between_timepoints;
- if ($next_timepoint["arrival_time"] != "") {
- $total_time = strtotime($next_timepoint["arrival_time"]) - strtotime($cur_timepoint["arrival_time"]);
- // echo strtotime($next_timepoint["arrival_time"])." - ".strtotime($cur_timepoint["arrival_time"])."<br>";
- $time_estimate = ($distance_percent * $total_time) + strtotime($cur_timepoint["arrival_time"]);
- $stopTime["arrival_time"] = date("H:i:s", $time_estimate);
- } else {
- $stopTime["arrival_time"] = $cur_timepoint["arrival_time"];
- }
- $rv[] = $stopTime;
- }
- }
- // var_dump($rv);
- return $rv;
- }
-
- function getTripPreviousTimePoint($tripID, $stop_sequence) {
- global $conn;
- $query = " SELECT trip_id,stop_id,
- stop_sequence
- FROM stop_times
- WHERE trip_id = :tripID and stop_sequence < :stop_sequence
- and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence DESC LIMIT 1";
- debug($query, "database");
- $query = $conn->prepare($query);
- $query->bindParam(":tripID", $tripID);
- $query->bindParam(":stop_sequence", $stop_sequence);
- $query->execute();
- if (!$query) {
- databaseError($conn->errorInfo());
- return Array();
- }
- return $query->fetch(PDO :: FETCH_ASSOC);
- }
-
- function getTripNextTimePoint($tripID, $stop_sequence) {
- global $conn;
- $query = " SELECT trip_id,stop_id,
- stop_sequence
- FROM stop_times
- WHERE trip_id = :tripID and stop_sequence > :stop_sequence
- and stop_times.arrival_time IS NOT NULL ORDER BY stop_sequence LIMIT 1";
- debug($query, "database");
- $query = $conn->prepare($query);
- $query->bindParam(":tripID", $tripID);
- $query->bindParam(":stop_sequence", $stop_sequence);
- $query->execute();
- if (!$query) {
- databaseError($conn->errorInfo());
- return Array();
- }
- return $query->fetch(PDO :: FETCH_ASSOC);
- }
-
-
-
- function getTimeInterpolatedTripAtStop($tripID, $stop_sequence) {
- global $conn;
- // limit interpolation to between nearest actual points.
- $prevTimePoint = getTripPreviousTimePoint($tripID, $stop_sequence);
- $nextTimePoint = getTripNextTimePoint($tripID, $stop_sequence);
- // echo " prev {$lowestDelta['stop_sequence']} next {$nextTimePoint['stop_sequence']} ";
- $range = "";
- if ($prevTimePoint != "")
- $range .= " AND stop_sequence >= '{$prevTimePoint['stop_sequence']}'";
- if ($nextTimePoint != "")
- $range .= " AND stop_sequence <= '{$nextTimePoint['stop_sequence']}'";
- foreach (getTimeInterpolatedTrip($tripID, $range) as $tripStop) {
- if ($tripStop['stop_sequence'] == $stop_sequence)
- return $tripStop;
- }
- return Array();
- } */
-
function getTripStartTime($tripID) {
global $conn;
$query = "Select * from stop_times
--- a/myway/myway_timeliness_calculate.php
+++ b/myway/myway_timeliness_calculate.php
@@ -50,10 +50,6 @@
//var_dump($obsv);
echo "<h3>Observation {$obsv['observation_id']}:</h1>
<small>{$obsv['myway_stop']} @ {$obsv['time']} on {$obsv['myway_route']}</small><br>";
- if ($obsv["stop_id"] == "") {
- echo "error, stop '{$obsv['myway_stop']}' unknown";
- continue;
- }
// convert timestamp into time of day and date
// timezones from http://www.postgresql.org/docs/8.0/static/datetime-keywords.html
$time = date("H:i:s", strtotime($obsv['time']));
@@ -61,7 +57,12 @@
$search_time = date("H:i:s", strtotime($obsv['time']) - (30 * 60)); // 30 minutes margin
$date = date("c", strtotime($obsv['time']));
$timing_period = service_period(strtotime($date));
+ if (isset($obsv["stop_id"]) && $obsv["stop_id"] != "" ) {
$potentialStops = Array(getStop($obsv["stop_id"]));
+ } else {
+ echo "Potential stops are a bus station<br>";
+ $potentialStops = getStops("", trim(str_replace(Array("Arrival","Arrivals","Arrive Platform 3 Set down only.","Arrive","Set Down Only"), "", $obsv["myway_stop"])));
+ }
//:get myway_stops records
//:search by starts with stopcode and starts with street if street is not null
//no result, skip and display error
@@ -108,7 +109,7 @@
"timeDiff" => $timeDiff,
"stop_id" => $potentialStop['stop_id'],
"stop_sequence" => $trip['stop_sequence'],
- "route_name" => "{$potentialRoute['route_short_name']} {$potentialRoute['route_long_name']}",
+ "route_name" => "{$potentialRoute['route_short_name']} {$potentialRoute['route_long_name']} {$trip['direction']}",
"route_id" => $trip['route_id']
);
echo "Found trip {$trip['trip_id']} at stop {$potentialStop['stop_id']} (#{$potentialStop['stop_name']}, sequence #{$trip['stop_sequence']})<br>";
--- a/myway/myway_timeliness_reconcile.php
+++ b/myway/myway_timeliness_reconcile.php
@@ -17,7 +17,7 @@
include ('../include/common.inc.php');
auth();
foreach ($_REQUEST as $key => $value) {
- if (strstr($key, "route") && !strstr($value, "Select")) {
+ if (strstr($key, "route") && !strstr($value, "Select")) {
$myway_route = str_replace("route", "", $key);
$route_id = $value;
$query = "update myway_routes set route_id = :route_id where myway_route = :myway_route";
@@ -100,6 +100,46 @@
';
echo '<hr>';
}
+echo '<h2>Routes</h2>';
+/* routes
+ remove alpha char, search present dropdown */
+$query = "Select * from myway_routes where route_short_name is NUll;";
+debug($query, "database");
+$query = $conn->prepare($query);
+$query->execute();
+if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+}
+foreach ($query->fetchAll() as $myway_route) {
+ echo "<h3>{$myway_route[0]}</h3>";
+ $query = "Select * from myway_observations where myway_route = :route order by time";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":route", $myway_route[0]);
+ $query->execute();
+ if (!$query) {
+ databaseError($conn->errorInfo());
+ return Array();
+ }
+ foreach ($query->fetchAll() as $myway_obvs) {
+ echo $myway_obvs['myway_stop'] . $myway_obvs['time'] . "<br>";
+ }
+ $searchRouteNo = preg_replace("/[A-Z]/", "", $myway_route[0]);
+ echo $searchRouteNo;
+ echo '<form id="inputform' . $myway_route[0] . '">
+<select name="route' . $myway_route[0] . '" onchange=\'$.post("myway_timeliness_reconcile.php", $("#inputform' . $myway_route[0] . '").serialize())\'>
+<option>Select a from/to pair...</option>';
+ foreach (getRoutesByShortName($searchRouteNo) as $routeResult) {
+ foreach(getRouteHeadsigns($routeResult['route_id']) as $headsign ) {
+ echo "<option value=\"{$routeResult['route_short_name']}{$routeResult['route_long_name']}\">
+ {$routeResult['route_short_name']}{$routeResult['route_long_name']} {$headsign['trip_headsign']}</option>\n";
+ }
+
+ }
+ echo "</select></form>";
+ echo '<hr>';
+}
include_footer();
?>