mirror of
https://git.osgeo.org/gitea/postgis/postgis
synced 2024-10-26 10:02:50 +00:00
37ca3c79db
git-svn-id: http://svn.osgeo.org/postgis/trunk@602 b70326c6-7e19-0410-871a-916f4a2858ee
1276 lines
33 KiB
MySQL
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);
|
|
|