예제 #1
0
   break;
 case 'triprows':
   $trip_id = $_REQUEST['trip'];
   $result = GTFSReader::trip_rows($trip_id);
   echo json_encode($result);
   break;
 case 'tripshape':
   $trip_id = $_REQUEST['trip'];
   $trip = GTFSReader::get_trip($trip_id);
   $result = $trip->shape->points;
   echo json_encode($result);
   break;
 case 'stoptrips':
   $stop_id = $_REQUEST['stop'];
   $time = $_REQUEST['time'];
   $result = GTFSReader::get_trips_for_stop($stop_id, $time);
   echo json_encode($result);
   break;
 case 'stopsearch':
   $query = $_REQUEST['q'];
   break;
 case 'setstoplocation':
   $stop_id = $_REQUEST['id'];
   $lat = $_REQUEST['lat'];
   $lon = $_REQUEST['lng'];
   break;
 case 'savedata':
   break;
 default:
   break;
}
 public static function init($gtfs_feed_location)
 {
     if (!self::$routes) {
         self::$zip = new ZipArchive();
         if (self::$zip->open($gtfs_feed_location) !== TRUE) {
             error_log("failed to open zip archive");
             return;
         }
         // create all route objects
         self::$csv = new CsvWrapper('routes.txt', self::$zip);
         while ($fields = self::$csv->next()) {
             $route_id = $fields['route_id'];
             $route = new ShuttleRoute($fields);
             self::$routes[$route_id] = $route;
         }
         // create all trip and service objects; associate routes with trips
         self::$csv->reset_file('trips.txt');
         while ($fields = self::$csv->next()) {
             $trip_id = $fields['trip_id'];
             $trip = new ShuttleTrip($fields);
             self::$trips[$trip_id] = $trip;
             $route_id = $fields['route_id'];
             self::$routes[$route_id]->add_trip($trip);
             $service_id = $fields['service_id'];
             if (!array_key_exists($service_id, self::$services)) {
                 self::$services[$service_id] = new ShuttleService();
             }
             $service = self::$services[$service_id];
             $service->id = $service_id;
             $trip->service = $service;
             $shape_id = $fields['shape_id'];
             if (!array_key_exists($shape_id, self::$shapes)) {
                 self::$shapes[$shape_id] = new ShuttleShape();
             }
             $trip->shape = self::$shapes[$shape_id];
         }
         // create stop list for each trips
         self::$csv->reset_file('stop_times.txt');
         while ($fields = self::$csv->next()) {
             $trip_id = $fields['trip_id'];
             self::$trips[$trip_id]->add_stop_time($fields);
         }
         // setup service list
         self::$csv->reset_file('calendar.txt');
         while ($fields = self::$csv->next()) {
             $service_id = $fields['service_id'];
             $service = self::$services[$service_id];
             $service->add_range($fields);
         }
         self::$csv->reset_file('calendar_dates.txt');
         while ($fields = self::$csv->next()) {
             $service_id = $fields['service_id'];
             $service = self::$services[$service_id];
             $service->add_exception($fields);
         }
         // get interval and today's runs
         self::$csv->reset_file('frequencies.txt');
         while ($fields = self::$csv->next()) {
             $trip_id = $fields['trip_id'];
             self::$trips[$trip_id]->add_frequency($fields);
         }
         // get attributes of physical stops
         self::$csv->reset_file('stops.txt');
         while ($fields = self::$csv->next()) {
             self::$stops[$fields['stop_id']] = new ShuttleStop($fields);
         }
         // get shapes
         self::$csv->reset_file('shapes.txt');
         while ($fields = self::$csv->next()) {
             $shape_id = $fields['shape_id'];
             self::$shapes[$shape_id]->add_point($fields);
         }
     }
 }