Convert myway timeliness calculation to new GTFS feed format
--- a/include/common-transit.inc.php
+++ b/include/common-transit.inc.php
@@ -37,6 +37,17 @@
return 'saturday';
default:
return 'weekday';
+ }
+}
+function service_ids($service_period) {
+ switch ($service_period) {
+ case 'sunday':
+ return Array("2010-TUGGSUN-Sunday-20","2010-BELCSUN-Sunday-19");
+ case 'saturday':
+ return Array("2010-BELCSAT-Saturday-19","2010-TUGGSAT-Saturday-19");
+ default:
+ //return 'weekday';
+ return Array("2010-BELCMAST-Weekday-15","2010-TUGGMAST-Weekday-14");
}
}
--- a/include/common.inc.php
+++ b/include/common.inc.php
@@ -55,8 +55,9 @@
$basePath = "../";
function isDebugServer() {
+
return php_sapi_name() == "cli" || isset($_SERVER['SERVER_NAME']) && ( $_SERVER['SERVER_NAME'] == "azusa" || $_SERVER['SERVER_NAME'] == "vanille"
- || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1");
+ || $_SERVER['SERVER_NAME'] == "localhost" || $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "192.168.1.8");
}
include_once ("common-geo.inc.php");
@@ -71,7 +72,7 @@
function isAnalyticsOn() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
- return!isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) &&
+ return !isDebugServer() && !preg_match('/cloudkick/i', $user_agent) && !preg_match('/googlebot/i', $user_agent) &&
!preg_match('/baidu/i', $user_agent);
}
@@ -133,10 +134,6 @@
return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
}
return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)), $needle) === 0);
-}
-
-function bracketsMeanNewLine($input) {
- return str_replace(")", "</small>", str_replace("(", "<br><small>", $input));
}
function sksort(&$array, $subkey = "id", $sort_ascending = false) {
@@ -202,5 +199,6 @@
return implode($glue, $retVal);
}
+
?>
--- a/include/db/route-dao.inc.php
+++ b/include/db/route-dao.inc.php
@@ -29,7 +29,19 @@
}
return $query->fetch(PDO :: FETCH_ASSOC);
}
-
+function getRoutesByShortName($routeShortName) {
+ global $conn;
+ $query = "Select * from routes where route_short_name = :routeShortName";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":routeShortName", $routeShortName);
+ $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";
@@ -140,10 +152,10 @@
return $r;
}
-function getTimeInterpolatedRouteAtStop($routeID, $stop_id) {
+function getRouteAtStop($routeID, $stop_id) {
$nextTrip = getRouteNextTrip($routeID);
if ($nextTrip['trip_id']) {
- foreach (getTimeInterpolatedTrip($nextTrip['trip_id']) as $tripStop) {
+ foreach (getTripStopTimes($nextTrip['trip_id']) as $tripStop) {
if ($tripStop['stop_id'] == $stop_id)
return $tripStop;
}
@@ -220,6 +232,9 @@
function getRoutesNearby($lat, $lng, $limit = "", $distance = 500) {
if ($service_period == "")
$service_period = service_period();
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
if ($limit != "")
$limitSQL = " LIMIT :limit ";
global $conn;
@@ -229,13 +244,14 @@
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 service_id=:service_period
+WHERE (service_id=:service_periodA OR service_id=:service_periodB)
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 $limitSQL";
debug($query, "database");
$query = $conn->prepare($query);
- $query->bindParam(":service_period", $service_period);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
$query->bindParam(":distance", $distance);
if ($limit != "")
$query->bindParam(":limit", $limit);
--- a/include/db/stop-dao.inc.php
+++ b/include/db/stop-dao.inc.php
@@ -30,11 +30,9 @@
return $query->fetch(PDO :: FETCH_ASSOC);
}
-function getStops($timingPointsOnly = false, $firstLetter = "", $startsWith = "") {
+function getStops($firstLetter = "", $startsWith = "") {
global $conn;
$conditions = Array();
- if ($timingPointsOnly)
- $conditions[] = "substr(stop_code,1,2) != 'Wj'";
if ($firstLetter != "")
$conditions[] = "substr(stop_name,1,1) = :firstLetter";
if ($startsWith != "")
@@ -48,6 +46,7 @@
}
}
$query .= " order by stop_name;";
+ debug($query,"database");
$query = $conn->prepare($query);
if ($firstLetter != "")
$query->bindParam(":firstLetter", $firstLetter);
@@ -140,15 +139,21 @@
}
function getStopRoutes($stopID, $service_period) {
- if ($service_period == "")
+ if ($service_period == "") {
$service_period = service_period();
+ }
+ $service_ids = service_ids($service_period);
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
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 WHERE stop_id = :stopID AND service_id=:service_period";
- debug($query, "database");
- $query = $conn->prepare($query);
- $query->bindParam(":service_period", $service_period);
+stop_times.trip_id join routes on trips.route_id = routes.route_id WHERE stop_id = :stopID
+AND (service_id=:service_periodA OR service_id=:service_periodB)";
+ debug($query, "database");
+ $query = $conn->prepare($query);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
$query->bindParam(":stopID", $stopID);
$query->execute();
if (!$query) {
@@ -159,8 +164,13 @@
}
function getStopTrips($stopID, $service_period = "", $afterTime = "", $limit = "") {
- if ($service_period == "")
+ if ($service_period == "") {
$service_period = service_period();
+ }
+ $service_ids = service_ids($service_period);
+
+ $sidA = $service_ids[0];
+ $sidB = $service_ids[1];
if ($limit != "")
$limitSQL = " LIMIT :limit ";
global $conn;
@@ -173,7 +183,7 @@
WHERE stop_times.arrival_time IS NOT NULL group by trip_id) as end_times
WHERE stop_times.stop_id = :stopID
AND stop_times.trip_id = end_times.trip_id
-AND service_id=:service_period
+AND (service_id=:service_periodA OR service_id=:service_periodB)
AND end_times.arrival_time > :afterTime
ORDER BY end_time $limitSQL";
} else {
@@ -183,12 +193,13 @@
stop_times.trip_id
join routes on trips.route_id = routes.route_id
WHERE stop_times.stop_id = :stopID
-AND service_id=:service_period
+AND (service_id=:service_periodA OR service_id=:service_periodB)
ORDER BY arrival_time $limitSQL";
}
debug($query, "database");
$query = $conn->prepare($query);
- $query->bindParam(":service_period", $service_period);
+ $query->bindParam(":service_periodA", $sidA);
+ $query->bindParam(":service_periodB", $sidB);
$query->bindParam(":stopID", $stopID);
if ($limit != "")
$query->bindParam(":limit", $limit);
@@ -220,7 +231,7 @@
$timedTrips[] = $trip;
}
} else {
- $timedTrip = getTimeInterpolatedTripAtStop($trip['trip_id'], $trip['stop_sequence']);
+ $timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']);
if ($timedTrip['arrival_time'] > $time and strtotime($timedTrip['arrival_time']) < (strtotime($time) + $time_range)) {
$timedTrips[] = $timedTrip;
}
--- a/include/db/trip-dao.inc.php
+++ b/include/db/trip-dao.inc.php
@@ -34,6 +34,7 @@
}
function getTripShape($tripID) {
+ // todo, use shapes table if shape_id specified
global $conn;
$query = "SELECT ST_AsKML(ST_MakeLine(geometry(a.position))) as the_route
FROM (SELECT position,
@@ -53,7 +54,7 @@
return $query->fetchColumn(0);
}
-function getTimeInterpolatedTrip($tripID, $range = "") {
+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,
stop_sequence,service_id,trips.route_id,route_short_name,route_long_name
@@ -71,104 +72,137 @@
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) {
+ return $stopTimes;
+}
+
+function getTripAtStop($tripID, $stop_sequence) {
+ global $conn;
+ foreach (getTripStopTimes($tripID) as $tripStop) {
if ($tripStop['stop_sequence'] == $stop_sequence)
return $tripStop;
}
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;
@@ -222,12 +256,12 @@
return $query->fetchAll();
}
-function viaPoints($tripID, $stop_sequence = "", $timing_points_only = true) {
+function viaPoints($tripID, $stop_sequence = "") {
global $conn;
$query = "SELECT stops.stop_id, stop_name, arrival_time
FROM stop_times join stops on stops.stop_id = stop_times.stop_id
WHERE stop_times.trip_id = :tripID
-" . ($stop_sequence != "" ? " AND stop_sequence > :stop_sequence " : "") . ($timing_points_only ? "AND substr(stop_code,1,2) != 'Wj' " : "") . " ORDER BY stop_sequence";
+" . ($stop_sequence != "" ? " AND stop_sequence > :stop_sequence " : "") . " ORDER BY stop_sequence";
debug($query, "database");
$query = $conn->prepare($query);
if ($stop_sequence != "")
--- a/index.php
+++ b/index.php
@@ -26,8 +26,7 @@
<a href="tripPlanner.php" data-role="button" data-icon="navigation">Launch Trip Planner...</a>
<ul data-role="listview" data-inset="true" data-theme="c" data-dividertheme="b">
<li data-role="list-divider">Timetables - Stops</li>
- <li><a href="stopList.php">Major (Timing Point) Stops</a></li>
- <li><a href="stopList.php?allstops=yes">All Stops</a></li>
+ <li><a href="stopList.php">Stops By Name</a></li>
<li><a href="stopList.php?bysuburbs=yes">Stops By Suburb</a></li>
<li><a class="nearby" href="stopList.php?nearby=yes">Nearby Stops</a></li>
</ul>
--- a/myway/myway_timeliness_calculate.php
+++ b/myway/myway_timeliness_calculate.php
@@ -29,8 +29,7 @@
//collect all observation not in delta
$query = "select * from myway_observations INNER JOIN myway_stops
-ON myway_observations.myway_stop=myway_stops.myway_stop INNER JOIN myway_routes
-ON myway_observations.myway_route=myway_routes.myway_route
+ON myway_observations.myway_stop=myway_stops.myway_stop
WHERE observation_id NOT IN
(
SELECT observation_id
@@ -51,12 +50,8 @@
//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_code"] == "") {
+ if ($obsv["stop_id"] == "") {
echo "error, stop '{$obsv['myway_stop']}' unknown";
- continue;
- }
- if ($obsv["route_full_name"] == "") {
- echo "error, route '{$obsv['myway_route']}' unknown";
continue;
}
// convert timestamp into time of day and date
@@ -66,80 +61,86 @@
$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));
- $potentialStops = getStopsByStopCode($obsv["stop_code"], $obsv["stop_street"]);
+ $potentialStops = Array(getStop($obsv["stop_id"]));
//:get myway_stops records
//:search by starts with stopcode and starts with street if street is not null
//no result, skip and display error
if (sizeof($potentialStops) < 1) {
- echo "error, potential stops for stopcode {$obsv["stop_code"]} street {$obsv["stop_street"]} unknown";
+ echo "error, potential stops for stopid {$obsv["stop_id"]} unknown";
continue;
}
//print out stops
echo "Matched stops: ";
- foreach ($potentialStops as $potentialStop)
- echo $potentialStop['stop_code'] . " ";
+ foreach ($potentialStops as $potentialStop) {
+ echo $potentialStop['stop_id'] . " " . $potentialStop['stop_name'] . " ";
+ }
echo "<br>";
//:get myway_route record
//no result, skip and display error
//print out route
- $potentialRoute = getRouteByFullName($obsv["route_full_name"]);
- if ($potentialRoute["route_short_name"] == "") {
- echo "error, route '{$obsv["route_full_name"]}' unknown";
+ $potentialRoutes = getRoutesByShortName(preg_replace("/[A-Z]/", "", $obsv["myway_route"]));
+ if (sizeof($potentialRoutes) < 1) {
+ echo "error, route '{$obsv["myway_route"]}' unknown";
continue;
}
- echo "Matched route: {$potentialRoute['route_short_name']}{$potentialRoute['route_long_name']} {$timing_period}<br>";
$timeDeltas = Array();
- foreach ($potentialStops as $potentialStop) {
- $stopRoutes = getStopRoutes($potentialStop['stop_id'], $timing_period);
- $foundRoute = Array();
- foreach ($stopRoutes as $stopRoute) {
- //Check if this route stops at each stop
- if ($stopRoute['route_short_name'] . $stopRoute['route_long_name'] == $obsv["route_full_name"]) {
- echo "Matching route {$stopRoute['route_id']} found at {$potentialStop['stop_code']}<br>";
- $foundRoute = $stopRoute;
- //if does get tripstoptimes for this route
- $trips = getStopTrips($potentialStop['stop_id'], $timing_period, $search_time);
- foreach ($trips as $trip) {
- //echo $trip['route_id']." ".$stopRoute['route_id'].";";
- if ($trip['route_id'] == $stopRoute['route_id']) {
- $timedTrip = getTimeInterpolatedTripAtStop($trip['trip_id'], $trip['stop_sequence']);
- $actual_time = strtotime($time);
- $trip_time = strtotime($timedTrip['arrival_time']);
- $timeDiff = $actual_time - $trip_time;
- //work out time delta, put into array with index of delta
- $timeDeltas[] = Array(
- "timeDiff" => $timeDiff,
- "stop_code" => $potentialStop['stop_code'],
- "stop_sequence" => $timedTrip['stop_sequence']
- );
- echo "Found trip {$trip['trip_id']} at stop {$potentialStop['stop_code']} (#{$potentialStop['stop_id']}, sequence #{$trip['stop_sequence']})<br>";
- echo "Arriving at {$timedTrip['arrival_time']}, difference of " . round($timeDiff / 60, 2) . " minutes<br>";
+ foreach ($potentialRoutes as $potentialRoute) {
+ echo "Matched route: {$potentialRoute['route_id']} {$potentialRoute['route_short_name']}{$potentialRoute['route_long_name']} {$timing_period}<br>";
+ foreach ($potentialStops as $potentialStop) {
+ $stopRoutes = getStopRoutes($potentialStop['stop_id'], $timing_period);
+ $foundRoute = Array();
+ foreach ($stopRoutes as $stopRoute) {
+ //Check if this route stops at each stop
+ if ($stopRoute['route_id'] == $potentialRoute['route_id']) {
+ echo "Matching route {$stopRoute['route_id']} found at stop #{$potentialStop['stop_id']}<br>";
+ $foundRoute = $stopRoute;
+ //if does get tripstoptimes for this route
+ $trips = getStopTrips($potentialStop['stop_id'], $timing_period, $search_time);
+ foreach ($trips as $trip) {
+ //echo $trip['route_id']." ".$stopRoute['route_id'].";";
+ if ($trip['route_id'] == $stopRoute['route_id']) {
+ $timedTrip = getTripAtStop($trip['trip_id'], $trip['stop_sequence']);
+ $actual_time = strtotime($time);
+ $trip_time = strtotime($timedTrip['arrival_time']);
+ $timeDiff = $actual_time - $trip_time;
+ //work out time delta, put into array with index of delta
+ $timeDeltas[] = Array(
+ "timeDiff" => $timeDiff,
+ "stop_id" => $potentialStop['stop_id'],
+ "stop_sequence" => $trip['stop_sequence'],
+ "route_id" => $trip['route_id']
+ );
+ echo "Found trip {$trip['trip_id']} at stop {$potentialStop['stop_id']} (#{$potentialStop['stop_name']}, sequence #{$trip['stop_sequence']})<br>";
+ echo "Arriving at {$timedTrip['arrival_time']}, difference of " . round($timeDiff / 60, 2) . " minutes<br>";
+ }
}
+ break; // because have found route
}
- break; // because have found route
+ }
+ if (sizeof($foundRoute) < 1) {
+ //print out that stops/does not stop
+ echo "No matching routes found at {$potentialStop['stop_id']}<br>";
+ //var_dump($stopRoutes);
+ flush();
}
}
- if (sizeof($foundRoute) < 1) {
- //print out that stops/does not stop
- echo "No matching routes found at {$potentialStop['stop_code']}<br>";
- var_dump($stopRoutes);
- flush();
- }
}
+
// lowest delta is recorded delta
usort($timeDeltas, "abssort");
$lowestDelta = $timeDeltas[0]["timeDiff"];
if (sizeof($timeDeltas) != 0) {
echo "Lowest difference of " . round($lowestDelta / 60, 2) . " minutes will be recorded for this observation<br>";
+
$observation_id = $obsv['observation_id'];
- $route_full_name = $obsv['route_full_name'];
- $stop_code = $timeDeltas[0]["stop_code"];
+ $route_id = $timeDeltas[0]["route_id"];
+ $stop_id = $timeDeltas[0]["stop_id"];
$stop_sequence = $timeDeltas[0]["stop_sequence"];
- $stmt = $conn->prepare("insert into myway_timingdeltas (observation_id, route_full_name, stop_code, timing_delta, time, date, timing_period, stop_sequence)
- values (:observation_id, :route_full_name, :stop_code, :timing_delta, :time, :date, :timing_period, :stop_sequence)");
+ $stmt = $conn->prepare("insert into myway_timingdeltas (observation_id, route_id, stop_id, timing_delta, time, date, timing_period, stop_sequence)
+ values (:observation_id, :route_id, :stop_id, :timing_delta, :time, :date, :timing_period, :stop_sequence)");
$stmt->bindParam(':observation_id', $observation_id);
- $stmt->bindParam(':route_full_name', $route_full_name);
- $stmt->bindParam(':stop_code', $stop_code);
+ $stmt->bindParam(':route_id', $route_id);
+ $stmt->bindParam(':stop_id', $stop_id);
$stmt->bindParam(':timing_delta', $lowestDelta);
$stmt->bindParam(':time', $time_tz);
$stmt->bindParam(':date', $date);
--- a/myway/myway_timeliness_reconcile.php
+++ b/myway/myway_timeliness_reconcile.php
@@ -19,25 +19,23 @@
foreach ($_REQUEST as $key => $value) {
if (strstr($key, "route") && !strstr($value, "Select")) {
$myway_route = str_replace("route", "", $key);
- $route_full_name = $value;
- $query = "update myway_routes set route_full_name = :route_full_name where myway_route = :myway_route";
+ $route_id = $value;
+ $query = "update myway_routes set route_id = :route_id where myway_route = :myway_route";
debug($query, "database");
$query = $conn->prepare($query);
$query->bindParam(":myway_route", $myway_route, PDO::PARAM_STR, 5);
- $query->bindParam(":route_full_name", $route_full_name, PDO::PARAM_STR, 42);
+ $query->bindParam(":route_id", $route_id, PDO::PARAM_STR, 42);
$query->execute();
die(print_r($conn->errorInfo(), true));
}
if (strstr($key, "myway_stop")) {
$myway_stop = $value;
- $stop_code = $_REQUEST['stop_code'];
- $stop_street = $_REQUEST['stop_street'];
- $query = "update myway_stops set stop_code = :stop_code, stop_street = :stop_street where myway_stop = :myway_stop";
+ $stop_id = $_REQUEST['stop_id'];
+ $query = "update myway_stops set stop_id = :stop_id where myway_stop = :myway_stop";
debug($query, "database");
$query = $conn->prepare($query);
$query->bindParam(":myway_stop", $myway_stop, PDO::PARAM_STR, 25);
- $query->bindParam(":stop_code", $stop_code, PDO::PARAM_STR, 32);
- $query->bindParam(":stop_street", $stop_street);
+ $query->bindParam(":stop_id", $stop_id, PDO::PARAM_STR, 32);
$query->execute();
die(print_r($conn->errorInfo(), true));
}
@@ -68,7 +66,7 @@
echo "<h2>Stops</h2>";
/* stops
search start of name, display map and table nuimbered, two text boxes */
-$query = "Select * from myway_stops where stop_code is NULL and stop_street is NUll;";
+$query = "Select * from myway_stops where stop_id is NUll;";
debug($query, "database");
$query = $conn->prepare($query);
$query->execute();
@@ -78,10 +76,9 @@
}
foreach ($query->fetchAll() as $myway_stop) {
echo "<h3>{$myway_stop[0]}</h3>";
- $stopNameParts = explode(" ", $myway_stop[0]);
$markers = array();
$stopKey = 0;
- $foundStops = getStops(false, "", $stopNameParts[0] . " " . $stopNameParts[1]);
+ $foundStops = getStops("",$myway_stop[0]);
if (sizeof($foundStops) > 0) {
echo "<table>";
foreach ($foundStops as $stopResult) {
@@ -89,7 +86,7 @@
$stopResult['stop_lat'],
$stopResult['stop_lon']
);
- echo "<tr><td>" . $stopKey++ . "</td><td>" . $stopResult['