postgis/postgis/geography.sql.in
Regina Obe 3e38e0b83b Remove support for PostgreSQL < 12
Remove support for Proj < 6.1
Closes #5229 for PostGIS 3.4.0
2022-09-02 20:14:25 -04:00

862 lines
30 KiB
MySQL

---------------------------------------------------------------------------
--
-- PostGIS - Spatial Types for PostgreSQL
-- Copyright 2009 Paul Ramsey <pramsey@cleverelephant.ca>
--
-- This is free software; you can redistribute and/or modify it under
-- the terms of the GNU General Public Licence. See the COPYING file.
--
---------------------------------------------------------------------------
-----------------------------------------------------------------------------
-- GEOGRAPHY TYPE
-----------------------------------------------------------------------------
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_typmod_in(cstring[])
RETURNS integer
AS 'MODULE_PATHNAME','geography_typmod_in'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_typmod_out(integer)
RETURNS cstring
AS 'MODULE_PATHNAME','postgis_typmod_out'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_in(cstring, oid, integer)
RETURNS geography
AS 'MODULE_PATHNAME','geography_in'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_out(geography)
RETURNS cstring
AS 'MODULE_PATHNAME','geography_out'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION geography_recv(internal, oid, integer)
RETURNS geography
AS 'MODULE_PATHNAME','geography_recv'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION geography_send(geography)
RETURNS bytea
AS 'MODULE_PATHNAME','geography_send'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_analyze(internal)
RETURNS bool
AS 'MODULE_PATHNAME','gserialized_analyze_nd'
LANGUAGE 'c' VOLATILE STRICT;
-- Availability: 1.5.0
CREATE TYPE geography (
internallength = variable,
input = geography_in,
output = geography_out,
receive = geography_recv,
send = geography_send,
typmod_in = geography_typmod_in,
typmod_out = geography_typmod_out,
delimiter = ':',
analyze = geography_analyze,
storage = main,
alignment = double
);
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography(geography, integer, boolean)
RETURNS geography
AS 'MODULE_PATHNAME','geography_enforce_typmod'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE CAST (geography AS geography) WITH FUNCTION geography(geography, integer, boolean) AS IMPLICIT;
-- Availability: 2.0.0
-- Changed: 2.1.4 ticket #2870 changed to use geography bytea func instead of geometry bytea
CREATE OR REPLACE FUNCTION geography(bytea)
RETURNS geography
AS 'MODULE_PATHNAME','geography_from_binary'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION bytea(geography)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE CAST (bytea AS geography) WITH FUNCTION geography(bytea) AS IMPLICIT;
-- Availability: 2.0.0
CREATE CAST (geography AS bytea) WITH FUNCTION bytea(geography) AS IMPLICIT;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_AsText(geography)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asText'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.5.0
CREATE OR REPLACE FUNCTION ST_AsText(geography, integer)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asText'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_AsText(text)
RETURNS text AS
$$ SELECT @extschema@.ST_AsText($1::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_GeographyFromText(text)
RETURNS geography
AS 'MODULE_PATHNAME','geography_from_text'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_GeogFromText(text)
RETURNS geography
AS 'MODULE_PATHNAME','geography_from_text'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_GeogFromWKB(bytea)
RETURNS geography
AS 'MODULE_PATHNAME','geography_from_binary'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION postgis_typmod_dims(integer)
RETURNS integer
AS 'MODULE_PATHNAME','postgis_typmod_dims'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION postgis_typmod_srid(integer)
RETURNS integer
AS 'MODULE_PATHNAME','postgis_typmod_srid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION postgis_typmod_type(integer)
RETURNS text
AS 'MODULE_PATHNAME','postgis_typmod_type'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
-- Changed: 2.4.0 Limit to only list things that are tables
CREATE OR REPLACE VIEW geography_columns AS
SELECT
pg_catalog.current_database() AS f_table_catalog,
n.nspname AS f_table_schema,
c.relname AS f_table_name,
a.attname AS f_geography_column,
postgis_typmod_dims(a.atttypmod) AS coord_dimension,
postgis_typmod_srid(a.atttypmod) AS srid,
postgis_typmod_type(a.atttypmod) AS type
FROM
pg_class c,
pg_attribute a,
pg_type t,
pg_namespace n
WHERE t.typname = 'geography'
AND a.attisdropped = false
AND a.atttypid = t.oid
AND a.attrelid = c.oid
AND c.relnamespace = n.oid
AND c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char", 'p'::"char"] )
AND NOT pg_is_other_temp_schema(c.relnamespace)
AND has_table_privilege( c.oid, 'SELECT'::text );
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography(geometry)
RETURNS geography
AS 'MODULE_PATHNAME','geography_from_geometry'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE CAST (geometry AS geography) WITH FUNCTION geography(geometry) AS IMPLICIT;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geometry(geography)
RETURNS geometry
AS 'MODULE_PATHNAME','geometry_from_geography'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE CAST (geography AS geometry) WITH FUNCTION geometry(geography) ;
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- GiST Support Functions
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_consistent(internal,geography,integer)
RETURNS bool
AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_compress(internal)
RETURNS internal
AS 'MODULE_PATHNAME','gserialized_gist_compress'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_penalty(internal,internal,internal)
RETURNS internal
AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_picksplit(internal, internal)
RETURNS internal
AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_union(bytea, internal)
RETURNS internal
AS 'MODULE_PATHNAME' ,'gserialized_gist_union'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_same(box2d, box2d, internal)
RETURNS internal
AS 'MODULE_PATHNAME' ,'gserialized_gist_same'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gist_decompress(internal)
RETURNS internal
AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_overlaps(geography, geography)
RETURNS boolean
AS 'MODULE_PATHNAME' ,'gserialized_overlaps'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OPERATOR && (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_overlaps,
COMMUTATOR = '&&',
RESTRICT = gserialized_gist_sel_nd,
JOIN = gserialized_gist_joinsel_nd
);
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION geography_distance_knn(geography, geography)
RETURNS float8
AS 'MODULE_PATHNAME','geography_distance_knn'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
COST 100;
-- Availability: 2.2.0
CREATE OPERATOR <-> (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_distance_knn,
COMMUTATOR = '<->'
);
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION geography_gist_distance(internal, geography, integer)
RETURNS float8
AS 'MODULE_PATHNAME' ,'gserialized_gist_geog_distance'
LANGUAGE 'c';
-- Availability: 1.5.0
CREATE OPERATOR CLASS gist_geography_ops
DEFAULT FOR TYPE geography USING GIST AS
STORAGE gidx,
OPERATOR 3 && ,
-- OPERATOR 6 ~= ,
-- OPERATOR 7 ~ ,
-- OPERATOR 8 @ ,
-- Availability: 2.2.0
OPERATOR 13 <-> FOR ORDER BY pg_catalog.float_ops,
-- Availability: 2.2.0
FUNCTION 8 geography_gist_distance (internal, geography, integer),
FUNCTION 1 geography_gist_consistent (internal, geography, integer),
FUNCTION 2 geography_gist_union (bytea, internal),
FUNCTION 3 geography_gist_compress (internal),
FUNCTION 4 geography_gist_decompress (internal),
FUNCTION 5 geography_gist_penalty (internal, internal, internal),
FUNCTION 6 geography_gist_picksplit (internal, internal),
FUNCTION 7 geography_gist_same (box2d, box2d, internal);
-- moved to separate file cause its invovled
#include "geography_brin.sql.in"
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- B-Tree Functions
-- For sorting and grouping
-- Availability: 1.5.0
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_lt(geography, geography)
RETURNS bool
AS 'MODULE_PATHNAME', 'geography_lt'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_le(geography, geography)
RETURNS bool
AS 'MODULE_PATHNAME', 'geography_le'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_gt(geography, geography)
RETURNS bool
AS 'MODULE_PATHNAME', 'geography_gt'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_ge(geography, geography)
RETURNS bool
AS 'MODULE_PATHNAME', 'geography_ge'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_eq(geography, geography)
RETURNS bool
AS 'MODULE_PATHNAME', 'geography_eq'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography_cmp(geography, geography)
RETURNS integer
AS 'MODULE_PATHNAME', 'geography_cmp'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
--
-- Sorting operators for Btree
--
-- Availability: 1.5.0
CREATE OPERATOR < (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_lt,
COMMUTATOR = '>', NEGATOR = '>=',
RESTRICT = contsel, JOIN = contjoinsel
);
-- Availability: 1.5.0
CREATE OPERATOR <= (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_le,
COMMUTATOR = '>=', NEGATOR = '>',
RESTRICT = contsel, JOIN = contjoinsel
);
-- Availability: 1.5.0
CREATE OPERATOR = (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_eq,
COMMUTATOR = '=', -- we might implement a faster negator here
RESTRICT = contsel, JOIN = contjoinsel
);
-- Availability: 1.5.0
CREATE OPERATOR >= (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_ge,
COMMUTATOR = '<=', NEGATOR = '<',
RESTRICT = contsel, JOIN = contjoinsel
);
-- Availability: 1.5.0
CREATE OPERATOR > (
LEFTARG = geography, RIGHTARG = geography, PROCEDURE = geography_gt,
COMMUTATOR = '<', NEGATOR = '<=',
RESTRICT = contsel, JOIN = contjoinsel
);
-- Availability: 1.5.0
CREATE OPERATOR CLASS btree_geography_ops
DEFAULT FOR TYPE geography USING btree AS
OPERATOR 1 < ,
OPERATOR 2 <= ,
OPERATOR 3 = ,
OPERATOR 4 >= ,
OPERATOR 5 > ,
FUNCTION 1 geography_cmp (geography, geography);
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Export Functions
-- Availability: 1.5.0
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
--
-- SVG OUTPUT
--
-- Changed 2.0.0 to use default args and named args
CREATE OR REPLACE FUNCTION ST_AsSVG(geog geography, rel integer DEFAULT 0, maxdecimaldigits integer DEFAULT 15)
RETURNS text
AS 'MODULE_PATHNAME','geography_as_svg'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_AsSVG(text)
RETURNS text AS
$$ SELECT @extschema@.ST_AsSVG($1::@extschema@.geometry,0,15); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
--
-- GML OUTPUT
--
-- ST_AsGML(version, geography, precision, option, prefix, id)
-- Changed: 3.0.0 to bind directly to C
-- Changed: 2.0.0 to use default args and allow named args
-- Changed: 2.1.0 enhance to allow id value
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_AsGML(version integer, geog geography, maxdecimaldigits integer DEFAULT 15, options integer DEFAULT 0, nprefix text DEFAULT 'gml', id text DEFAULT '')
RETURNS text
AS 'MODULE_PATHNAME','geography_as_gml'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
CREATE OR REPLACE FUNCTION ST_AsGML(geog geography, maxdecimaldigits integer DEFAULT 15, options integer DEFAULT 0, nprefix text DEFAULT 'gml', id text DEFAULT '')
RETURNS text
AS 'MODULE_PATHNAME','geography_as_gml'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
-- Change 2.0.0 to use base function
CREATE OR REPLACE FUNCTION ST_AsGML(text)
RETURNS text AS
$$ SELECT @extschema@._ST_AsGML(2,$1::@extschema@.geometry,15,0, NULL, NULL); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
--
-- KML OUTPUT
--
-- AsKML(geography,precision)
-- Changed: 2.0.0 to use default args and named args
-- Replaces ST_AsKML(geography, integer) deprecated in 2.0.0
CREATE OR REPLACE FUNCTION ST_AsKML(geog geography, maxdecimaldigits integer DEFAULT 15, nprefix text DEFAULT '')
RETURNS text
AS 'MODULE_PATHNAME','geography_as_kml'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
-- Deprecated 2.0.0
CREATE OR REPLACE FUNCTION ST_AsKML(text)
RETURNS text AS
$$ SELECT @extschema@.ST_AsKML($1::@extschema@.geometry, 15); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
--
-- GeoJson Output
--
CREATE OR REPLACE FUNCTION ST_AsGeoJson(geog geography, maxdecimaldigits integer DEFAULT 9, options integer DEFAULT 0)
RETURNS text
AS 'MODULE_PATHNAME','geography_as_geojson'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
-- Deprecated in 2.0.0
CREATE OR REPLACE FUNCTION ST_AsGeoJson(text)
RETURNS text AS
$$ SELECT @extschema@.ST_AsGeoJson($1::@extschema@.geometry, 9, 0); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Measurement Functions
-- Availability: 1.5.0
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
CREATE OR REPLACE FUNCTION ST_Distance(geog1 geography, geog2 geography, use_spheroid boolean DEFAULT true)
RETURNS float8
AS 'MODULE_PATHNAME','geography_distance'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Distance(text, text)
RETURNS float8 AS
$$ SELECT @extschema@.ST_Distance($1::@extschema@.geometry, $2::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Only expands the bounding box, the actual geometry will remain unchanged, use with care.
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_Expand(geography, float8)
RETURNS geography
AS 'MODULE_PATHNAME','geography_expand'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Distance/DWithin testing functions for cached operations.
-- For developer/tester use only.
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Calculate the distance in geographics *without* using the caching code line or tree code
CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography, float8, boolean)
RETURNS float8
AS 'MODULE_PATHNAME','geography_distance_uncached'
LANGUAGE 'c' IMMUTABLE STRICT
_COST_HIGH;
-- Calculate the distance in geographics *without* using the caching code line or tree code
CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography, boolean)
RETURNS float8
AS 'SELECT @extschema@._ST_DistanceUnCached($1, $2, 0.0, $3)'
LANGUAGE 'sql' IMMUTABLE STRICT;
-- Calculate the distance in geographics *without* using the caching code line or tree code
CREATE OR REPLACE FUNCTION _ST_DistanceUnCached(geography, geography)
RETURNS float8
AS 'SELECT @extschema@._ST_DistanceUnCached($1, $2, 0.0, true)'
LANGUAGE 'sql' IMMUTABLE STRICT;
-- Calculate the distance in geographics using the circular tree code, but
-- *without* using the caching code line
CREATE OR REPLACE FUNCTION _ST_DistanceTree(geography, geography, float8, boolean)
RETURNS float8
AS 'MODULE_PATHNAME','geography_distance_tree'
LANGUAGE 'c' IMMUTABLE STRICT
_COST_HIGH;
-- Calculate the distance in geographics using the circular tree code, but
-- *without* using the caching code line
CREATE OR REPLACE FUNCTION _ST_DistanceTree(geography, geography)
RETURNS float8
AS 'SELECT @extschema@._ST_DistanceTree($1, $2, 0.0, true)'
LANGUAGE 'sql' IMMUTABLE STRICT;
-- Calculate the dwithin relation *without* using the caching code line or tree code
CREATE OR REPLACE FUNCTION _ST_DWithinUnCached(geography, geography, float8, boolean)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_dwithin_uncached'
LANGUAGE 'c' IMMUTABLE STRICT
_COST_HIGH;
-- Calculate the dwithin relation *without* using the caching code line or tree code
CREATE OR REPLACE FUNCTION _ST_DWithinUnCached(geography, geography, float8)
RETURNS boolean
AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@._ST_Expand($1,$3) AND @extschema@._ST_DWithinUnCached($1, $2, $3, true)'
LANGUAGE 'sql' IMMUTABLE;
-- ---------- ---------- ---------- ---------- ---------- ---------- ----------
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Area(geog geography, use_spheroid boolean DEFAULT true)
RETURNS float8
AS 'MODULE_PATHNAME','geography_area'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Area(text)
RETURNS float8 AS
$$ SELECT @extschema@.ST_Area($1::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Length(geog geography, use_spheroid boolean DEFAULT true)
RETURNS float8
AS 'MODULE_PATHNAME','geography_length'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Length(text)
RETURNS float8 AS
$$ SELECT @extschema@.ST_Length($1::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_Project(geog geography, distance float8, azimuth float8)
RETURNS geography
AS 'MODULE_PATHNAME','geography_project'
LANGUAGE 'c' IMMUTABLE PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_Azimuth(geog1 geography, geog2 geography)
RETURNS float8
AS 'MODULE_PATHNAME','geography_azimuth'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_Perimeter(geog geography, use_spheroid boolean DEFAULT true)
RETURNS float8
AS 'MODULE_PATHNAME','geography_perimeter'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_PointOutside(geography)
RETURNS geography
AS 'MODULE_PATHNAME','geography_point_outside'
LANGUAGE 'c' IMMUTABLE STRICT
_COST_DEFAULT;
-- Availability: 2.1.0
CREATE OR REPLACE FUNCTION ST_Segmentize(geog geography, max_segment_length float8)
RETURNS geography
AS 'MODULE_PATHNAME','geography_segmentize'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_BestSRID(geography, geography)
RETURNS integer
AS 'MODULE_PATHNAME','geography_bestsrid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_BestSRID(geography)
RETURNS integer
AS 'MODULE_PATHNAME','geography_bestsrid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8)
RETURNS geography
AS 'SELECT @extschema@.geography(@extschema@.ST_Transform(@extschema@.ST_Buffer(@extschema@.ST_Transform(@extschema@.geometry($1), @extschema@._ST_BestSRID($1)), $2), 4326))'
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.3.x
CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8, integer)
RETURNS geography
AS 'SELECT @extschema@.geography(@extschema@.ST_Transform(@extschema@.ST_Buffer(@extschema@.ST_Transform(@extschema@.geometry($1), @extschema@._ST_BestSRID($1)), $2, $3), 4326))'
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.3.x
CREATE OR REPLACE FUNCTION ST_Buffer(geography, float8, text)
RETURNS geography
AS 'SELECT @extschema@.geography(@extschema@.ST_Transform(@extschema@.ST_Buffer(@extschema@.ST_Transform(@extschema@.geometry($1), @extschema@._ST_BestSRID($1)), $2, $3), 4326))'
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Buffer(text, float8)
RETURNS geometry AS
$$ SELECT @extschema@.ST_Buffer($1::@extschema@.geometry, $2); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.3.x
CREATE OR REPLACE FUNCTION ST_Buffer(text, float8, integer)
RETURNS geometry AS
$$ SELECT @extschema@.ST_Buffer($1::@extschema@.geometry, $2, $3); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.3.x
CREATE OR REPLACE FUNCTION ST_Buffer(text, float8, text)
RETURNS geometry AS
$$ SELECT @extschema@.ST_Buffer($1::@extschema@.geometry, $2, $3); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Intersection(geography, geography)
RETURNS geography
AS 'SELECT @extschema@.geography(@extschema@.ST_Transform(@extschema@.ST_Intersection(@extschema@.ST_Transform(@extschema@.geometry($1), @extschema@._ST_BestSRID($1, $2)), @extschema@.ST_Transform(@extschema@.geometry($2), @extschema@._ST_BestSRID($1, $2))), 4326))'
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Intersection(text, text)
RETURNS geometry AS
$$ SELECT @extschema@.ST_Intersection($1::@extschema@.geometry, $2::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_AsBinary(geography)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_asBinary'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_AsBinary(geography, text)
RETURNS bytea
AS 'MODULE_PATHNAME','LWGEOM_asBinary'
LANGUAGE 'c' IMMUTABLE PARALLEL SAFE
_COST_LOW;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_AsEWKT(geography)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
CREATE OR REPLACE FUNCTION ST_AsEWKT(geography, integer)
RETURNS TEXT
AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.0.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_AsEWKT(text)
RETURNS text AS
$$ SELECT @extschema@.ST_AsEWKT($1::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION GeometryType(geography)
RETURNS text
AS 'MODULE_PATHNAME', 'LWGEOM_getTYPE'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE;
-- Availability: 2.0.0
CREATE OR REPLACE FUNCTION ST_Summary(geography)
RETURNS text
AS 'MODULE_PATHNAME', 'LWGEOM_summary'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 2.1.0
CREATE OR REPLACE FUNCTION ST_GeoHash(geog geography, maxchars integer DEFAULT 0)
RETURNS TEXT
AS 'MODULE_PATHNAME', 'ST_GeoHash'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_SRID(geog geography)
RETURNS integer
AS 'MODULE_PATHNAME', 'LWGEOM_get_srid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 2.2.0
CREATE OR REPLACE FUNCTION ST_SetSRID(geog geography, srid integer)
RETURNS geography
AS 'MODULE_PATHNAME', 'LWGEOM_set_srid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_LOW;
-- Availability: 2.4.0
CREATE OR REPLACE FUNCTION ST_Centroid(geography, use_spheroid boolean DEFAULT true)
RETURNS geography
AS 'MODULE_PATHNAME','geography_centroid'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_MEDIUM;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Centroid(text)
RETURNS geometry AS
$$ SELECT @extschema@.ST_Centroid($1::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE STRICT PARALLEL SAFE;
-----------------------------------------------------------------------------
-- Only implemented for polygon-over-point
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_Covers(geog1 geography, geog2 geography)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_covers'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Stop calculation and return immediately once distance is less than tolerance
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION _ST_DWithin(geog1 geography, geog2 geography, tolerance float8, use_spheroid boolean DEFAULT true)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_dwithin'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Only implemented for polygon-over-point
-- Availability: 3.0.0
CREATE OR REPLACE FUNCTION _ST_CoveredBy(geog1 geography, geog2 geography)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_coveredby'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Covers(geog1 geography, geog2 geography)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_covers'
SUPPORT postgis_index_supportfn
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0
-- Changed: 3.0.0 to use default and named args
-- Replaces ST_DWithin(geography, geography, float8) deprecated in 3.0.0
CREATE OR REPLACE FUNCTION ST_DWithin(geog1 geography, geog2 geography, tolerance float8, use_spheroid boolean DEFAULT true)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_dwithin'
SUPPORT postgis_index_supportfn
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 3.0.0
CREATE OR REPLACE FUNCTION ST_CoveredBy(geog1 geography, geog2 geography)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_coveredby'
SUPPORT postgis_index_supportfn
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION ST_Intersects(geog1 geography, geog2 geography)
RETURNS boolean
AS 'MODULE_PATHNAME','geography_intersects'
SUPPORT postgis_index_supportfn
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE
_COST_HIGH;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Covers(text, text)
RETURNS boolean AS
$$ SELECT @extschema@.ST_Covers($1::@extschema@.geometry, $2::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_CoveredBy(text, text)
RETURNS boolean AS
$$ SELECT @extschema@.ST_CoveredBy($1::@extschema@.geometry, $2::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_DWithin(text, text, float8)
RETURNS boolean AS
$$ SELECT @extschema@.ST_DWithin($1::@extschema@.geometry, $2::@extschema@.geometry, $3); $$
LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
-- Availability: 1.5.0 - this is just a hack to prevent unknown from causing ambiguous name because of geography
CREATE OR REPLACE FUNCTION ST_Intersects(text, text)
RETURNS boolean AS
$$ SELECT @extschema@.ST_Intersects($1::@extschema@.geometry, $2::@extschema@.geometry); $$
LANGUAGE 'sql' IMMUTABLE PARALLEL SAFE;
-----------------------------------------------------------------------------