--- /dev/null
+++ b/include/db/stop-dao.inc.php
@@ -1,1 +1,141 @@
-
+<?php
+/* def StopZoneToTuple(stop):
+ """Return tuple as expected by javascript function addStopMarkerFromList"""
+ return (stop.stop_id, stop.stop_name, float(stop.stop_lat),
+ float(stop.stop_lon), stop.location_type, stop.stop_code, stop.zone_id)
+*/
+function getStop($stopID)
+{
+global $conn;
+ $query = "Select * from stops where stop_id = '$stopID' LIMIT 1";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getStops($timingPointsOnly = false, $firstLetter = "")
+{
+ global $conn;
+ $conditions = Array();
+ if ($timingPointsOnly) $conditions[] = "substr(stop_code,1,2) != 'Wj'";
+ if ($firstLetter != "") $conditions[] = "substr(stop_name,1,1) = '$firstLetter'";
+ $query = "Select * from stops";
+ if (sizeof($conditions) > 0) {
+ if (sizeof($conditions) > 1) {
+ $query .= " Where ".implode(" AND ",$conditions)." ";
+ }
+ else {
+ $query .= " Where ".$conditions[0]." ";
+ }
+ }
+ $query .= "order by stop_name;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getNearbyStops($lat, $lng, $limit, $distance = 1000)
+{
+ if ($lat == null || $lng == null) return Array();
+ global $conn;
+ $query = "Select *, ST_Distance(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), FALSE) as distance
+ from stops WHERE ST_DWithin(position, ST_GeographyFromText('SRID=4326;POINT($lng $lat)'), $distance, FALSE)
+ order by distance;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function getStopsBySuburb($suburb)
+{
+global $conn;
+ $query = "Select * from stops where zone_id LIKE '%$suburb;%' order by stop_name;";
+ debug($query,"database");
+ $result = pg_query($conn, $query);
+ if (!$result) {
+ databaseError(pg_result_error($result));
+ return Array();
+ }
+ return pg_fetch_all($result);
+}
+function stopRoutes($stopID, $service_period)
+{
+ /*
+ def handle_json_GET_stoproutes(self, params):
+ """Given a stop_id return all routes to visit the stop."""
+ schedule = self.server.schedule
+ stop = schedule.GetStop(params.get('stop', None))
+ service_period = params.get('service_period', None)
+ trips = stop.GetTrips(schedule)
+ result = {}
+ for trip in trips:
+ route = schedule.GetRoute(trip.route_id)
+ if service_period == None or trip.service_id == service_period:
+ if not route.route_short_name+route.route_long_name+trip.service_id in result:
+ result[route.route_short_name+route.route_long_name+trip.service_id] = (route.route_id, route.route_short_name, route.route_long_name, trip.trip_id, trip.service_id)
+ return result
+ */
+}
+function stopTrips($stopID)
+{
+ /*
+ def handle_json_GET_stopalltrips(self, params):
+ """Given a stop_id return all trips to visit the stop (without times)."""
+ schedule = self.server.schedule
+ stop = schedule.GetStop(params.get('stop', None))
+ service_period = params.get('service_period', None)
+ trips = stop.GetTrips(schedule)
+ result = []
+ for trip in trips:
+ if service_period == None or trip.service_id == service_period:
+ result.append((trip.trip_id, trip.service_id))
+ return result
+ */
+}
+function stopTripsWithTimes($stopID, $time, $service_period)
+{
+ /*
+ def handle_json_GET_stoptrips(self, params):
+ """Given a stop_id and time in seconds since midnight return the next
+ trips to visit the stop."""
+ schedule = self.server.schedule
+ stop = schedule.GetStop(params.get('stop', None))
+ requested_time = int(params.get('time', 0))
+ limit = int(params.get('limit', 15))
+ service_period = params.get('service_period', None)
+ time_range = int(params.get('time_range', 24*60*60))
+
+ filtered_time_trips = []
+ for trip, index in stop._GetTripIndex(schedule):
+ tripstarttime = trip.GetStartTime()
+ if tripstarttime > requested_time and tripstarttime < (requested_time + time_range):
+ time, stoptime, tp = trip.GetTimeInterpolatedStops()[index]
+ if time > requested_time and time < (requested_time + time_range):
+ bisect.insort(filtered_time_trips, (time, (trip, index), tp))
+ result = []
+ for time, (trip, index), tp in filtered_time_trips:
+ if len(result) > limit:
+ break
+ route = schedule.GetRoute(trip.route_id)
+ trip_name = ''
+ if route.route_short_name:
+ trip_name += route.route_short_name
+ if route.route_long_name:
+ if len(trip_name):
+ trip_name += " - "
+ trip_name += route.route_long_name
+ if service_period == None or trip.service_id == service_period:
+ result.append((time, (trip.trip_id, trip_name, trip.service_id), tp))
+ return result
+ */
+}
+?>
--- /dev/null
+++ b/lib/postgis.sql
@@ -1,1 +1,7788 @@
-
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- $Id: postgis.sql.in.c 5385 2010-03-09 00:22:41Z pramsey $
+--
+-- PostGIS - Spatial Types for PostgreSQL
+-- http://postgis.refractions.net
+-- Copyright 2001-2003 Refractions Research Inc.
+--
+-- This is free software; you can redistribute and/or modify it under
+-- the terms of the GNU General Public Licence. See the COPYING file.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- INSTALL VERSION: 1.5.1
+
+SET client_min_messages TO warning;
+
+BEGIN;
+
+-------------------------------------------------------------------
+-- SPHEROID TYPE
+-------------------------------------------------------------------
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_spheroid_in(cstring)
+ RETURNS spheroid
+ AS '$libdir/postgis-1.5','ellipsoid_in'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_spheroid_out(spheroid)
+ RETURNS cstring
+ AS '$libdir/postgis-1.5','ellipsoid_out'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION spheroid_in(cstring)
+ RETURNS spheroid
+ AS '$libdir/postgis-1.5','ellipsoid_in'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION spheroid_out(spheroid)
+ RETURNS cstring
+ AS '$libdir/postgis-1.5','ellipsoid_out'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE TYPE spheroid (
+ alignment = double,
+ internallength = 65,
+ input = spheroid_in,
+ output = spheroid_out
+);
+
+-------------------------------------------------------------------
+-- GEOMETRY TYPE (lwgeom)
+-------------------------------------------------------------------
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry_in(cstring)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5','LWGEOM_in'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry_out(geometry)
+ RETURNS cstring
+ AS '$libdir/postgis-1.5','LWGEOM_out'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry_analyze(internal)
+ RETURNS bool
+ AS '$libdir/postgis-1.5', 'LWGEOM_analyze'
+ LANGUAGE 'C' VOLATILE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry_recv(internal)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5','LWGEOM_recv'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Deprecation in 1.5.0
+CREATE OR REPLACE FUNCTION st_geometry_send(geometry)
+ RETURNS bytea
+ AS '$libdir/postgis-1.5','LWGEOM_send'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION geometry_in(cstring)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5','LWGEOM_in'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION geometry_out(geometry)
+ RETURNS cstring
+ AS '$libdir/postgis-1.5','LWGEOM_out'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION geometry_analyze(internal)
+ RETURNS bool
+ AS '$libdir/postgis-1.5', 'LWGEOM_analyze'
+ LANGUAGE 'C' VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION geometry_recv(internal)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5','LWGEOM_recv'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION geometry_send(geometry)
+ RETURNS bytea
+ AS '$libdir/postgis-1.5','LWGEOM_send'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+CREATE TYPE geometry (
+ internallength = variable,
+ input = geometry_in,
+ output = geometry_out,
+ send = geometry_send,
+ receive = geometry_recv,
+ delimiter = ':',
+ analyze = geometry_analyze,
+ storage = main
+);
+
+-------------------------------------------
+-- Affine transforms
+-------------------------------------------
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5', 'LWGEOM_affine'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5', 'LWGEOM_affine'
+ LANGUAGE 'C' IMMUTABLE STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Affine(geometry,float8,float8,float8,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION RotateZ(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Rotate(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT rotateZ($1, $2)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT rotateZ($1, $2)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION RotateX(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.2
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION RotateY(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Translate(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT translate($1, $2, $3, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT translate($1, $2, $3, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.0
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.0
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION Scale(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT scale($1, $2, $3, 1)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8)
+ RETURNS geometry
+ AS 'SELECT scale($1, $2, $3, 1)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.0
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION transscale(geometry,float8,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $4, 0, 0, 0, $5, 0,
+ 0, 0, 1, $2 * $4, $3 * $5, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.2.2
+CREATE OR REPLACE FUNCTION ST_transscale(geometry,float8,float8,float8,float8)
+ RETURNS geometry
+ AS 'SELECT affine($1, $4, 0, 0, 0, $5, 0,
+ 0, 0, 1, $2 * $4, $3 * $5, 0)'
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+-- Availability: 1.1.0
+-- Deprecation in 1.2.3
+CREATE OR REPLACE FUNCTION shift_longitude(geometry)
+ RETURNS geometry
+ AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift'
+ LANGUAGE 'C' IMMUTABLE STRICT;