From: maxious Date: Thu, 07 Apr 2011 15:31:25 +0000 Subject: Refactor route list X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=3ffd6a666581ab23855097f1759e39334ea99d48 --- Refactor route list --- --- a/about.php +++ b/about.php @@ -12,7 +12,7 @@ href="https://github.com/maxious/ACTBus-data">transit feed and this site available from github.
-Uses jQuery Mobile, PHP, Ruby, Python, Google Transit Feed Specification tools, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service
+Uses jQuery Mobile, PHP, PostgreSQL, OpenTripPlanner, OpenLayers, OpenStreetMap, Cloudmade Geocoder and Tile Service

Feedback encouraged; contact maxious@lambdacomplex.org

--- a/aws/awsStartup.sh +++ /dev/null @@ -1,29 +1,1 @@ -#!/bin/bash -#this script should be run from a fresh git checkout from http://maxious.lambdacomplex.org -#ami base must have yum install lighttpd-fastcgi, git, tomcat6 -#screen php-cli php-gd tomcat6-webapps tomcat6-admin-webapps svn maven2 -#http://www.how2forge.org/installing-lighttpd-with-php5-and-mysql-support-on-fedora-12 -cp /root/aws.php /tmp/ -mkdir /var/www/lib/staticmaplite/cache -chcon -h system_u:object_r:httpd_sys_content_t /var/www -chcon -R -h root:object_r:httpd_sys_content_t /var/www/* -chcon -R -t httpd_sys_content_rw_t /var/www/lib/staticmaplite/cache -chmod -R 777 /var/www/lib/staticmaplite/cache -wget http://s3-ap-southeast-1.amazonaws.com/busresources/cbrfeed.zip \ --O /var/www/cbrfeed.zip -easy_install transitfeed -easy_install simplejson -screen -S viewsh -X quit -screen -S viewsh -d -m /var/www/view.sh - -wget http://s3-ap-southeast-1.amazonaws.com/busresources/Graph.obj \ --O /tmp/Graph.obj -rm -rfv /usr/share/tomcat6/webapps/opentripplanner* -wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-webapp.war \ --O /usr/share/tomcat6/webapps/opentripplanner-webapp.war -wget http://s3-ap-southeast-1.amazonaws.com/busresources/opentripplanner-api-webapp.war \ --O /usr/share/tomcat6/webapps/opentripplanner-api-webapp.war -/etc/init.d/tomcat6 restart - - --- a/include/common-session.inc.php +++ b/include/common-session.inc.php @@ -9,7 +9,7 @@ $_SESSION['time'] = filter_var($_REQUEST['time'], FILTER_SANITIZE_STRING); sessionUpdated(); } -if (isset($_REQUEST['geolocate'])) { +if (isset($_REQUEST['geolocate']) && $_REQUEST['geolocate'] != "Enter co-ordinates or address here") { $geocoded = false; if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { $_SESSION['lat'] = trim(filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)); --- a/include/common-transit.inc.php +++ b/include/common-transit.inc.php @@ -16,58 +16,5 @@ return 'weekday'; } } -function midnight_seconds() -{ - // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html - if (isset($_SESSION['time'])) { - $time = strtotime($_SESSION['time']); - return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); - } - return (date("G") * 3600) + (date("i") * 60) + date("s"); -} -function midnight_seconds_to_time($seconds) -{ - if ($seconds > 0) { - $midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y")); - return date("h:ia", $midnight + $seconds); - } - else { - return ""; - } -} -function viaPoints($tripid, $stopid, $timingPointsOnly = false) -{ - global $APIurl; - $url = $APIurl . "/json/tripstoptimes?trip=" . $tripid; - $json = json_decode(getPage($url)); - debug(print_r($json, true)); - $stops = $json[0]; - $times = $json[1]; - $foundStop = false; - $viaPoints = Array(); - foreach ($stops as $key => $row) { - if ($foundStop) { - if (!$timingPointsOnly || !startsWith($row[5], "Wj")) { - $viaPoints[] = Array( - "id" => $row[0], - "name" => $row[1], - "time" => $times[$key] - ); - } - } - else { - if ($row[0] == $stopid) $foundStop = true; - } - } - return $viaPoints; -} -function viaPointNames($tripid, $stopid) -{ - $points = viaPoints($tripid, $stopid, true); - $pointNames = Array(); - foreach ($points as $point) { - $pointNames[] = $point['name']; - } - return implode(", ", $pointNames); -} + ?> --- a/include/common.inc.php +++ b/include/common.inc.php @@ -1,19 +1,15 @@ $val) { + $offset = 0; + $found = false; + foreach ($temp_array as $tmp_key => $tmp_val) { + if (!$found and strtotime($val[$subkey]) > strtotime($tmp_val[$subkey])) { + $temp_array = array_merge((array)array_slice($temp_array, 0, $offset) , array( + $key => $val + ) , array_slice($temp_array, $offset)); + $found = true; + } + $offset++; + } + if (!$found) $temp_array = array_merge($temp_array, array( + $key => $val + )); + } + if ($sort_ascending) $array = array_reverse($temp_array); + else $array = $temp_array; +} +function r_implode( $glue, $pieces ) +{ + foreach( $pieces as $r_pieces ) + { + if( is_array( $r_pieces ) ) + { + $retVal[] = r_implode( $glue, $r_pieces ); + } + else + { + $retVal[] = $r_pieces; + } + } + return implode( $glue, $retVal ); +} ?> --- /dev/null +++ b/include/db/route-dao.inc.php @@ -1,1 +1,63 @@ + 0) { + if (sizeof($conditions) > 1) { + $query .= " Where ".implode(" AND ",$conditions)." "; + } + else { + $query .= " Where ".$conditions[0]." "; + } + } + $query .= " order by route_short_name;"; + debug($query,"database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} + +function findRouteByNumber($routeNumber) { + global $conn; + $query = "Select * from routes where route_short_name = '$routeNumber';"; + debug($query,"database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} + +function getRouteNextTrip($routeID) { + $query = "select * from routes join trips on trips.route_id = routes.route_id +join stop_times on stop_times.trip_id = trips.trip_id where +arrival_time > CURRENT_TIME and routes.route_id = '$routeID' order by +arrival_time limit 1"; + debug($query,"database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_assoc($result); /* + } + +?> --- /dev/null +++ b/include/db/stop-dao.inc.php @@ -1,1 +1,121 @@ + 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 getStopRoutes($stopID, $service_period) +{ + if ($service_period == "") $service_period = service_period(); + global $conn; + $query = "SELECT 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"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result);} +function getStopTrips($stopID, $service_period = "") +{ + if ($service_period == "") $service_period = service_period(); + global $conn; + $query = "SELECT stop_times.trip_id,arrival_time,stop_id,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 WHERE stop_id = '$stopID' AND service_id='$service_period'"; + debug($query,"database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + return pg_fetch_all($result); +} +function getStopTripsWithTimes($stopID, $time = "", $service_period = "", $time_range = "") +{ + if ($service_period == "") $service_period = service_period(); + if ($time_range == "") $time_range = (24*60*60); + if ($time == "") $time = ($_SESSION['time'] ? $_SESSION['time'] : date("h:i:00")); + $trips = getStopTrips($stopID,$service_period); + $timedTrips = Array(); + foreach ($trips as $trip) { + if ($trip['arrival_time'] != "") { + if (strtotime($trip['arrival_time']) > strtotime($time) and strtotime($trip['arrival_time']) < (strtotime($time) + $time_range)){ + $timedTrips[] = $trip; + } + } else { + $tripstarttime = getTripStartTime($trip['trip_id']); + if ($tripstarttime > $time and $tripstarttime < ($time + $time_range)) { + $timedtrip = getTimeInterpolatedTripStop($trip['trip_id'], $trip['stop_sequence']); + if (strtotime($timedtrip['arrival_time']) > strtotime($time) and $timedtrip['arrival_time'] < (strtotime($time) + strtotime($time_range))){ + $timedTrips[] = $timedTrip; + } + } + } + if (sizeof($timedTrips) > limit) break; + } + sktimesort($timedTrips,"arrival_time", true); + return $timedTrips; +} +?> --- /dev/null +++ b/include/db/trip-dao.inc.php @@ -1,1 +1,115 @@ + '$stop_sequence' +AND substr(stop_code,1,2) != 'Wj' ORDER BY stop_sequence"; + debug($query,"database"); + $result = pg_query($conn, $query); + if (!$result) { + databaseError(pg_result_error($result)); + return Array(); + } + $pointNames = pg_fetch_all($result); + return r_implode(", ", $pointNames); +} +?> --- a/labs/tripPlannerTester.kml.php +++ b/labs/tripPlannerTester.kml.php @@ -159,8 +159,7 @@ $regionTimes[] = $time; } } - flush(); - ob_flush(); + flush(); @ob_flush(); curl_close($ch); } } --- a/layar_api.php +++ b/layar_api.php @@ -9,29 +9,29 @@ $page_end = $max_page + filter_var($_REQUEST['pageKey'], FILTER_SANITIZE_NUMBER_INT); $lat = filter_var($_REQUEST['lat'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); $lon = filter_var($_REQUEST['lon'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); -$url = $APIurl . "/json/neareststops?lat=$lat&lon=$lon&limit=50"; -$contents = json_decode(getPage($url)); -debug(print_r($contents, true)); + +$contents = getStopsNearby($lat, $lon, 50); + $stopNum = 0; -foreach ($contents as $row) { +foreach ($contents as $stop) { $stopNum++; if ($stopNum > $page_start && $stopNum <= $page_end) { $hotspot = Array(); - $hotspot['id'] = $row[0]; - $hotspot['title'] = $row[1]; + $hotspot['id'] = $stop[id]; + $hotspot['title'] = $stop[name]; $hotspot['type'] = 0; - $hotspot['lat'] = floor($row[2] * 1000000); - $hotspot['lon'] = floor($row[3] * 1000000); - $hotspot['distance'] = distance($row[2], $row[3], $_REQUEST['lat'], $_REQUEST['lon']); + $hotspot['lat'] = floor($stop[lat] * 1000000); + $hotspot['lon'] = floor($stop[lon] * 1000000); + $hotspot['distance'] = distance($stop[lat], $stop[lon], $_REQUEST['lat'], $_REQUEST['lon']); $hotspot['actions'] = Array( Array( "label" => 'View more trips/information', - 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $row[0] + 'uri' => 'http://bus.lambdacomplex.org/' . 'stop.php?stopid=' . $stop[id] ) ); + $url = $APIurl . "/json/stoptrips?stop=" . $row[0] . "&time=" . midnight_seconds() . "&service_period=" . service_period() . "&limit=4&time_range=" . strval(90 * 60); - $trips = json_decode(getPage($url)); - debug(print_r($trips, true)); + $trips = getStopTrips($stopID); foreach ($trips as $key => $row) { if ($key < 3) { $hotspot['line' . strval($key + 2) ] = $row[1][1] . ' @ ' . midnight_seconds_to_time($row[0]); --- /dev/null +++ b/lib/postgis.sh @@ -1,1 +1,3 @@ +createlang -d dbname plpgsql +psql -d transitdata -f postgis.sql --- /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; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_shift_longitude(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_longitude_shift' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------- +-- BOX3D TYPE +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box3d_in(cstring) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box3d_out(box3d) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_in(cstring) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_out(box3d) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box3d ( + alignment = double, + internallength = 48, + input = box3d_in, + output = box3d_out +); + +-- Temporary box3d aggregate type to retain full double precision +-- for ST_Extent(). Should be removed when we change the output +-- type of ST_Extent() to return something other than BOX2DFLOAT4. +CREATE OR REPLACE FUNCTION box3d_extent_in(cstring) + RETURNS box3d_extent + AS '$libdir/postgis-1.5', 'BOX3D_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box3d_extent_out(box3d_extent) + RETURNS cstring + AS '$libdir/postgis-1.5', 'BOX3D_extent_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box3d_extent ( + alignment = double, + internallength = 48, + input = box3d_extent_in, + output = box3d_extent_out +); + +-- Availability: 1.4.0 +CREATE OR REPLACE FUNCTION box3d_extent(box3d_extent) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_extent_to_BOX3D' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d(box3d_extent) + RETURNS box2d + AS '$libdir/postgis-1.5', 'BOX3D_to_BOX2DFLOAT4' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry(box3d_extent) + RETURNS geometry + AS '$libdir/postgis-1.5','BOX3D_to_LWGEOM' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- End of temporary hack + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION xmin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_XMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION ymin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_YMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION zmin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_ZMin(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmin' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION xmax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_XMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_xmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION ymax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_YMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_ymax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION zmax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_ZMax(box3d) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','BOX3D_zmax' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------- +-- CHIP TYPE +------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION chip_in(cstring) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION chip_out(chip) + RETURNS cstring + AS '$libdir/postgis-1.5','CHIP_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION ST_chip_in(cstring) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION ST_chip_out(chip) + RETURNS cstring + AS '$libdir/postgis-1.5','CHIP_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE chip ( + alignment = double, + internallength = variable, + input = chip_in, + output = chip_out, + storage = extended +); + +----------------------------------------------------------------------- +-- BOX2D +----------------------------------------------------------------------- + + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box2d_in(cstring) + RETURNS box2d + AS '$libdir/postgis-1.5','BOX2DFLOAT4_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_box2d_out(box2d) + RETURNS cstring + AS '$libdir/postgis-1.5','BOX2DFLOAT4_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d_in(cstring) + RETURNS box2d + AS '$libdir/postgis-1.5','BOX2DFLOAT4_in' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION box2d_out(box2d) + RETURNS cstring + AS '$libdir/postgis-1.5','BOX2DFLOAT4_out' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE TYPE box2d ( + internallength = 16, + input = box2d_in, + output = box2d_out, + storage = plain +); + + +------------------------------------------------------------------- +-- BTREE indexes +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_lt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_lt' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_le(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_le' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_gt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_gt' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_ge(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_ge' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_eq(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_eq' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_cmp(geometry, geometry) + RETURNS integer + AS '$libdir/postgis-1.5', 'lwgeom_cmp' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_lt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_lt' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_le(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_le' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_gt(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_gt' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_ge(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_ge' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_eq(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'lwgeom_eq' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_cmp(geometry, geometry) + RETURNS integer + AS '$libdir/postgis-1.5', 'lwgeom_cmp' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- +-- Sorting operators for Btree +-- + +CREATE OPERATOR < ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_lt, + COMMUTATOR = '>', NEGATOR = '>=', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR <= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_le, + COMMUTATOR = '>=', NEGATOR = '>', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR = ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_eq, + COMMUTATOR = '=', -- we might implement a faster negator here + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR >= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_ge, + COMMUTATOR = '<=', NEGATOR = '<', + RESTRICT = contsel, JOIN = contjoinsel +); +CREATE OPERATOR > ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_gt, + COMMUTATOR = '<', NEGATOR = '<=', + RESTRICT = contsel, JOIN = contjoinsel +); + + +CREATE OPERATOR CLASS btree_geometry_ops + DEFAULT FOR TYPE geometry USING btree AS + OPERATOR 1 < , + OPERATOR 2 <= , + OPERATOR 3 = , + OPERATOR 4 >= , + OPERATOR 5 > , + FUNCTION 1 geometry_cmp (geometry, geometry); + + + +------------------------------------------------------------------- +-- GiST indexes +------------------------------------------------------------------- + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION postgis_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION postgis_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_postgis_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_postgis_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overleft(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overleft' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overright(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overright' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overabove(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overabove' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overbelow(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overbelow' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_left(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_left' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_right(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_right' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_above(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_above' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_below(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_below' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_contain(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contain' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_contained(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contained' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_overlap(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overlap' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION st_geometry_same(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.5.0 +CREATE OR REPLACE FUNCTION geometry_same(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_gist_sel (internal, oid, internal, int4) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_sel' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION geometry_gist_joinsel(internal, oid, internal, smallint) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_gist_joinsel' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION geometry_overleft(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overleft' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overright(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overright' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overabove(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overabove' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overbelow(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overbelow' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_left(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_left' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_right(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_right' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_above(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_above' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_below(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_below' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_contain(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contain' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_contained(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_contained' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_overlap(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_overlap' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION geometry_samebox(geometry, geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_samebox' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OPERATOR << ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_left, + COMMUTATOR = '>>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR &< ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overleft, + COMMUTATOR = '&>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR <<| ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_below, + COMMUTATOR = '|>>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR &<| ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overbelow, + COMMUTATOR = '|&>', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR && ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlap, + COMMUTATOR = '&&', + RESTRICT = geometry_gist_sel, JOIN = geometry_gist_joinsel +); + +CREATE OPERATOR &> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overright, + COMMUTATOR = '&<', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR >> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_right, + COMMUTATOR = '<<', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR |&> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overabove, + COMMUTATOR = '&<|', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR |>> ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_above, + COMMUTATOR = '<<|', + RESTRICT = positionsel, JOIN = positionjoinsel +); + +CREATE OPERATOR ~= ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_samebox, + COMMUTATOR = '~=', + RESTRICT = eqsel, JOIN = eqjoinsel +); + +CREATE OPERATOR @ ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contained, + COMMUTATOR = '~', + RESTRICT = contsel, JOIN = contjoinsel +); + +CREATE OPERATOR ~ ( + LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contain, + COMMUTATOR = '@', + RESTRICT = contsel, JOIN = contjoinsel +); + +-- gist support functions + +CREATE OR REPLACE FUNCTION LWGEOM_gist_consistent(internal,geometry,int4) + RETURNS bool + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_consistent' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_compress(internal) + RETURNS internal + AS '$libdir/postgis-1.5','LWGEOM_gist_compress' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_penalty(internal,internal,internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_penalty' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_picksplit(internal, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_picksplit' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_union(bytea, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_union' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_same(box2d, box2d, internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_same' + LANGUAGE 'C'; + +CREATE OR REPLACE FUNCTION LWGEOM_gist_decompress(internal) + RETURNS internal + AS '$libdir/postgis-1.5' ,'LWGEOM_gist_decompress' + LANGUAGE 'C'; + +------------------------------------------- +-- GIST opclass index binding entries. +------------------------------------------- +-- +-- Create opclass index bindings for PG>=73 +-- + +CREATE OPERATOR CLASS gist_geometry_ops + DEFAULT FOR TYPE geometry USING gist AS + STORAGE box2d, + OPERATOR 1 << , + OPERATOR 2 &< , + OPERATOR 3 && , + OPERATOR 4 &> , + OPERATOR 5 >> , + OPERATOR 6 ~= , + OPERATOR 7 ~ , + OPERATOR 8 @ , + OPERATOR 9 &<| , + OPERATOR 10 <<| , + OPERATOR 11 |>> , + OPERATOR 12 |&> , + FUNCTION 1 LWGEOM_gist_consistent (internal, geometry, int4), + FUNCTION 2 LWGEOM_gist_union (bytea, internal), + FUNCTION 3 LWGEOM_gist_compress (internal), + FUNCTION 4 LWGEOM_gist_decompress (internal), + FUNCTION 5 LWGEOM_gist_penalty (internal, internal, internal), + FUNCTION 6 LWGEOM_gist_picksplit (internal, internal), + FUNCTION 7 LWGEOM_gist_same (box2d, box2d, internal); + +------------------------------------------- +-- other lwgeom functions +------------------------------------------- + +CREATE OR REPLACE FUNCTION addbbox(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_addBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION postgis_addbbox(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_addBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION dropbbox(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_dropBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION postgis_dropbbox(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5','LWGEOM_dropBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION getsrid(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5','LWGEOM_getSRID' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION getbbox(geometry) + RETURNS box2d + AS '$libdir/postgis-1.5','LWGEOM_to_BOX2DFLOAT4' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION postgis_getbbox(geometry) + RETURNS box2d + AS '$libdir/postgis-1.5','LWGEOM_to_BOX2DFLOAT4' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION hasbbox(geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION postgis_hasbbox(geometry) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_hasBBOX' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------- +--- CHIP functions +------------------------------------------- + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION srid(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getSRID' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_srid(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getSRID' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION height(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getHeight' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_height(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getHeight' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION factor(chip) + RETURNS FLOAT4 + AS '$libdir/postgis-1.5','CHIP_getFactor' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_factor(chip) + RETURNS FLOAT4 + AS '$libdir/postgis-1.5','CHIP_getFactor' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION width(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getWidth' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_width(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getWidth' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION datatype(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getDatatype' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_datatype(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getDatatype' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION compression(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getCompression' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_compression(chip) + RETURNS int4 + AS '$libdir/postgis-1.5','CHIP_getCompression' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION setSRID(chip,int4) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_setSRID' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION setFactor(chip,float4) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_setFactor' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_setFactor(chip,float4) + RETURNS chip + AS '$libdir/postgis-1.5','CHIP_setFactor' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------------ +-- DEBUG +------------------------------------------------------------------------ + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION mem_size(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_mem_size' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_mem_size(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_mem_size' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION summary(geometry) + RETURNS text + AS '$libdir/postgis-1.5', 'LWGEOM_summary' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_summary(geometry) + RETURNS text + AS '$libdir/postgis-1.5', 'LWGEOM_summary' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION npoints(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_npoints' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_npoints(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_npoints' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION nrings(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_nrings' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_nrings(geometry) + RETURNS int4 + AS '$libdir/postgis-1.5', 'LWGEOM_nrings' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------------ +-- Misures +------------------------------------------------------------------------ + +-- this is a fake (for back-compatibility) +-- uses 3d if 3d is available, 2d otherwise +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION length3d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_length3d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION length2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_length2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION length(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- PostGIS equivalent function: length2d(geometry) +CREATE OR REPLACE FUNCTION ST_Length(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_length2d_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- this is a fake (for back-compatibility) +-- uses 3d if 3d is available, 2d otherwise +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION length3d_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length_ellipsoid_linestring' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_length3d_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length_ellipsoid_linestring' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION length_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length_ellipsoid_linestring' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_length_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length_ellipsoid_linestring' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION length2d_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length2d_ellipsoid' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_length2d_spheroid(geometry, spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_length2d_ellipsoid' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- this is a fake (for back-compatibility) +-- uses 3d if 3d is available, 2d otherwise +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION perimeter3d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_perimeter3d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION perimeter2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_perimeter2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION perimeter(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- PostGIS equivalent function: perimeter2d(geometry) +CREATE OR REPLACE FUNCTION ST_Perimeter(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_perimeter2d_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- this is an alias for 'area(geometry)' +-- there is nothing such an 'area3d'... +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION area2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +-- Deprecation in 1.3.4 +CREATE OR REPLACE FUNCTION ST_area2d(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5', 'LWGEOM_area_polygon' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION area(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_area_polygon' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- PostGIS equivalent function: area(geometry) +CREATE OR REPLACE FUNCTION ST_Area(geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_area_polygon' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION distance_spheroid(geometry,geometry,spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_distance_ellipsoid' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_distance_spheroid(geometry,geometry,spheroid) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_distance_ellipsoid' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION distance_sphere(geometry,geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_distance_sphere' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_distance_sphere(geometry,geometry) + RETURNS FLOAT8 + AS '$libdir/postgis-1.5','LWGEOM_distance_sphere' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Minimum distance. 2d only. +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION distance(geometry,geometry) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- PostGIS equivalent function: distance(geometry,geometry) +CREATE OR REPLACE FUNCTION ST_Distance(geometry,geometry) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_mindistance2d' + LANGUAGE 'C' IMMUTABLE STRICT + COST 100; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION point_inside_circle(geometry,float8,float8,float8) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_point_inside_circle(geometry,float8,float8,float8) + RETURNS bool + AS '$libdir/postgis-1.5', 'LWGEOM_inside_circle_point' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION azimuth(geometry,geometry) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_azimuth' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_azimuth(geometry,geometry) + RETURNS float8 + AS '$libdir/postgis-1.5', 'LWGEOM_azimuth' + LANGUAGE 'C' IMMUTABLE STRICT; + +------------------------------------------------------------------------ +-- MISC +------------------------------------------------------------------------ + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_2d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_2d' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_2d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_2d' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_3dz(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_3dz(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- an alias for force_3dz +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_3d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_3d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dz' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_3dm(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_3dm(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_3dm' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_4d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_4d' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_4d(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_4d' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION force_collection(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_collection' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_force_collection(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_collection' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION ST_CollectionExtract(geometry, integer) + RETURNS geometry + AS '$libdir/postgis-1.5', 'ST_CollectionExtract' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION multi(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_multi' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_multi(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_force_multi' + LANGUAGE 'C' IMMUTABLE STRICT; + + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION expand(box3d,float8) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Expand(box3d,float8) + RETURNS box3d + AS '$libdir/postgis-1.5', 'BOX3D_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION expand(box2d,float8) + RETURNS box2d + AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_expand(box2d,float8) + RETURNS box2d + AS '$libdir/postgis-1.5', 'BOX2DFLOAT4_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION expand(geometry,float8) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_expand(geometry,float8) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_expand' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION envelope(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_envelope' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- PostGIS equivalent function: envelope(geometry) +CREATE OR REPLACE FUNCTION ST_Envelope(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_envelope' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION reverse(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_reverse' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_Reverse(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_reverse' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION ForceRHR(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Availability: 1.2.2 +CREATE OR REPLACE FUNCTION ST_ForceRHR(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_forceRHR_poly' + LANGUAGE 'C' IMMUTABLE STRICT; + +-- Deprecation in 1.2.3 +CREATE OR REPLACE FUNCTION noop(geometry) + RETURNS geometry + AS '$libdir/postgis-1.5', 'LWGEOM_noop' + LANGUAGE 'C' VOLATILE STRICT; + +-- Availability: 1.5.0 +CREATE OR REPLACE FUNCTION postgis_noop(geo