Move open transit data experiments to labs
[busui.git] / labs / tripPlannerTester.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
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,
                "finishlat" => - 35.2630,
                "finishlon" => 149.1045,
        ) , 
        "north gungahlin civic" => Array(
                "startlat" => - 35.2652,
                "startlon" => 149.1045,
                "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";
$fromPlace = (startsWith($from, "-") ? $from : geocode($from, false));
$startTime = "9:00 am";
$startDate = "21/03/2011";
$counter = 0;
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1";
echo "<pre>";
echo "lat,lon,time,latdeltasize, londeltasize, region key name\n";
 
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(
                                "Accept: application/json"
                        ));
                        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
                        $page = curl_exec($ch);
                        if (curl_errno($ch)) {
                                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);
                                }
                                echo "$i,$j," . min($times) . ",$latdeltasize, $londeltasize,$key\n";
                        }
                        flush();
                        ob_flush();
                        curl_close($ch);
                }
        }
}
echo "</pre>";
?>