';
}
include ('../include/common.inc.php');
-//Test code to grab transit times
-// make sure to sleep(10);
$boundingBoxes = Array(
"belconnen" => Array(
- "startlat" => - 35.1828,
- "startlon" => 149.0295,
+ "startlat" => - 35.1928,
+ "startlon" => 149.006,
"finishlat" => - 35.2630,
"finishlon" => 149.1045,
- ) ,
+ ) ,
"north gungahlin civic" => Array(
- "startlat" => - 35.2652,
+ "startlat" => - 35.1828,
"startlon" => 149.1045,
- "finishlat" => -35.2955,
- "finishlon" => 149.1559,
+ "finishlat" => - 35.2955,
+ "finishlon" => 149.1559,
) ,
"west duffy" => Array(
"startlat" => - 35.3252,
"startlon" => 149.0240,
"finishlat" => - 35.3997,
"finishlon" => 149.0676,
- ) ,
+ ) ,
"central south" => Array(
"startlat" => - 35.3042,
"startlon" => 149.0762,
"finishlat" => - 35.3370,
"finishlon" => 149.1806,
- ) ,
+ ) ,
"south" => Array(
"startlat" => - 35.3403,
"startlon" => 149.0714,
"finishlat" => - 35.4607,
"finishlon" => 149.1243,
- )
-
+ )
);
$latdeltasize = 0.025;
$londeltasize = 0.025;
-$from = "Barry Drive";
+$from = "Wattle Street";
$fromPlace = (startsWith($from, "-") ? $from : geocode($from, false));
$startTime = "9:00 am";
-$startDate = "21/03/2011";
+$startDate = "03/21/2011"; // american dates, OTP does not validate!
$counter = 0;
$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 ($csv) echo "";
if ($csv) echo "lat,lon,time,latdeltasize, londeltasize, region key name\n";
-
+$rc = new RollingCurl("processResult_cb");
+$rc->window_size = 2;
foreach ($boundingBoxes as $key => $boundingBox) {
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=840&wheelchair=false&toPlace=" . $i . "," . $j . "&fromPlace=$fromPlace&intermediatePlaces=";
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+ $url = $otpAPIurl . "ws/plan?date=" . urlencode($startDate) . "&time=" . urlencode($startTime) . "&mode=TRANSIT%2CWALK&optimize=QUICK&maxWalkDistance=440&wheelchair=false&toPlace=" . $i . "," . $j . "&fromPlace=$fromPlace";
+ $request = new RollingCurlRequest($url);
+ $request->headers = Array(
"Accept: application/json"
- ));
- curl_setopt($ch, CURLOPT_TIMEOUT, 5);
- $page = curl_exec($ch);
- if (curl_errno($ch)) {
- if ($csv) echo "Trip planner temporarily unavailable: " . curl_errno($ch) . " " . curl_error($ch);
- }
- else {
- $tripplan = json_decode($page);
- if (isset($tripplan->error)) var_dump($tripplan->error);
- $times = Array();
- if (is_array($tripplan->plan->itineraries->itinerary)) {
-
- foreach ($tripplan->plan->itineraries->itinerary as $itineraryNumber => $itinerary) {
- $times[] = floor($itinerary->duration / 60000);
- }
-
- }
- else {
- $times[] = floor($tripplan->plan->itineraries->itinerary->duration / 60000);
- }
- if ($csv) echo "$i,$j," . min($times) . ",$latdeltasize, $londeltasize,$key\n";
- }
- flush();
- ob_flush();
- curl_close($ch);
- $testRegions[] = Array ("lat" => $i, "lon" => $j, "time" => min($times), "latdeltasize" => $latdeltasize, "londeltasize" => $londeltasize, "regionname" => $key);
- $regionTimes[] = min($times);
- break;
- }
- break;
- }
-}
-
-// http://www.geekpedia.com/code163_Generate-Gradient-Within-Hex-Range-In-PHP.html
-function Gradient($HexFrom, $HexTo, $ColorSteps)
-{
- $FromRGB['r'] = hexdec(substr($HexFrom, 0, 2));
- $FromRGB['g'] = hexdec(substr($HexFrom, 2, 2));
- $FromRGB['b'] = hexdec(substr($HexFrom, 4, 2));
-
- $ToRGB['r'] = hexdec(substr($HexTo, 0, 2));
- $ToRGB['g'] = hexdec(substr($HexTo, 2, 2));
- $ToRGB['b'] = hexdec(substr($HexTo, 4, 2));
-
- $StepRGB['r'] = ($FromRGB['r'] - $ToRGB['r']) / ($ColorSteps - 1);
- $StepRGB['g'] = ($FromRGB['g'] - $ToRGB['g']) / ($ColorSteps - 1);
- $StepRGB['b'] = ($FromRGB['b'] - $ToRGB['b']) / ($ColorSteps - 1);
-
- $GradientColors = array();
-
- for($i = 0; $i <= $ColorSteps; $i++)
- {
- $RGB['r'] = floor($FromRGB['r'] - ($StepRGB['r'] * $i));
- $RGB['g'] = floor($FromRGB['g'] - ($StepRGB['g'] * $i));
- $RGB['b'] = floor($FromRGB['b'] - ($StepRGB['b'] * $i));
-
- $HexRGB['r'] = sprintf('%02x', ($RGB['r']));
- $HexRGB['g'] = sprintf('%02x', ($RGB['g']));
- $HexRGB['b'] = sprintf('%02x', ($RGB['b']));
-
- $GradientColors[] = implode(NULL, $HexRGB);
- }
- return $GradientColors;
-}
-
-if ($kml) {
-$minTime = min($regionTimes);
-$maxTime = max($regionTimes);
-$rangeTime = $maxTime - $minTime;
-$colorSteps = 32;
-$deltaTime = $rangeTime / $colorSteps;
-
-$Gradients = Gradient("FF5B5B", "FFCA5B", $colorSteps);
-
-foreach ($testRegions as $testRegion) {
- $band = (floor(($testRegion[time] - $minTime) / $deltaTime));
- echo "
- ".$testRegion['regionname']." time {$testRegion[time]} band $band
+ );
+ $request->metadata = Array( "i" => $i, "j" => $j, "key" => $key);
+ $rc->add($request);
+ }
+ }
+}
+$rc->execute();
+if ($kml) {
+ $colorSteps = 9;
+ //$minTime = min($regionTimes);
+ //$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
+ 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']}
- 1
- relativeToGround
+relativeToGround
- ". ($testRegion['lon'] - ($testRegion['londeltasize']/2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize']/2)).",0\n".
- ($testRegion['lon'] - ($testRegion['londeltasize']/2)) . "," . ($testRegion['lat'] + ($testRegion['latdeltasize']/2)).",0\n".
- ($testRegion['lon'] + ($testRegion['londeltasize']/2)) . "," . ($testRegion['lat'] + ($testRegion['latdeltasize']/2)).",0\n".
- ($testRegion['lon'] + ($testRegion['londeltasize']/2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize']/2)).",0\n".
- ($testRegion['lon'] - ($testRegion['londeltasize']/2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize']/2)).",0\n".
- "
+ " . ($testRegion['lon'] - ($testRegion['londeltasize'] / 2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize'] / 2)) . ",500\n" . ($testRegion['lon'] - ($testRegion['londeltasize'] / 2)) . "," . ($testRegion['lat'] + ($testRegion['latdeltasize'] / 2)) . ",500\n" . ($testRegion['lon'] + ($testRegion['londeltasize'] / 2)) . "," . ($testRegion['lat'] + ($testRegion['latdeltasize'] / 2)) . ",500\n" . ($testRegion['lon'] + ($testRegion['londeltasize'] / 2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize'] / 2)) . ",500\n" . ($testRegion['lon'] - ($testRegion['londeltasize'] / 2)) . "," . ($testRegion['lat'] - ($testRegion['latdeltasize'] / 2)) . ",500\n" . "
";
-}
-echo "\n