postgis/Attic/postgis_sql_common.sql.in
2004-06-07 16:32:26 +00:00

1276 lines
33 KiB
MySQL

-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--
-- $Id$
--
-- 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 hte GNU General Public Licence. See the COPYING file.
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- $Log$
-- Revision 1.31 2004/06/07 16:32:26 strk
-- Moved old version-specific sql files under the Attic directory.
--
-- Revision 1.29 2004/03/26 01:07:27 dblasby
-- changed name of fluffType() to multi().
--
-- Revision 1.28 2004/03/26 00:54:09 dblasby
-- added full support for fluffType(<geom>)
-- postgis09=# select fluffType('POINT(0 0)');
-- flufftype
-- -------------------------
-- SRID=-1;MULTIPOINT(0 0)
--
-- Revision 1.27 2004/01/21 19:04:03 strk
-- Added line_interpolate_point function by jsunday@rochgrp.com
--
-- Revision 1.26 2003/12/23 09:00:12 strk
-- AddGeometryColumn, DropGeometryColum moved to version-specific scripts.
-- Schema support enabled for version 73 and 74.
--
-- Revision 1.25 2003/12/18 18:07:06 strk
-- Changed fix_geometry_columns() for PG >= 73 so to set f_table_schema to
-- the empty string if its value is not a valid pg namespace.
--
-- Revision 1.24 2003/12/12 10:08:24 strk
-- Added GEOSnoop function and some optional debugging output for
-- geos<->postgis converter (define DEBUG_CONVERTER at top postgis_geos.c)
--
-- Revision 1.23 2003/11/19 17:50:18 strk
-- missing function definition added (I forgot - sorry)
--
-- Revision 1.22 2003/11/19 15:23:27 strk
-- Fixed wrong COMMUTATOR specifications in '<','>','~=','@' operators,
-- added new '<=', '>=' operators
--
-- Revision 1.21 2003/11/13 13:14:49 strk
-- used quote_ident() calls in AddGeometryColumns as suggested by Bernhard Herzog
--
-- Revision 1.20 2003/11/12 20:55:18 strk
-- AddGeometryColumn column identifier case respect fix as suggested by Bernhard Herzog
--
-- Revision 1.19 2003/11/05 18:26:54 strk
-- Added fast collect() and geomunion() aggregates implementations
--
-- Revision 1.18 2003/10/28 11:18:27 strk
-- Added Algorithms section and simplify() enabler code
--
-- Revision 1.17 2003/10/23 08:06:54 strk
-- Added 'unite' aggregate.
--
-- Revision 1.16 2003/10/17 16:07:05 dblasby
-- made isEmpty() return true/false
--
-- Revision 1.15 2003/09/04 16:19:06 dblasby
-- removed truly_inside() function.
--
-- Revision 1.14 2003/08/08 18:19:20 dblasby
-- Conformance changes.
-- Removed junk from postgis_debug.c and added the first run of the long
-- transaction locking support. (this will change - dont use it)
-- conformance tests were corrected
-- some dos cr/lf removed
-- empty geometries i.e. GEOMETRYCOLLECT(EMPTY) added (with indexing support)
-- pointN(<linestring>,1) now returns the first point (used to return 2nd)
--
-- Revision 1.13 2003/08/06 19:31:18 dblasby
-- Added the WKB parser. Added all the functions like
-- PolyFromWKB(<WKB>,[<SRID>]).
--
-- Added all the functions like PolyFromText(<WKT>,[<SRID>])
--
-- Minor problem in GEOS library fixed.
--
-- Revision 1.12 2003/08/01 23:58:08 dblasby
-- added the functionality to convert GEOS->PostGIS geometries. Added those geos
-- functions to postgis.
--
-- Revision 1.11 2003/07/01 18:30:55 pramsey
-- Added CVS revision headers.
--
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- SPATIAL_REF_SYS
CREATE TABLE spatial_ref_sys (
srid integer not null primary key,
auth_name varchar(256),
auth_srid integer,
srtext varchar(2048),
proj4text varchar(2048)
);
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- GEOMETRY_COLUMNS
CREATE TABLE geometry_columns (
f_table_catalog varchar(256) not null,
f_table_schema varchar(256) not null,
f_table_name varchar(256) not null,
f_geometry_column varchar(256) not null,
coord_dimension integer not null,
srid integer not null,
type varchar(30) not null,
attrelid oid,
varattnum int,
stats histogram2d,
CONSTRAINT geometry_columns_pk primary key (
f_table_catalog,
f_table_schema,
f_table_name,
f_geometry_column ) );
--
-- Workaround for old user defined variable length datatype
-- default value bug. Should not be necessary > 7.2
--
UPDATE pg_type SET typdefault = NULL WHERE typname = 'wkb';
UPDATE pg_type SET typdefault = NULL WHERE typname = 'geometry';
UPDATE pg_type SET typdefault = NULL WHERE typname = 'histogram2d';
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- POSTGIS_VERSION()
CREATE FUNCTION postgis_version() RETURNS text
AS 'SELECT \'@POSTGIS_VERSION@\'::text AS version'
LANGUAGE 'sql';
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- FIND_SRID( <schema>, <table>, <geom col> )
CREATE FUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
'DECLARE
schem text;
tabl text;
sr int4;
BEGIN
IF $1 IS NULL THEN
RAISE EXCEPTION ''find_srid() - schema is NULL!'';
END IF;
IF $2 IS NULL THEN
RAISE EXCEPTION ''find_srid() - table name is NULL!'';
END IF;
IF $3 IS NULL THEN
RAISE EXCEPTION ''find_srid() - column name is NULL!'';
END IF;
schem = $1;
tabl = $2;
-- if the table contains a . and the schema is empty
-- split the table into a schema and a table
-- otherwise drop through to default behavior
IF ( schem = '''' and tabl LIKE ''%.%'' ) THEN
schem = substr(tabl,1,strpos(tabl,''.'')-1);
tabl = substr(tabl,length(schem)+2);
ELSE
schem = schem || ''%'';
END IF;
select SRID into sr from geometry_columns where f_table_schema like schem and f_table_name = tabl and f_geometry_column = $3;
IF NOT FOUND THEN
RAISE EXCEPTION ''find_srid() - couldnt find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase missmatch?'';
END IF;
return sr;
END;
'
LANGUAGE 'plpgsql' WITH (iscachable);
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- GET_PROJ4_FROM_SRID( <srid> )
CREATE FUNCTION get_proj4_from_srid(integer) RETURNS text AS
'SELECT proj4text::text FROM spatial_ref_sys WHERE srid= $1'
LANGUAGE 'sql' WITH (iscachable,isstrict);
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- FIND_EXTENT( <table name>, <column name> )
CREATE FUNCTION find_extent(text,text) RETURNS box3d AS
'
DECLARE
tablename alias for $1;
columnname alias for $2;
okay boolean;
myrec RECORD;
BEGIN
FOR myrec IN EXECUTE ''SELECT extent("''||columnname||''") FROM "''||tablename||''"'' LOOP
return myrec.extent;
END LOOP;
END;
'
LANGUAGE 'plpgsql' WITH (isstrict);
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- TRANSFORM ( <geometry>, <srid> )
--
-- Test:
--
-- trans=# select * from spatial_ref_sys ;
--
-- srid | auth_name | auth_srid | srtext | proj4text
-- ------+---------------+-----------+--------+--------------------------------------------------------------------------
-- 1 | latlong WGS84 | 1 | | +proj=longlat +datum=WGS84
-- 2 | BC albers | 2 | | proj=aea ellps=GRS80 lon_0=-126 lat_0=45 lat_1=50 lat_2=58.5 x_0=1000000
--
-- select transform( 'SRID=1;POINT(-120.8 50.3)', 2);
-- -> 'SRID=2;POINT(1370033.37046971 600755.810968684)'
--
CREATE FUNCTION transform_geometry(geometry,text,text,int)
RETURNS geometry
AS '@MODULE_FILENAME@','transform_geom'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION transform(geometry,integer) RETURNS geometry AS
'BEGIN
RETURN transform_geometry( $1 , get_proj4_from_srid(SRID( $1 ) ), get_proj4_from_srid( $2 ), $2 );
END;'
LANGUAGE 'plpgsql' WITH (iscachable,isstrict);
-- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- COMMON FUNCTIONS
CREATE FUNCTION srid(chip)
RETURNS int4
AS '@MODULE_FILENAME@','srid_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION height(chip)
RETURNS int4
AS '@MODULE_FILENAME@','height_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION factor(chip)
RETURNS FLOAT4
AS '@MODULE_FILENAME@','factor_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION width(chip)
RETURNS int4
AS '@MODULE_FILENAME@','width_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION datatype(chip)
RETURNS int4
AS '@MODULE_FILENAME@','datatype_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION compression(chip)
RETURNS int4
AS '@MODULE_FILENAME@','compression_chip'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION setSRID(chip,int4)
RETURNS chip
AS '@MODULE_FILENAME@','setsrid_chip'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION setfactor(chip,float4)
RETURNS chip
AS '@MODULE_FILENAME@','setfactor_chip'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geometry(CHIP)
RETURNS geometry
AS '@MODULE_FILENAME@','CHIP_to_geom'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION box3d(geometry)
RETURNS box3d
AS '@MODULE_FILENAME@','get_bbox_of_geometry'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION box(geometry)
RETURNS BOX
AS '@MODULE_FILENAME@','geometry2box'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION geometry(box3d)
RETURNS geometry
AS '@MODULE_FILENAME@','get_geometry_of_bbox'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION geometry(text)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_text'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION expand(box3d,float8)
RETURNS box3d
AS '@MODULE_FILENAME@','expand_bbox'
LANGUAGE 'C' WITH (iscachable,isstrict);
--
-- Functions for converting to WKB
--
CREATE FUNCTION asbinary(geometry)
RETURNS wkb
AS '@MODULE_FILENAME@','asbinary_simple'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION asbinary(geometry,TEXT)
RETURNS wkb
AS '@MODULE_FILENAME@','asbinary_specify'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION bytea(wkb)
RETURNS bytea
AS '@MODULE_FILENAME@','WKBtoBYTEA'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION geometry(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','geometryfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION GeomFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','geometryfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION GeomFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','geometryfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PointFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PointFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION LineFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','LinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION LineFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','LinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION LinestringFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','LinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION LinestringFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','LinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PolyFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PolyFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PolygonFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION PolygonFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','PolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MPointFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MPointFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiPointFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiPointFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPointfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiLineFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MLinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiLineFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MLinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MLineFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MLinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MLineFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MLinefromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MPolyFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MPolyFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiPolyFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION MultiPolyFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','MPolyfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION GeomCollFromWKB(wkb,int)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','GCfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
CREATE FUNCTION GeomCollFromWKB(wkb)
RETURNS GEOMETRY
AS '@MODULE_FILENAME@','GCfromWKB_SRID'
LANGUAGE 'C' WITH (iscachable,isstrict);
-- CREATE FUNCTION index_thing(geometry)
-- RETURNS BOOL
-- AS '@MODULE_FILENAME@'
-- LANGUAGE 'C' WITH (isstrict);
--
-- Debugging functions
--
CREATE FUNCTION npoints(geometry)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION nrings(geometry)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict) ;
CREATE FUNCTION mem_size(geometry)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION summary(geometry)
RETURNS text
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION translate(geometry,float8,float8,float8)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict) ;
CREATE FUNCTION dimension(geometry)
RETURNS int4
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict) ;
CREATE FUNCTION geometrytype(geometry)
RETURNS text
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION envelope(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION x(geometry)
RETURNS float8
AS '@MODULE_FILENAME@','x_point'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION y(geometry)
RETURNS float8
AS '@MODULE_FILENAME@','y_point'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION z(geometry)
RETURNS float8
AS '@MODULE_FILENAME@','z_point'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION numpoints(geometry)
RETURNS integer
AS '@MODULE_FILENAME@','numpoints_linestring'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION pointn(geometry,integer)
RETURNS geometry
AS '@MODULE_FILENAME@','pointn_linestring'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION exteriorring(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','exteriorring_polygon'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION numinteriorrings(geometry)
RETURNS integer
AS '@MODULE_FILENAME@','numinteriorrings_polygon'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION interiorringn(geometry,integer)
RETURNS geometry
AS '@MODULE_FILENAME@','interiorringn_polygon'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION numgeometries(geometry)
RETURNS integer
AS '@MODULE_FILENAME@','numgeometries_collection'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometryn(geometry,integer)
RETURNS geometry
AS '@MODULE_FILENAME@','geometryn_collection'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION max_distance(geometry,geometry)
RETURNS float8
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION optimistic_overlap(geometry,geometry,FLOAT8)
RETURNS BOOL
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION segmentize(geometry,FLOAT8)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION distance(geometry,geometry)
RETURNS float8
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION astext(geometry)
RETURNS TEXT
AS '@MODULE_FILENAME@','astext_geometry'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION srid(geometry)
RETURNS int4
AS '@MODULE_FILENAME@','srid_geom'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometryfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geometryfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geomfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geomfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION polyfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_poly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION polygonfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_poly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION polygonfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_poly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mpolyfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION linefromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_line'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mlinefromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mline'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multilinestringfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mline'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multilinestringfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mline'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION pointfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_point'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mpointfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoint'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multipointfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoint'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multipointfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoint'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geomcollfromtext(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_gc'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION setSRID(geometry,int4)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION polyfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_poly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mpolyfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multipolygonfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION multipolygonfromtext(geometry,int)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoly'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION linefromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_line'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION linestringfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_line'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION linestringfromtext(geometry,int)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_line'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mlinefromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mline'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION pointfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_point'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION mpointfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_mpoint'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION geomcollfromtext(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geometry_from_text_gc'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION isempty(geometry)
RETURNS boolean
AS '@MODULE_FILENAME@','isempty'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION issimple(geometry)
RETURNS boolean
AS '@MODULE_FILENAME@','issimple'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION equals(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@','geomequals'
LANGUAGE 'C' WITH (isstrict,iscachable);
--
-- Special spheroid functions
--
CREATE FUNCTION length_spheroid(geometry,spheroid)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','length_ellipsoid'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION length3d_spheroid(geometry,spheroid)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','length3d_ellipsoid'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION distance_spheroid(geometry,geometry,spheroid)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','distance_ellipsoid'
LANGUAGE 'C' WITH (isstrict);
--
-- Generic operations
--
CREATE FUNCTION multi(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','fluffType'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION length3d(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION length(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','length2d'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION area2d(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION area(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','area2d'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION perimeter3d(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION perimeter(geometry)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','perimeter2d'
LANGUAGE 'C' WITH (isstrict);
---CREATE FUNCTION truly_inside(geometry,geometry)
--- RETURNS bool
--- AS '@MODULE_FILENAME@'
--- LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION point_inside_circle(geometry,float8,float8,float8)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION startpoint(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION endpoint(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION isclosed(geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION centroid(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION isring(geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION pointonsurface(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
--
-- BBox operations
--
CREATE FUNCTION xmin(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_xmin'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ymin(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_ymin'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION zmin(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_zmin'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION xmax(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_xmax'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION ymax(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_ymax'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION zmax(box3d)
RETURNS FLOAT8
AS '@MODULE_FILENAME@','box3d_zmax'
LANGUAGE 'C' WITH (isstrict,iscachable);
CREATE FUNCTION box3dtobox(box3d)
RETURNS BOX
AS '@MODULE_FILENAME@','box3dtobox'
LANGUAGE 'C' WITH (isstrict,iscachable);
--
-- Aggregate functions
--
CREATE FUNCTION geom_accum (geometry[],geometry)
RETURNS geometry[]
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
CREATE FUNCTION combine_bbox(box3d,geometry)
RETURNS box3d
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
CREATE AGGREGATE extent(
sfunc = combine_bbox,
basetype = geometry,
stype = box3d
);
CREATE FUNCTION collector(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
CREATE AGGREGATE memcollect(
sfunc = collector,
basetype = geometry,
stype = geometry
);
CREATE FUNCTION collect_garray (geometry[])
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
CREATE AGGREGATE collect (
sfunc = geom_accum,
basetype = geometry,
stype = geometry[],
finalfunc = collect_garray
);
--
-- Operator definitions
--
CREATE FUNCTION geometry_overleft(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_overright(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_left(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_right(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_contain(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_contained(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_overlap(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_same(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
--
-- Sorting functions
--
CREATE FUNCTION geometry_lt(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_le(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_gt(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_ge(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_eq(geometry, geometry)
RETURNS bool
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geometry_cmp(geometry, geometry)
RETURNS integer
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
--
-- Two dimensional to three dimensional forces
--
CREATE FUNCTION force_2d(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION force_3d(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
--
-- Force collection
--
CREATE FUNCTION force_collection(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
--
-- Operator definitions
--
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_overlap,
COMMUTATOR = '&&',
RESTRICT = postgis_gist_sel, JOIN = positionjoinsel
);
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_same,
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
);
--
-- 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
);
--
-- GEOS Functions
--
CREATE FUNCTION intersection(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','intersection'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION buffer(geometry,float8)
RETURNS geometry
AS '@MODULE_FILENAME@','buffer'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION convexhull(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','convexhull'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION difference(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','difference'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION boundary(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','boundary'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION symdifference(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','symdifference'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION symmetricdifference(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','symdifference'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION GeomUnion(geometry,geometry)
RETURNS geometry
AS '@MODULE_FILENAME@','geomunion'
LANGUAGE 'C' WITH (isstrict);
CREATE AGGREGATE MemGeomUnion (
basetype = geometry,
sfunc = geomunion,
stype = geometry
);
CREATE FUNCTION unite_garray (geometry[])
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C';
CREATE AGGREGATE GeomUnion (
sfunc = geom_accum,
basetype = geometry,
stype = geometry[],
finalfunc = unite_garray
);
CREATE FUNCTION relate(geometry,geometry)
RETURNS text
AS '@MODULE_FILENAME@','relate_full'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION relate(geometry,geometry,text)
RETURNS boolean
AS '@MODULE_FILENAME@','relate_pattern'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION disjoint(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION touches(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION intersects(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION crosses(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION within(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION contains(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION overlaps(geometry,geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION isvalid(geometry)
RETURNS boolean
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION geosnoop(geometry)
RETURNS geometry
AS '@MODULE_FILENAME@', 'GEOSnoop'
LANGUAGE 'C' WITH (isstrict);
--
-- Algorithms
--
CREATE FUNCTION simplify(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);
CREATE FUNCTION line_interpolate_point(geometry, float8)
RETURNS geometry
AS '@MODULE_FILENAME@'
LANGUAGE 'C' WITH (isstrict);