| 1 | -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|---|
| 2 | --
|
|---|
| 3 | --
|
|---|
| 4 | -- PostGIS - Spatial Types for PostgreSQL
|
|---|
| 5 | -- http://postgis.net
|
|---|
| 6 | -- Copyright 2001-2003 Refractions Research Inc.
|
|---|
| 7 | --
|
|---|
| 8 | -- This is free software; you can redistribute and/or modify it under
|
|---|
| 9 | -- the terms of the GNU General Public Licence. See the COPYING file.
|
|---|
| 10 | --
|
|---|
| 11 | -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|---|
| 12 | --
|
|---|
| 13 | -- WARNING: Any change in this file must be evaluated for compatibility.
|
|---|
| 14 | -- Changes cleanly handled by postgis_upgrade.sql are fine,
|
|---|
| 15 | -- other changes will require a bump in Major version.
|
|---|
| 16 | -- Currently only function replaceble by CREATE OR REPLACE
|
|---|
| 17 | -- are cleanly handled.
|
|---|
| 18 | --
|
|---|
| 19 | -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|---|
| 20 |
|
|---|
| 21 | #include "sqldefines.h"
|
|---|
| 22 |
|
|---|
| 23 | -- INSTALL VERSION: POSTGIS_LIB_VERSION
|
|---|
| 24 |
|
|---|
| 25 | BEGIN;
|
|---|
| 26 | SET LOCAL client_min_messages TO warning;
|
|---|
| 27 |
|
|---|
| 28 | DO $$
|
|---|
| 29 | DECLARE
|
|---|
| 30 | pgver text;
|
|---|
| 31 | BEGIN
|
|---|
| 32 | SELECT substring(version(), 'PostgreSQL ([0-9\.]+)') INTO pgver;
|
|---|
| 33 |
|
|---|
| 34 | IF POSTGIS_PGSQL_VERSION::text != ( SELECT CASE
|
|---|
| 35 | WHEN split_part(s,'.',1)::integer > 9
|
|---|
| 36 | THEN split_part(s,'.',1) || '0'
|
|---|
| 37 | ELSE
|
|---|
| 38 | split_part(s,'.', 1) || split_part(s,'.', 2)
|
|---|
| 39 | END
|
|---|
| 40 | FROM substring(version(), 'PostgreSQL ([0-9\.]+)') AS s )
|
|---|
| 41 | THEN
|
|---|
| 42 | RAISE EXCEPTION 'PostGIS built for PostgreSQL % cannot be loaded in PostgreSQL %',
|
|---|
| 43 | POSTGIS_PGSQL_HR_VERSION, pgver;
|
|---|
| 44 | END IF;
|
|---|
| 45 | END;
|
|---|
| 46 | $$;
|
|---|
| 47 |
|
|---|
| 48 |
|
|---|
| 49 | -- Check that no other postgis is installed
|
|---|
| 50 | DO $$
|
|---|
| 51 | DECLARE
|
|---|
| 52 | rec RECORD;
|
|---|
| 53 | BEGIN
|
|---|
| 54 | FOR rec IN
|
|---|
| 55 | SELECT n.nspname, p.proname FROM pg_proc p, pg_namespace n
|
|---|
| 56 | WHERE p.proname = 'postgis_version'
|
|---|
| 57 | AND p.pronamespace = n.oid
|
|---|
| 58 | LOOP
|
|---|
| 59 | RAISE EXCEPTION 'PostGIS is already installed in schema ''%''', rec.nspname;
|
|---|
| 60 | END LOOP;
|
|---|
| 61 | END
|
|---|
| 62 | $$ LANGUAGE 'plpgsql';
|
|---|
| 63 |
|
|---|
| 64 | -- Let the user know about a deprecated signature and its new name, if any
|
|---|
| 65 | CREATE OR REPLACE FUNCTION _postgis_deprecate(oldname text, newname text, version text)
|
|---|
| 66 | RETURNS void AS
|
|---|
| 67 | $$
|
|---|
| 68 | DECLARE
|
|---|
| 69 | curver_text text;
|
|---|
| 70 | BEGIN
|
|---|
| 71 | --
|
|---|
| 72 | -- Raises a NOTICE if it was deprecated in this version,
|
|---|
| 73 | -- a WARNING if in a previous version (only up to minor version checked)
|
|---|
| 74 | --
|
|---|
| 75 | curver_text := POSTGIS_LIB_VERSION;
|
|---|
| 76 | IF split_part(curver_text,'.',1)::int > split_part(version,'.',1)::int OR
|
|---|
| 77 | ( split_part(curver_text,'.',1) = split_part(version,'.',1) AND
|
|---|
| 78 | split_part(curver_text,'.',2) != split_part(version,'.',2) )
|
|---|
| 79 | THEN
|
|---|
| 80 | RAISE WARNING '% signature was deprecated in %. Please use %', oldname, version, newname;
|
|---|
| 81 | ELSE
|
|---|
| 82 | RAISE DEBUG '% signature was deprecated in %. Please use %', oldname, version, newname;
|
|---|
| 83 | END IF;
|
|---|
| 84 | END;
|
|---|
| 85 | $$ LANGUAGE 'plpgsql' IMMUTABLE STRICT _COST_MEDIUM;
|
|---|
| 86 |
|
|---|
| 87 | -------------------------------------------------------------------
|
|---|
| 88 | -- SPHEROID TYPE
|
|---|
| 89 | -------------------------------------------------------------------
|
|---|
| 90 | CREATE OR REPLACE FUNCTION spheroid_in(cstring)
|
|---|
| 91 | RETURNS spheroid
|
|---|
| 92 | AS 'MODULE_PATHNAME','ellipsoid_in'
|
|---|
| 93 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 94 |
|
|---|
| 95 | CREATE OR REPLACE FUNCTION spheroid_out(spheroid)
|
|---|
| 96 | RETURNS cstring
|
|---|
| 97 | AS 'MODULE_PATHNAME','ellipsoid_out'
|
|---|
| 98 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 99 |
|
|---|
| 100 | -- Availability: 0.5.0
|
|---|
| 101 | CREATE TYPE spheroid (
|
|---|
| 102 | alignment = double,
|
|---|
| 103 | internallength = 65,
|
|---|
| 104 | input = spheroid_in,
|
|---|
| 105 | output = spheroid_out
|
|---|
| 106 | );
|
|---|
| 107 |
|
|---|
| 108 | -------------------------------------------------------------------
|
|---|
| 109 | -- GEOMETRY TYPE (lwgeom)
|
|---|
| 110 | -------------------------------------------------------------------
|
|---|
| 111 | CREATE OR REPLACE FUNCTION geometry_in(cstring)
|
|---|
| 112 | RETURNS geometry
|
|---|
| 113 | AS 'MODULE_PATHNAME','LWGEOM_in'
|
|---|
| 114 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 115 |
|
|---|
| 116 | CREATE OR REPLACE FUNCTION geometry_out(geometry)
|
|---|
| 117 | RETURNS cstring
|
|---|
| 118 | AS 'MODULE_PATHNAME','LWGEOM_out'
|
|---|
| 119 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 120 |
|
|---|
| 121 | -- Availability: 2.0.0
|
|---|
| 122 | CREATE OR REPLACE FUNCTION geometry_typmod_in(cstring[])
|
|---|
| 123 | RETURNS integer
|
|---|
| 124 | AS 'MODULE_PATHNAME','geometry_typmod_in'
|
|---|
| 125 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 126 |
|
|---|
| 127 | -- Availability: 2.0.0
|
|---|
| 128 | CREATE OR REPLACE FUNCTION geometry_typmod_out(integer)
|
|---|
| 129 | RETURNS cstring
|
|---|
| 130 | AS 'MODULE_PATHNAME','postgis_typmod_out'
|
|---|
| 131 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 132 |
|
|---|
| 133 | CREATE OR REPLACE FUNCTION geometry_analyze(internal)
|
|---|
| 134 | RETURNS bool
|
|---|
| 135 | AS 'MODULE_PATHNAME', 'gserialized_analyze_nd'
|
|---|
| 136 | LANGUAGE 'c' VOLATILE STRICT;
|
|---|
| 137 |
|
|---|
| 138 | CREATE OR REPLACE FUNCTION geometry_recv(internal)
|
|---|
| 139 | RETURNS geometry
|
|---|
| 140 | AS 'MODULE_PATHNAME','LWGEOM_recv'
|
|---|
| 141 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 142 |
|
|---|
| 143 | CREATE OR REPLACE FUNCTION geometry_send(geometry)
|
|---|
| 144 | RETURNS bytea
|
|---|
| 145 | AS 'MODULE_PATHNAME','LWGEOM_send'
|
|---|
| 146 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 147 |
|
|---|
| 148 | -- Availability: 0.1.0
|
|---|
| 149 | CREATE TYPE geometry (
|
|---|
| 150 | internallength = variable,
|
|---|
| 151 | input = geometry_in,
|
|---|
| 152 | output = geometry_out,
|
|---|
| 153 | send = geometry_send,
|
|---|
| 154 | receive = geometry_recv,
|
|---|
| 155 | typmod_in = geometry_typmod_in,
|
|---|
| 156 | typmod_out = geometry_typmod_out,
|
|---|
| 157 | delimiter = ':',
|
|---|
| 158 | alignment = double,
|
|---|
| 159 | analyze = geometry_analyze,
|
|---|
| 160 | storage = main
|
|---|
| 161 | );
|
|---|
| 162 |
|
|---|
| 163 | -- Availability: 2.0.0
|
|---|
| 164 | -- Special cast for enforcing the typmod restrictions
|
|---|
| 165 | CREATE OR REPLACE FUNCTION geometry(geometry, integer, boolean)
|
|---|
| 166 | RETURNS geometry
|
|---|
| 167 | AS 'MODULE_PATHNAME','geometry_enforce_typmod'
|
|---|
| 168 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 169 |
|
|---|
| 170 | -- Availability: 2.0.0
|
|---|
| 171 | CREATE CAST (geometry AS geometry) WITH FUNCTION geometry(geometry, integer, boolean) AS IMPLICIT;
|
|---|
| 172 |
|
|---|
| 173 | -- Availability: 2.1.0
|
|---|
| 174 | CREATE OR REPLACE FUNCTION geometry(point)
|
|---|
| 175 | RETURNS geometry
|
|---|
| 176 | AS 'MODULE_PATHNAME','point_to_geometry'
|
|---|
| 177 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 178 |
|
|---|
| 179 | -- Availability: 2.1.0
|
|---|
| 180 | CREATE OR REPLACE FUNCTION point(geometry)
|
|---|
| 181 | RETURNS point
|
|---|
| 182 | AS 'MODULE_PATHNAME','geometry_to_point'
|
|---|
| 183 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 184 |
|
|---|
| 185 | -- Availability: 2.1.0
|
|---|
| 186 | CREATE OR REPLACE FUNCTION geometry(path)
|
|---|
| 187 | RETURNS geometry
|
|---|
| 188 | AS 'MODULE_PATHNAME','path_to_geometry'
|
|---|
| 189 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 190 |
|
|---|
| 191 | -- Availability: 2.1.0
|
|---|
| 192 | CREATE OR REPLACE FUNCTION path(geometry)
|
|---|
| 193 | RETURNS path
|
|---|
| 194 | AS 'MODULE_PATHNAME','geometry_to_path'
|
|---|
| 195 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 196 |
|
|---|
| 197 | -- Availability: 2.1.0
|
|---|
| 198 | CREATE OR REPLACE FUNCTION geometry(polygon)
|
|---|
| 199 | RETURNS geometry
|
|---|
| 200 | AS 'MODULE_PATHNAME','polygon_to_geometry'
|
|---|
| 201 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 202 |
|
|---|
| 203 | -- Availability: 2.1.0
|
|---|
| 204 | CREATE OR REPLACE FUNCTION polygon(geometry)
|
|---|
| 205 | RETURNS polygon
|
|---|
| 206 | AS 'MODULE_PATHNAME','geometry_to_polygon'
|
|---|
| 207 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 208 |
|
|---|
| 209 | CREATE CAST (geometry AS point) WITH FUNCTION point(geometry);
|
|---|
| 210 | CREATE CAST (point AS geometry) WITH FUNCTION geometry(point);
|
|---|
| 211 | CREATE CAST (geometry AS path) WITH FUNCTION path(geometry);
|
|---|
| 212 | CREATE CAST (path AS geometry) WITH FUNCTION geometry(path);
|
|---|
| 213 | CREATE CAST (geometry AS polygon) WITH FUNCTION polygon(geometry);
|
|---|
| 214 | CREATE CAST (polygon AS geometry) WITH FUNCTION geometry(polygon);
|
|---|
| 215 |
|
|---|
| 216 | -------------------------------------------------------------------
|
|---|
| 217 | -- BOX3D TYPE
|
|---|
| 218 | -- Point coordinate data access
|
|---|
| 219 | -------------------------------------------
|
|---|
| 220 | -- PostGIS equivalent function: X(geometry)
|
|---|
| 221 | CREATE OR REPLACE FUNCTION ST_X(geometry)
|
|---|
| 222 | RETURNS float8
|
|---|
| 223 | AS 'MODULE_PATHNAME','LWGEOM_x_point'
|
|---|
| 224 | LANGUAGE 'c' IMMUTABLE STRICT
|
|---|
| 225 | _PARALLEL _COST_DEFAULT;
|
|---|
| 226 |
|
|---|
| 227 | -- PostGIS equivalent function: Y(geometry)
|
|---|
| 228 | CREATE OR REPLACE FUNCTION ST_Y(geometry)
|
|---|
| 229 | RETURNS float8
|
|---|
| 230 | AS 'MODULE_PATHNAME','LWGEOM_y_point'
|
|---|
| 231 | LANGUAGE 'c' IMMUTABLE STRICT
|
|---|
| 232 | _PARALLEL _COST_DEFAULT;
|
|---|
| 233 |
|
|---|
| 234 | -- Availability: 1.2.2
|
|---|
| 235 | CREATE OR REPLACE FUNCTION ST_Z(geometry)
|
|---|
| 236 | RETURNS float8
|
|---|
| 237 | AS 'MODULE_PATHNAME','LWGEOM_z_point'
|
|---|
| 238 | LANGUAGE 'c' IMMUTABLE STRICT
|
|---|
| 239 | _PARALLEL _COST_DEFAULT;
|
|---|
| 240 |
|
|---|
| 241 | -- Availability: 1.2.2
|
|---|
| 242 | CREATE OR REPLACE FUNCTION ST_M(geometry)
|
|---|
| 243 | RETURNS float8
|
|---|
| 244 | AS 'MODULE_PATHNAME','LWGEOM_m_point'
|
|---|
| 245 | LANGUAGE 'c' IMMUTABLE STRICT
|
|---|
| 246 | _PARALLEL _COST_DEFAULT;
|
|---|
| 247 |
|
|---|
| 248 | -------------------------------------------------------------------
|
|---|
| 249 |
|
|---|
| 250 | CREATE OR REPLACE FUNCTION box3d_in(cstring)
|
|---|
| 251 | RETURNS box3d
|
|---|
| 252 | AS 'MODULE_PATHNAME', 'BOX3D_in'
|
|---|
| 253 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 254 |
|
|---|
| 255 | CREATE OR REPLACE FUNCTION box3d_out(box3d)
|
|---|
| 256 | RETURNS cstring
|
|---|
| 257 | AS 'MODULE_PATHNAME', 'BOX3D_out'
|
|---|
| 258 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 259 |
|
|---|
| 260 | -- Availability: 0.1.0
|
|---|
| 261 | CREATE TYPE box3d (
|
|---|
| 262 | alignment = double,
|
|---|
| 263 | internallength = 52,
|
|---|
| 264 | input = box3d_in,
|
|---|
| 265 | output = box3d_out
|
|---|
| 266 | );
|
|---|
| 267 |
|
|---|
| 268 | -----------------------------------------------------------------------
|
|---|
| 269 | -- BOX2D
|
|---|
| 270 | -----------------------------------------------------------------------
|
|---|
| 271 |
|
|---|
| 272 | CREATE OR REPLACE FUNCTION box2d_in(cstring)
|
|---|
| 273 | RETURNS box2d
|
|---|
| 274 | AS 'MODULE_PATHNAME','BOX2D_in'
|
|---|
| 275 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 276 |
|
|---|
| 277 | CREATE OR REPLACE FUNCTION box2d_out(box2d)
|
|---|
| 278 | RETURNS cstring
|
|---|
| 279 | AS 'MODULE_PATHNAME','BOX2D_out'
|
|---|
| 280 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 281 |
|
|---|
| 282 | -- Availability: 0.8.2
|
|---|
| 283 | CREATE TYPE box2d (
|
|---|
| 284 | internallength = 65,
|
|---|
| 285 | input = box2d_in,
|
|---|
| 286 | output = box2d_out,
|
|---|
| 287 | storage = plain
|
|---|
| 288 | );
|
|---|
| 289 |
|
|---|
| 290 | -------------------------------------------------------------------
|
|---|
| 291 | -- BOX2DF TYPE (INTERNAL ONLY)
|
|---|
| 292 | -------------------------------------------------------------------
|
|---|
| 293 | --
|
|---|
| 294 | -- Box2Df type is used by the GiST index bindings.
|
|---|
| 295 | -- In/out functions are stubs, as all access should be internal.
|
|---|
| 296 | ---
|
|---|
| 297 | -- Availability: 2.0.0
|
|---|
| 298 | CREATE OR REPLACE FUNCTION box2df_in(cstring)
|
|---|
| 299 | RETURNS box2df
|
|---|
| 300 | AS 'MODULE_PATHNAME','box2df_in'
|
|---|
| 301 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 302 |
|
|---|
| 303 | -- Availability: 2.0.0
|
|---|
| 304 | CREATE OR REPLACE FUNCTION box2df_out(box2df)
|
|---|
| 305 | RETURNS cstring
|
|---|
| 306 | AS 'MODULE_PATHNAME','box2df_out'
|
|---|
| 307 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 308 |
|
|---|
| 309 | -- Availability: 2.0.0
|
|---|
| 310 | CREATE TYPE box2df (
|
|---|
| 311 | internallength = 16,
|
|---|
| 312 | input = box2df_in,
|
|---|
| 313 | output = box2df_out,
|
|---|
| 314 | storage = plain,
|
|---|
| 315 | alignment = double
|
|---|
| 316 | );
|
|---|
| 317 |
|
|---|
| 318 | -------------------------------------------------------------------
|
|---|
| 319 | -- GIDX TYPE (INTERNAL ONLY)
|
|---|
| 320 | -------------------------------------------------------------------
|
|---|
| 321 | --
|
|---|
| 322 | -- GIDX type is used by the N-D and GEOGRAPHY GiST index bindings.
|
|---|
| 323 | -- In/out functions are stubs, as all access should be internal.
|
|---|
| 324 | ---
|
|---|
| 325 |
|
|---|
| 326 | -- Availability: 1.5.0
|
|---|
| 327 | CREATE OR REPLACE FUNCTION gidx_in(cstring)
|
|---|
| 328 | RETURNS gidx
|
|---|
| 329 | AS 'MODULE_PATHNAME','gidx_in'
|
|---|
| 330 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 331 |
|
|---|
| 332 | -- Availability: 1.5.0
|
|---|
| 333 | CREATE OR REPLACE FUNCTION gidx_out(gidx)
|
|---|
| 334 | RETURNS cstring
|
|---|
| 335 | AS 'MODULE_PATHNAME','gidx_out'
|
|---|
| 336 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 337 |
|
|---|
| 338 | -- Availability: 1.5.0
|
|---|
| 339 | CREATE TYPE gidx (
|
|---|
| 340 | internallength = variable,
|
|---|
| 341 | input = gidx_in,
|
|---|
| 342 | output = gidx_out,
|
|---|
| 343 | storage = plain,
|
|---|
| 344 | alignment = double
|
|---|
| 345 | );
|
|---|
| 346 |
|
|---|
| 347 | -------------------------------------------------------------------
|
|---|
| 348 | -- BTREE indexes
|
|---|
| 349 | -------------------------------------------------------------------
|
|---|
| 350 | CREATE OR REPLACE FUNCTION geometry_lt(geom1 geometry, geom2 geometry)
|
|---|
| 351 | RETURNS bool
|
|---|
| 352 | AS 'MODULE_PATHNAME', 'lwgeom_lt'
|
|---|
| 353 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 354 |
|
|---|
| 355 | CREATE OR REPLACE FUNCTION geometry_le(geom1 geometry, geom2 geometry)
|
|---|
| 356 | RETURNS bool
|
|---|
| 357 | AS 'MODULE_PATHNAME', 'lwgeom_le'
|
|---|
| 358 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 359 |
|
|---|
| 360 | CREATE OR REPLACE FUNCTION geometry_gt(geom1 geometry, geom2 geometry)
|
|---|
| 361 | RETURNS bool
|
|---|
| 362 | AS 'MODULE_PATHNAME', 'lwgeom_gt'
|
|---|
| 363 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 364 |
|
|---|
| 365 | CREATE OR REPLACE FUNCTION geometry_ge(geom1 geometry, geom2 geometry)
|
|---|
| 366 | RETURNS bool
|
|---|
| 367 | AS 'MODULE_PATHNAME', 'lwgeom_ge'
|
|---|
| 368 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 369 |
|
|---|
| 370 | CREATE OR REPLACE FUNCTION geometry_eq(geom1 geometry, geom2 geometry)
|
|---|
| 371 | RETURNS bool
|
|---|
| 372 | AS 'MODULE_PATHNAME', 'lwgeom_eq'
|
|---|
| 373 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 374 |
|
|---|
| 375 | CREATE OR REPLACE FUNCTION geometry_cmp(geom1 geometry, geom2 geometry)
|
|---|
| 376 | RETURNS integer
|
|---|
| 377 | AS 'MODULE_PATHNAME', 'lwgeom_cmp'
|
|---|
| 378 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 379 |
|
|---|
| 380 | -- Availability: 3.0.0
|
|---|
| 381 | CREATE OR REPLACE FUNCTION geometry_sortsupport(internal)
|
|---|
| 382 | RETURNS void
|
|---|
| 383 | AS 'MODULE_PATHNAME', 'lwgeom_sortsupport'
|
|---|
| 384 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 385 |
|
|---|
| 386 | --
|
|---|
| 387 | -- Sorting operators for Btree
|
|---|
| 388 | --
|
|---|
| 389 |
|
|---|
| 390 | -- Availability: 0.9.0
|
|---|
| 391 | CREATE OPERATOR < (
|
|---|
| 392 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_lt,
|
|---|
| 393 | COMMUTATOR = '>', NEGATOR = '>=',
|
|---|
| 394 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 395 | );
|
|---|
| 396 |
|
|---|
| 397 | -- Availability: 0.9.0
|
|---|
| 398 | CREATE OPERATOR <= (
|
|---|
| 399 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_le,
|
|---|
| 400 | COMMUTATOR = '>=', NEGATOR = '>',
|
|---|
| 401 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 402 | );
|
|---|
| 403 |
|
|---|
| 404 | -- Availability: 0.9.0
|
|---|
| 405 | CREATE OPERATOR = (
|
|---|
| 406 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_eq,
|
|---|
| 407 | COMMUTATOR = '=', -- we might implement a faster negator here
|
|---|
| 408 | RESTRICT = contsel, JOIN = contjoinsel, HASHES, MERGES
|
|---|
| 409 | );
|
|---|
| 410 |
|
|---|
| 411 | -- Availability: 0.9.0
|
|---|
| 412 | CREATE OPERATOR >= (
|
|---|
| 413 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_ge,
|
|---|
| 414 | COMMUTATOR = '<=', NEGATOR = '<',
|
|---|
| 415 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 416 | );
|
|---|
| 417 |
|
|---|
| 418 | -- Availability: 0.9.0
|
|---|
| 419 | CREATE OPERATOR > (
|
|---|
| 420 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_gt,
|
|---|
| 421 | COMMUTATOR = '<', NEGATOR = '<=',
|
|---|
| 422 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 423 | );
|
|---|
| 424 |
|
|---|
| 425 | -- Availability: 0.9.0
|
|---|
| 426 | CREATE OPERATOR CLASS btree_geometry_ops
|
|---|
| 427 | DEFAULT FOR TYPE geometry USING btree AS
|
|---|
| 428 | OPERATOR 1 < ,
|
|---|
| 429 | OPERATOR 2 <= ,
|
|---|
| 430 | OPERATOR 3 = ,
|
|---|
| 431 | OPERATOR 4 >= ,
|
|---|
| 432 | OPERATOR 5 > ,
|
|---|
| 433 | FUNCTION 1 geometry_cmp (geom1 geometry, geom2 geometry),
|
|---|
| 434 | -- Availability: 3.0.0
|
|---|
| 435 | FUNCTION 2 geometry_sortsupport(internal);
|
|---|
| 436 |
|
|---|
| 437 | --
|
|---|
| 438 | -- Sorting operators for Btree
|
|---|
| 439 | --
|
|---|
| 440 |
|
|---|
| 441 | -- Availability: 2.5.0
|
|---|
| 442 | CREATE OR REPLACE FUNCTION geometry_hash(geometry)
|
|---|
| 443 | RETURNS integer
|
|---|
| 444 | AS 'MODULE_PATHNAME','lwgeom_hash'
|
|---|
| 445 | LANGUAGE 'c' STRICT IMMUTABLE _PARALLEL;
|
|---|
| 446 |
|
|---|
| 447 | -- Availability: 2.5.0
|
|---|
| 448 | CREATE OPERATOR CLASS hash_geometry_ops
|
|---|
| 449 | DEFAULT FOR TYPE geometry USING hash AS
|
|---|
| 450 | OPERATOR 1 = ,
|
|---|
| 451 | FUNCTION 1 geometry_hash(geometry);
|
|---|
| 452 |
|
|---|
| 453 | -----------------------------------------------------------------------------
|
|---|
| 454 | -- GiST 2D GEOMETRY-over-GSERIALIZED INDEX
|
|---|
| 455 | -----------------------------------------------------------------------------
|
|---|
| 456 |
|
|---|
| 457 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 458 | -- GiST Support Functions
|
|---|
| 459 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 460 |
|
|---|
| 461 | -- Availability: 2.0.0
|
|---|
| 462 | CREATE OR REPLACE FUNCTION geometry_gist_distance_2d(internal,geometry,int4)
|
|---|
| 463 | RETURNS float8
|
|---|
| 464 | AS 'MODULE_PATHNAME' ,'gserialized_gist_distance_2d'
|
|---|
| 465 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 466 |
|
|---|
| 467 | -- Availability: 2.0.0
|
|---|
| 468 | CREATE OR REPLACE FUNCTION geometry_gist_consistent_2d(internal,geometry,int4)
|
|---|
| 469 | RETURNS bool
|
|---|
| 470 | AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent_2d'
|
|---|
| 471 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 472 |
|
|---|
| 473 | -- Availability: 2.0.0
|
|---|
| 474 | CREATE OR REPLACE FUNCTION geometry_gist_compress_2d(internal)
|
|---|
| 475 | RETURNS internal
|
|---|
| 476 | AS 'MODULE_PATHNAME','gserialized_gist_compress_2d'
|
|---|
| 477 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 478 |
|
|---|
| 479 | -- Availability: 2.0.0
|
|---|
| 480 | CREATE OR REPLACE FUNCTION geometry_gist_penalty_2d(internal,internal,internal)
|
|---|
| 481 | RETURNS internal
|
|---|
| 482 | AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty_2d'
|
|---|
| 483 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 484 |
|
|---|
| 485 | -- Availability: 2.0.0
|
|---|
| 486 | CREATE OR REPLACE FUNCTION geometry_gist_picksplit_2d(internal, internal)
|
|---|
| 487 | RETURNS internal
|
|---|
| 488 | AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit_2d'
|
|---|
| 489 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 490 |
|
|---|
| 491 | -- Availability: 2.0.0
|
|---|
| 492 | CREATE OR REPLACE FUNCTION geometry_gist_union_2d(bytea, internal)
|
|---|
| 493 | RETURNS internal
|
|---|
| 494 | AS 'MODULE_PATHNAME' ,'gserialized_gist_union_2d'
|
|---|
| 495 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 496 |
|
|---|
| 497 | -- Availability: 2.0.0
|
|---|
| 498 | CREATE OR REPLACE FUNCTION geometry_gist_same_2d(geom1 geometry, geom2 geometry, internal)
|
|---|
| 499 | RETURNS internal
|
|---|
| 500 | AS 'MODULE_PATHNAME' ,'gserialized_gist_same_2d'
|
|---|
| 501 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 502 |
|
|---|
| 503 | -- Availability: 2.0.0
|
|---|
| 504 | CREATE OR REPLACE FUNCTION geometry_gist_decompress_2d(internal)
|
|---|
| 505 | RETURNS internal
|
|---|
| 506 | AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress_2d'
|
|---|
| 507 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 508 |
|
|---|
| 509 | -----------------------------------------------------------------------------
|
|---|
| 510 |
|
|---|
| 511 | -- Availability: 2.1.0
|
|---|
| 512 | -- Given a table, column and query geometry, returns the estimate of what proportion
|
|---|
| 513 | -- of the table would be returned by a query using the &&/&&& operators. The mode
|
|---|
| 514 | -- changes whether the estimate is in x/y only or in all available dimensions.
|
|---|
| 515 | CREATE OR REPLACE FUNCTION _postgis_selectivity(tbl regclass, att_name text, geom geometry, mode text default '2')
|
|---|
| 516 | RETURNS float8
|
|---|
| 517 | AS 'MODULE_PATHNAME', '_postgis_gserialized_sel'
|
|---|
| 518 | LANGUAGE 'c' STRICT _PARALLEL;
|
|---|
| 519 |
|
|---|
| 520 | -- Availability: 2.1.0
|
|---|
| 521 | -- Given a two tables and columns, returns estimate of the proportion of rows
|
|---|
| 522 | -- a &&/&&& join will return relative to the number of rows an unconstrained
|
|---|
| 523 | -- table join would return. Mode flips result between evaluation in x/y only
|
|---|
| 524 | -- and evaluation in all available dimensions.
|
|---|
| 525 | CREATE OR REPLACE FUNCTION _postgis_join_selectivity(regclass, text, regclass, text, text default '2')
|
|---|
| 526 | RETURNS float8
|
|---|
| 527 | AS 'MODULE_PATHNAME', '_postgis_gserialized_joinsel'
|
|---|
| 528 | LANGUAGE 'c' STRICT _PARALLEL;
|
|---|
| 529 |
|
|---|
| 530 | -- Availability: 2.1.0
|
|---|
| 531 | -- Given a table and a column, returns the statistics information stored by
|
|---|
| 532 | -- PostgreSQL, in a JSON text form. Mode determines whether the 2D statistics
|
|---|
| 533 | -- or the ND statistics are returned.
|
|---|
| 534 | CREATE OR REPLACE FUNCTION _postgis_stats(tbl regclass, att_name text, text default '2')
|
|---|
| 535 | RETURNS text
|
|---|
| 536 | AS 'MODULE_PATHNAME', '_postgis_gserialized_stats'
|
|---|
| 537 | LANGUAGE 'c' STRICT _PARALLEL;
|
|---|
| 538 |
|
|---|
| 539 | -- Availability: 2.5.0
|
|---|
| 540 | -- Given a table and a column, returns the extent of all boxes in the
|
|---|
| 541 | -- first page of the index (the head of the index)
|
|---|
| 542 | CREATE OR REPLACE FUNCTION _postgis_index_extent(tbl regclass, col text)
|
|---|
| 543 | RETURNS box2d
|
|---|
| 544 | AS 'MODULE_PATHNAME','_postgis_gserialized_index_extent'
|
|---|
| 545 | LANGUAGE 'c' STABLE STRICT;
|
|---|
| 546 |
|
|---|
| 547 | -- Availability: 2.1.0
|
|---|
| 548 | CREATE OR REPLACE FUNCTION gserialized_gist_sel_2d (internal, oid, internal, int4)
|
|---|
| 549 | RETURNS float8
|
|---|
| 550 | AS 'MODULE_PATHNAME', 'gserialized_gist_sel_2d'
|
|---|
| 551 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 552 |
|
|---|
| 553 | -- Availability: 2.1.0
|
|---|
| 554 | CREATE OR REPLACE FUNCTION gserialized_gist_sel_nd (internal, oid, internal, int4)
|
|---|
| 555 | RETURNS float8
|
|---|
| 556 | AS 'MODULE_PATHNAME', 'gserialized_gist_sel_nd'
|
|---|
| 557 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 558 |
|
|---|
| 559 | -- Availability: 2.1.0
|
|---|
| 560 | CREATE OR REPLACE FUNCTION gserialized_gist_joinsel_2d (internal, oid, internal, smallint)
|
|---|
| 561 | RETURNS float8
|
|---|
| 562 | AS 'MODULE_PATHNAME', 'gserialized_gist_joinsel_2d'
|
|---|
| 563 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 564 |
|
|---|
| 565 | -- Availability: 2.1.0
|
|---|
| 566 | CREATE OR REPLACE FUNCTION gserialized_gist_joinsel_nd (internal, oid, internal, smallint)
|
|---|
| 567 | RETURNS float8
|
|---|
| 568 | AS 'MODULE_PATHNAME', 'gserialized_gist_joinsel_nd'
|
|---|
| 569 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 570 |
|
|---|
| 571 |
|
|---|
| 572 | -----------------------------------------------------------------------------
|
|---|
| 573 | -- GEOMETRY Operators
|
|---|
| 574 | -----------------------------------------------------------------------------
|
|---|
| 575 |
|
|---|
| 576 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 577 | -- 2D GEOMETRY Operators
|
|---|
| 578 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 579 |
|
|---|
| 580 | -- Availability: 2.0.0
|
|---|
| 581 | CREATE OR REPLACE FUNCTION geometry_overlaps(geom1 geometry, geom2 geometry)
|
|---|
| 582 | RETURNS boolean
|
|---|
| 583 | AS 'MODULE_PATHNAME' ,'gserialized_overlaps_2d'
|
|---|
| 584 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 585 | _COST_LOW;
|
|---|
| 586 |
|
|---|
| 587 | -- Availability: 0.1.0
|
|---|
| 588 | -- Changed: 2.0.0 use gserialized selectivity estimators
|
|---|
| 589 | CREATE OPERATOR && (
|
|---|
| 590 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps,
|
|---|
| 591 | COMMUTATOR = '&&',
|
|---|
| 592 | RESTRICT = gserialized_gist_sel_2d,
|
|---|
| 593 | JOIN = gserialized_gist_joinsel_2d
|
|---|
| 594 | );
|
|---|
| 595 |
|
|---|
| 596 | -- Availability: 2.0.0
|
|---|
| 597 | CREATE OR REPLACE FUNCTION geometry_same(geom1 geometry, geom2 geometry)
|
|---|
| 598 | RETURNS boolean
|
|---|
| 599 | AS 'MODULE_PATHNAME' ,'gserialized_same_2d'
|
|---|
| 600 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 601 | _COST_LOW;
|
|---|
| 602 |
|
|---|
| 603 | -- Availability: 0.1.0
|
|---|
| 604 | CREATE OPERATOR ~= (
|
|---|
| 605 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_same,
|
|---|
| 606 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 607 | );
|
|---|
| 608 |
|
|---|
| 609 | -- As of 2.2.0 this no longer returns the centroid/centroid distance, it
|
|---|
| 610 | -- returns the actual distance, to support the 'recheck' functionality
|
|---|
| 611 | -- enabled in the KNN operator
|
|---|
| 612 | -- Availability: 2.0.0
|
|---|
| 613 | CREATE OR REPLACE FUNCTION geometry_distance_centroid(geom1 geometry, geom2 geometry)
|
|---|
| 614 | RETURNS float8
|
|---|
| 615 | AS 'MODULE_PATHNAME', 'ST_Distance'
|
|---|
| 616 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 617 | _COST_MEDIUM;
|
|---|
| 618 |
|
|---|
| 619 | -- Availability: 2.0.0
|
|---|
| 620 | CREATE OR REPLACE FUNCTION geometry_distance_box(geom1 geometry, geom2 geometry)
|
|---|
| 621 | RETURNS float8
|
|---|
| 622 | AS 'MODULE_PATHNAME', 'gserialized_distance_box_2d'
|
|---|
| 623 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 624 |
|
|---|
| 625 | -- Availability: 2.0.0
|
|---|
| 626 | CREATE OPERATOR <-> (
|
|---|
| 627 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_distance_centroid,
|
|---|
| 628 | COMMUTATOR = '<->'
|
|---|
| 629 | );
|
|---|
| 630 |
|
|---|
| 631 | -- Availability: 2.0.0
|
|---|
| 632 | CREATE OPERATOR <#> (
|
|---|
| 633 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_distance_box,
|
|---|
| 634 | COMMUTATOR = '<#>'
|
|---|
| 635 | );
|
|---|
| 636 |
|
|---|
| 637 | -- Availability: 2.0.0
|
|---|
| 638 | CREATE OR REPLACE FUNCTION geometry_contains(geom1 geometry, geom2 geometry)
|
|---|
| 639 | RETURNS bool
|
|---|
| 640 | AS 'MODULE_PATHNAME', 'gserialized_contains_2d'
|
|---|
| 641 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 642 |
|
|---|
| 643 | -- Availability: 2.0.0
|
|---|
| 644 | CREATE OR REPLACE FUNCTION geometry_within(geom1 geometry, geom2 geometry)
|
|---|
| 645 | RETURNS bool
|
|---|
| 646 | AS 'MODULE_PATHNAME', 'gserialized_within_2d'
|
|---|
| 647 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 648 |
|
|---|
| 649 | -- Availability: 0.1.0
|
|---|
| 650 | CREATE OPERATOR @ (
|
|---|
| 651 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_within,
|
|---|
| 652 | COMMUTATOR = '~',
|
|---|
| 653 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 654 | );
|
|---|
| 655 |
|
|---|
| 656 | -- Availability: 0.1.0
|
|---|
| 657 | CREATE OPERATOR ~ (
|
|---|
| 658 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contains,
|
|---|
| 659 | COMMUTATOR = '@',
|
|---|
| 660 | RESTRICT = contsel, JOIN = contjoinsel
|
|---|
| 661 | );
|
|---|
| 662 |
|
|---|
| 663 | -- Availability: 2.0.0
|
|---|
| 664 | CREATE OR REPLACE FUNCTION geometry_left(geom1 geometry, geom2 geometry)
|
|---|
| 665 | RETURNS bool
|
|---|
| 666 | AS 'MODULE_PATHNAME', 'gserialized_left_2d'
|
|---|
| 667 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 668 |
|
|---|
| 669 | -- Availability: 0.1.0
|
|---|
| 670 | CREATE OPERATOR << (
|
|---|
| 671 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_left,
|
|---|
| 672 | COMMUTATOR = '>>',
|
|---|
| 673 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 674 | );
|
|---|
| 675 |
|
|---|
| 676 | -- Availability: 2.0.0
|
|---|
| 677 | CREATE OR REPLACE FUNCTION geometry_overleft(geom1 geometry, geom2 geometry)
|
|---|
| 678 | RETURNS bool
|
|---|
| 679 | AS 'MODULE_PATHNAME', 'gserialized_overleft_2d'
|
|---|
| 680 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 681 |
|
|---|
| 682 | -- Availability: 0.1.0
|
|---|
| 683 | CREATE OPERATOR &< (
|
|---|
| 684 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overleft,
|
|---|
| 685 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 686 | );
|
|---|
| 687 |
|
|---|
| 688 | -- Availability: 2.0.0
|
|---|
| 689 | CREATE OR REPLACE FUNCTION geometry_below(geom1 geometry, geom2 geometry)
|
|---|
| 690 | RETURNS bool
|
|---|
| 691 | AS 'MODULE_PATHNAME', 'gserialized_below_2d'
|
|---|
| 692 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 693 |
|
|---|
| 694 | -- Availability: 0.1.0
|
|---|
| 695 | CREATE OPERATOR <<| (
|
|---|
| 696 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_below,
|
|---|
| 697 | COMMUTATOR = '|>>',
|
|---|
| 698 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 699 | );
|
|---|
| 700 |
|
|---|
| 701 | -- Availability: 2.0.0
|
|---|
| 702 | CREATE OR REPLACE FUNCTION geometry_overbelow(geom1 geometry, geom2 geometry)
|
|---|
| 703 | RETURNS bool
|
|---|
| 704 | AS 'MODULE_PATHNAME', 'gserialized_overbelow_2d'
|
|---|
| 705 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 706 |
|
|---|
| 707 | -- Availability: 0.1.0
|
|---|
| 708 | CREATE OPERATOR &<| (
|
|---|
| 709 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overbelow,
|
|---|
| 710 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 711 | );
|
|---|
| 712 |
|
|---|
| 713 | -- Availability: 2.0.0
|
|---|
| 714 | CREATE OR REPLACE FUNCTION geometry_overright(geom1 geometry, geom2 geometry)
|
|---|
| 715 | RETURNS bool
|
|---|
| 716 | AS 'MODULE_PATHNAME', 'gserialized_overright_2d'
|
|---|
| 717 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 718 |
|
|---|
| 719 | -- Availability: 0.1.0
|
|---|
| 720 | CREATE OPERATOR &> (
|
|---|
| 721 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overright,
|
|---|
| 722 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 723 | );
|
|---|
| 724 |
|
|---|
| 725 | -- Availability: 2.0.0
|
|---|
| 726 | CREATE OR REPLACE FUNCTION geometry_right(geom1 geometry, geom2 geometry)
|
|---|
| 727 | RETURNS bool
|
|---|
| 728 | AS 'MODULE_PATHNAME', 'gserialized_right_2d'
|
|---|
| 729 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 730 |
|
|---|
| 731 | -- Availability: 0.1.0
|
|---|
| 732 | CREATE OPERATOR >> (
|
|---|
| 733 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_right,
|
|---|
| 734 | COMMUTATOR = '<<',
|
|---|
| 735 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 736 | );
|
|---|
| 737 |
|
|---|
| 738 | -- Availability: 2.0.0
|
|---|
| 739 | CREATE OR REPLACE FUNCTION geometry_overabove(geom1 geometry, geom2 geometry)
|
|---|
| 740 | RETURNS bool
|
|---|
| 741 | AS 'MODULE_PATHNAME', 'gserialized_overabove_2d'
|
|---|
| 742 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 743 |
|
|---|
| 744 | -- Availability: 0.1.0
|
|---|
| 745 | CREATE OPERATOR |&> (
|
|---|
| 746 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overabove,
|
|---|
| 747 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 748 | );
|
|---|
| 749 |
|
|---|
| 750 | -- Availability: 2.0.0
|
|---|
| 751 | CREATE OR REPLACE FUNCTION geometry_above(geom1 geometry, geom2 geometry)
|
|---|
| 752 | RETURNS bool
|
|---|
| 753 | AS 'MODULE_PATHNAME', 'gserialized_above_2d'
|
|---|
| 754 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 755 |
|
|---|
| 756 | -- Availability: 0.1.0
|
|---|
| 757 | CREATE OPERATOR |>> (
|
|---|
| 758 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_above,
|
|---|
| 759 | COMMUTATOR = '<<|',
|
|---|
| 760 | RESTRICT = positionsel, JOIN = positionjoinsel
|
|---|
| 761 | );
|
|---|
| 762 |
|
|---|
| 763 | -- Availability: 2.0.0
|
|---|
| 764 | CREATE OPERATOR CLASS gist_geometry_ops_2d
|
|---|
| 765 | DEFAULT FOR TYPE geometry USING GIST AS
|
|---|
| 766 | STORAGE box2df,
|
|---|
| 767 | OPERATOR 1 << ,
|
|---|
| 768 | OPERATOR 2 &< ,
|
|---|
| 769 | OPERATOR 3 && ,
|
|---|
| 770 | OPERATOR 4 &> ,
|
|---|
| 771 | OPERATOR 5 >> ,
|
|---|
| 772 | OPERATOR 6 ~= ,
|
|---|
| 773 | OPERATOR 7 ~ ,
|
|---|
| 774 | OPERATOR 8 @ ,
|
|---|
| 775 | OPERATOR 9 &<| ,
|
|---|
| 776 | OPERATOR 10 <<| ,
|
|---|
| 777 | OPERATOR 11 |>> ,
|
|---|
| 778 | OPERATOR 12 |&> ,
|
|---|
| 779 | OPERATOR 13 <-> FOR ORDER BY pg_catalog.float_ops,
|
|---|
| 780 | OPERATOR 14 <#> FOR ORDER BY pg_catalog.float_ops,
|
|---|
| 781 | FUNCTION 8 geometry_gist_distance_2d (internal, geometry, int4),
|
|---|
| 782 | FUNCTION 1 geometry_gist_consistent_2d (internal, geometry, int4),
|
|---|
| 783 | FUNCTION 2 geometry_gist_union_2d (bytea, internal),
|
|---|
| 784 | FUNCTION 3 geometry_gist_compress_2d (internal),
|
|---|
| 785 | FUNCTION 4 geometry_gist_decompress_2d (internal),
|
|---|
| 786 | FUNCTION 5 geometry_gist_penalty_2d (internal, internal, internal),
|
|---|
| 787 | FUNCTION 6 geometry_gist_picksplit_2d (internal, internal),
|
|---|
| 788 | FUNCTION 7 geometry_gist_same_2d (geom1 geometry, geom2 geometry, internal);
|
|---|
| 789 |
|
|---|
| 790 | -----------------------------------------------------------------------------
|
|---|
| 791 | -- GiST ND GEOMETRY-over-GSERIALIZED
|
|---|
| 792 | -----------------------------------------------------------------------------
|
|---|
| 793 |
|
|---|
| 794 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 795 | -- GiST Support Functions
|
|---|
| 796 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 797 |
|
|---|
| 798 | -- Availability: 2.0.0
|
|---|
| 799 | CREATE OR REPLACE FUNCTION geometry_gist_consistent_nd(internal,geometry,int4)
|
|---|
| 800 | RETURNS bool
|
|---|
| 801 | AS 'MODULE_PATHNAME' ,'gserialized_gist_consistent'
|
|---|
| 802 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 803 |
|
|---|
| 804 | -- Availability: 2.0.0
|
|---|
| 805 | CREATE OR REPLACE FUNCTION geometry_gist_compress_nd(internal)
|
|---|
| 806 | RETURNS internal
|
|---|
| 807 | AS 'MODULE_PATHNAME','gserialized_gist_compress'
|
|---|
| 808 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 809 |
|
|---|
| 810 | -- Availability: 2.0.0
|
|---|
| 811 | CREATE OR REPLACE FUNCTION geometry_gist_penalty_nd(internal,internal,internal)
|
|---|
| 812 | RETURNS internal
|
|---|
| 813 | AS 'MODULE_PATHNAME' ,'gserialized_gist_penalty'
|
|---|
| 814 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 815 |
|
|---|
| 816 | -- Availability: 2.0.0
|
|---|
| 817 | CREATE OR REPLACE FUNCTION geometry_gist_picksplit_nd(internal, internal)
|
|---|
| 818 | RETURNS internal
|
|---|
| 819 | AS 'MODULE_PATHNAME' ,'gserialized_gist_picksplit'
|
|---|
| 820 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 821 |
|
|---|
| 822 | -- Availability: 2.0.0
|
|---|
| 823 | CREATE OR REPLACE FUNCTION geometry_gist_union_nd(bytea, internal)
|
|---|
| 824 | RETURNS internal
|
|---|
| 825 | AS 'MODULE_PATHNAME' ,'gserialized_gist_union'
|
|---|
| 826 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 827 |
|
|---|
| 828 | -- Availability: 2.0.0
|
|---|
| 829 | CREATE OR REPLACE FUNCTION geometry_gist_same_nd(geometry, geometry, internal)
|
|---|
| 830 | RETURNS internal
|
|---|
| 831 | AS 'MODULE_PATHNAME' ,'gserialized_gist_same'
|
|---|
| 832 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 833 |
|
|---|
| 834 | -- Availability: 2.0.0
|
|---|
| 835 | CREATE OR REPLACE FUNCTION geometry_gist_decompress_nd(internal)
|
|---|
| 836 | RETURNS internal
|
|---|
| 837 | AS 'MODULE_PATHNAME' ,'gserialized_gist_decompress'
|
|---|
| 838 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 839 |
|
|---|
| 840 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 841 | -- N-D GEOMETRY Operators
|
|---|
| 842 | -- ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
|---|
| 843 |
|
|---|
| 844 | -- Availability: 2.0.0
|
|---|
| 845 | CREATE OR REPLACE FUNCTION geometry_overlaps_nd(geometry, geometry)
|
|---|
| 846 | RETURNS boolean
|
|---|
| 847 | AS 'MODULE_PATHNAME' ,'gserialized_overlaps'
|
|---|
| 848 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 849 |
|
|---|
| 850 | -- Availability: 2.0.0
|
|---|
| 851 | CREATE OPERATOR &&& (
|
|---|
| 852 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_overlaps_nd,
|
|---|
| 853 | COMMUTATOR = '&&&',
|
|---|
| 854 | RESTRICT = gserialized_gist_sel_nd,
|
|---|
| 855 | JOIN = gserialized_gist_joinsel_nd
|
|---|
| 856 | );
|
|---|
| 857 |
|
|---|
| 858 | -- Availability: 3.0.0
|
|---|
| 859 | CREATE OR REPLACE FUNCTION geometry_contains_nd(geometry, geometry)
|
|---|
| 860 | RETURNS boolean
|
|---|
| 861 | AS 'MODULE_PATHNAME' ,'gserialized_contains'
|
|---|
| 862 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 863 |
|
|---|
| 864 | -- Availability: 3.0.0
|
|---|
| 865 | CREATE OPERATOR ~~ (
|
|---|
| 866 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_contains_nd,
|
|---|
| 867 | COMMUTATOR = '@@',
|
|---|
| 868 | RESTRICT = gserialized_gist_sel_nd,
|
|---|
| 869 | JOIN = gserialized_gist_joinsel_nd
|
|---|
| 870 | );
|
|---|
| 871 |
|
|---|
| 872 | -- Availability: 3.0.0
|
|---|
| 873 | CREATE OR REPLACE FUNCTION geometry_within_nd(geometry, geometry)
|
|---|
| 874 | RETURNS boolean
|
|---|
| 875 | AS 'MODULE_PATHNAME' ,'gserialized_within'
|
|---|
| 876 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 877 |
|
|---|
| 878 | -- Availability: 3.0.0
|
|---|
| 879 | CREATE OPERATOR @@ (
|
|---|
| 880 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_within_nd,
|
|---|
| 881 | COMMUTATOR = '~~',
|
|---|
| 882 | RESTRICT = gserialized_gist_sel_nd,
|
|---|
| 883 | JOIN = gserialized_gist_joinsel_nd
|
|---|
| 884 | );
|
|---|
| 885 |
|
|---|
| 886 | -- Availability: 3.0.0
|
|---|
| 887 | CREATE OR REPLACE FUNCTION geometry_same_nd(geometry, geometry)
|
|---|
| 888 | RETURNS boolean
|
|---|
| 889 | AS 'MODULE_PATHNAME' ,'gserialized_same'
|
|---|
| 890 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 891 |
|
|---|
| 892 | -- Availability: 3.0.0
|
|---|
| 893 | CREATE OPERATOR ~~= (
|
|---|
| 894 | LEFTARG = geometry, RIGHTARG = geometry, PROCEDURE = geometry_same_nd,
|
|---|
| 895 | COMMUTATOR = '~~=',
|
|---|
| 896 | RESTRICT = gserialized_gist_sel_nd,
|
|---|
| 897 | JOIN = gserialized_gist_joinsel_nd
|
|---|
| 898 | );
|
|---|
| 899 |
|
|---|
| 900 | -- Availability: 2.2.0
|
|---|
| 901 | CREATE OR REPLACE FUNCTION geometry_distance_centroid_nd(geometry,geometry)
|
|---|
| 902 | RETURNS float8
|
|---|
| 903 | AS 'MODULE_PATHNAME', 'gserialized_distance_nd'
|
|---|
| 904 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 905 |
|
|---|
| 906 | -- Availability: 2.2.0
|
|---|
| 907 | CREATE OPERATOR <<->> (
|
|---|
| 908 | LEFTARG = geometry, RIGHTARG = geometry,
|
|---|
| 909 | PROCEDURE = geometry_distance_centroid_nd,
|
|---|
| 910 | COMMUTATOR = '<<->>'
|
|---|
| 911 | );
|
|---|
| 912 |
|
|---|
| 913 | --
|
|---|
| 914 | -- This is for use with |=| operator, which does not directly use
|
|---|
| 915 | -- ST_DistanceCPA just in case it'll ever need to change behavior
|
|---|
| 916 | -- (operators definition cannot be altered)
|
|---|
| 917 | --
|
|---|
| 918 | -- Availability: 2.2.0
|
|---|
| 919 | CREATE OR REPLACE FUNCTION geometry_distance_cpa(geometry, geometry)
|
|---|
| 920 | RETURNS float8
|
|---|
| 921 | AS 'MODULE_PATHNAME', 'ST_DistanceCPA'
|
|---|
| 922 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 923 |
|
|---|
| 924 | -- Availability: 2.2.0
|
|---|
| 925 | CREATE OPERATOR |=| (
|
|---|
| 926 | LEFTARG = geometry, RIGHTARG = geometry,
|
|---|
| 927 | PROCEDURE = geometry_distance_cpa,
|
|---|
| 928 | COMMUTATOR = '|=|'
|
|---|
| 929 | );
|
|---|
| 930 |
|
|---|
| 931 | -- Availability: 2.2.0
|
|---|
| 932 | CREATE OR REPLACE FUNCTION geometry_gist_distance_nd(internal,geometry,int4)
|
|---|
| 933 | RETURNS float8
|
|---|
| 934 | AS 'MODULE_PATHNAME', 'gserialized_gist_distance'
|
|---|
| 935 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 936 |
|
|---|
| 937 | -- Availability: 2.0.0
|
|---|
| 938 | CREATE OPERATOR CLASS gist_geometry_ops_nd
|
|---|
| 939 | FOR TYPE geometry USING GIST AS
|
|---|
| 940 | STORAGE gidx,
|
|---|
| 941 | OPERATOR 3 &&& ,
|
|---|
| 942 | -- Availability: 3.0.0
|
|---|
| 943 | OPERATOR 6 ~~= ,
|
|---|
| 944 | -- Availability: 3.0.0
|
|---|
| 945 | OPERATOR 7 ~~ ,
|
|---|
| 946 | -- Availability: 3.0.0
|
|---|
| 947 | OPERATOR 8 @@ ,
|
|---|
| 948 | -- Availability: 2.2.0
|
|---|
| 949 | OPERATOR 13 <<->> FOR ORDER BY pg_catalog.float_ops,
|
|---|
| 950 | #if POSTGIS_PGSQL_VERSION >= 95
|
|---|
| 951 | -- Availability: 2.2.0
|
|---|
| 952 | OPERATOR 20 |=| FOR ORDER BY pg_catalog.float_ops,
|
|---|
| 953 | #endif
|
|---|
| 954 | -- Availability: 2.2.0
|
|---|
| 955 | FUNCTION 8 geometry_gist_distance_nd (internal, geometry, int4),
|
|---|
| 956 | FUNCTION 1 geometry_gist_consistent_nd (internal, geometry, int4),
|
|---|
| 957 | FUNCTION 2 geometry_gist_union_nd (bytea, internal),
|
|---|
| 958 | FUNCTION 3 geometry_gist_compress_nd (internal),
|
|---|
| 959 | FUNCTION 4 geometry_gist_decompress_nd (internal),
|
|---|
| 960 | FUNCTION 5 geometry_gist_penalty_nd (internal, internal, internal),
|
|---|
| 961 | FUNCTION 6 geometry_gist_picksplit_nd (internal, internal),
|
|---|
| 962 | FUNCTION 7 geometry_gist_same_nd (geometry, geometry, internal);
|
|---|
| 963 |
|
|---|
| 964 | -- Availability: 2.2.0
|
|---|
| 965 | CREATE OR REPLACE FUNCTION ST_ShiftLongitude(geometry)
|
|---|
| 966 | RETURNS geometry
|
|---|
| 967 | AS 'MODULE_PATHNAME', 'LWGEOM_longitude_shift'
|
|---|
| 968 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 969 |
|
|---|
| 970 | -- Availability: 2.3.0
|
|---|
| 971 | CREATE OR REPLACE FUNCTION ST_WrapX(geom geometry, wrap float8, move float8)
|
|---|
| 972 | RETURNS geometry
|
|---|
| 973 | AS 'MODULE_PATHNAME', 'ST_WrapX'
|
|---|
| 974 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 975 |
|
|---|
| 976 | -----------------------------------------------------------------------------
|
|---|
| 977 | -- BOX3D FUNCTIONS
|
|---|
| 978 | -----------------------------------------------------------------------------
|
|---|
| 979 |
|
|---|
| 980 | -- Availability: 1.2.2
|
|---|
| 981 | CREATE OR REPLACE FUNCTION ST_XMin(box3d)
|
|---|
| 982 | RETURNS FLOAT8
|
|---|
| 983 | AS 'MODULE_PATHNAME','BOX3D_xmin'
|
|---|
| 984 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 985 |
|
|---|
| 986 | -- Availability: 1.2.2
|
|---|
| 987 | CREATE OR REPLACE FUNCTION ST_YMin(box3d)
|
|---|
| 988 | RETURNS FLOAT8
|
|---|
| 989 | AS 'MODULE_PATHNAME','BOX3D_ymin'
|
|---|
| 990 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 991 |
|
|---|
| 992 | -- Availability: 1.2.2
|
|---|
| 993 | CREATE OR REPLACE FUNCTION ST_ZMin(box3d)
|
|---|
| 994 | RETURNS FLOAT8
|
|---|
| 995 | AS 'MODULE_PATHNAME','BOX3D_zmin'
|
|---|
| 996 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 997 |
|
|---|
| 998 | -- Availability: 1.2.2
|
|---|
| 999 | CREATE OR REPLACE FUNCTION ST_XMax(box3d)
|
|---|
| 1000 | RETURNS FLOAT8
|
|---|
| 1001 | AS 'MODULE_PATHNAME','BOX3D_xmax'
|
|---|
| 1002 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1003 |
|
|---|
| 1004 | -- Availability: 1.2.2
|
|---|
| 1005 | CREATE OR REPLACE FUNCTION ST_YMax(box3d)
|
|---|
| 1006 | RETURNS FLOAT8
|
|---|
| 1007 | AS 'MODULE_PATHNAME','BOX3D_ymax'
|
|---|
| 1008 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1009 |
|
|---|
| 1010 | -- Availability: 1.2.2
|
|---|
| 1011 | CREATE OR REPLACE FUNCTION ST_ZMax(box3d)
|
|---|
| 1012 | RETURNS FLOAT8
|
|---|
| 1013 | AS 'MODULE_PATHNAME','BOX3D_zmax'
|
|---|
| 1014 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1015 |
|
|---|
| 1016 | -----------------------------------------------------------------------------
|
|---|
| 1017 | -- BOX2D FUNCTIONS
|
|---|
| 1018 | -----------------------------------------------------------------------------
|
|---|
| 1019 |
|
|---|
| 1020 | -- Availability: 1.2.2
|
|---|
| 1021 | CREATE OR REPLACE FUNCTION ST_Expand(box2d,float8)
|
|---|
| 1022 | RETURNS box2d
|
|---|
| 1023 | AS 'MODULE_PATHNAME', 'BOX2D_expand'
|
|---|
| 1024 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1025 |
|
|---|
| 1026 | -- Availability: 2.3.0
|
|---|
| 1027 | CREATE OR REPLACE FUNCTION ST_Expand(box box2d, dx float8, dy float8)
|
|---|
| 1028 | RETURNS box2d
|
|---|
| 1029 | AS 'MODULE_PATHNAME', 'BOX2D_expand'
|
|---|
| 1030 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1031 |
|
|---|
| 1032 | -- Availability: 1.5.0
|
|---|
| 1033 | CREATE OR REPLACE FUNCTION postgis_getbbox(geometry)
|
|---|
| 1034 | RETURNS box2d
|
|---|
| 1035 | AS 'MODULE_PATHNAME','LWGEOM_to_BOX2DF'
|
|---|
| 1036 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1037 |
|
|---|
| 1038 | -- Availability: 1.2.2
|
|---|
| 1039 | CREATE OR REPLACE FUNCTION ST_MakeBox2d(geom1 geometry, geom2 geometry)
|
|---|
| 1040 | RETURNS box2d
|
|---|
| 1041 | AS 'MODULE_PATHNAME', 'BOX2D_construct'
|
|---|
| 1042 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1043 |
|
|---|
| 1044 | -----------------------------------------------------------------------
|
|---|
| 1045 | -- ST_ESTIMATED_EXTENT( <schema name>, <table name>, <column name> )
|
|---|
| 1046 | -----------------------------------------------------------------------
|
|---|
| 1047 |
|
|---|
| 1048 | -- Availability: 2.3.0
|
|---|
| 1049 | CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text,text,boolean) RETURNS box2d AS
|
|---|
| 1050 | 'MODULE_PATHNAME', 'gserialized_estimated_extent'
|
|---|
| 1051 | LANGUAGE 'c' STABLE STRICT SECURITY DEFINER;
|
|---|
| 1052 |
|
|---|
| 1053 | -- Availability: 2.1.0
|
|---|
| 1054 | CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text,text) RETURNS box2d AS
|
|---|
| 1055 | 'MODULE_PATHNAME', 'gserialized_estimated_extent'
|
|---|
| 1056 | LANGUAGE 'c' STABLE STRICT SECURITY DEFINER;
|
|---|
| 1057 |
|
|---|
| 1058 | -----------------------------------------------------------------------
|
|---|
| 1059 | -- ST_ESTIMATED_EXTENT( <table name>, <column name> )
|
|---|
| 1060 | -----------------------------------------------------------------------
|
|---|
| 1061 |
|
|---|
| 1062 | -- Availability: 2.1.0
|
|---|
| 1063 | CREATE OR REPLACE FUNCTION ST_EstimatedExtent(text,text) RETURNS box2d AS
|
|---|
| 1064 | 'MODULE_PATHNAME', 'gserialized_estimated_extent'
|
|---|
| 1065 | LANGUAGE 'c' STABLE STRICT SECURITY DEFINER;
|
|---|
| 1066 |
|
|---|
| 1067 | -----------------------------------------------------------------------
|
|---|
| 1068 | -- FIND_EXTENT( <schema name>, <table name>, <column name> )
|
|---|
| 1069 | -----------------------------------------------------------------------
|
|---|
| 1070 |
|
|---|
| 1071 | -- Availability: 2.2.0
|
|---|
| 1072 | CREATE OR REPLACE FUNCTION ST_FindExtent(text,text,text) RETURNS box2d AS
|
|---|
| 1073 | $$
|
|---|
| 1074 | DECLARE
|
|---|
| 1075 | schemaname alias for $1;
|
|---|
| 1076 | tablename alias for $2;
|
|---|
| 1077 | columnname alias for $3;
|
|---|
| 1078 | myrec RECORD;
|
|---|
| 1079 | BEGIN
|
|---|
| 1080 | FOR myrec IN EXECUTE 'SELECT @extschema@.ST_Extent("' || columnname || '") As extent FROM "' || schemaname || '"."' || tablename || '"' LOOP
|
|---|
| 1081 | return myrec.extent;
|
|---|
| 1082 | END LOOP;
|
|---|
| 1083 | END;
|
|---|
| 1084 | $$
|
|---|
| 1085 | LANGUAGE 'plpgsql' STABLE STRICT _PARALLEL;
|
|---|
| 1086 |
|
|---|
| 1087 | -----------------------------------------------------------------------
|
|---|
| 1088 | -- FIND_EXTENT( <table name>, <column name> )
|
|---|
| 1089 | -----------------------------------------------------------------------
|
|---|
| 1090 |
|
|---|
| 1091 | -- Availability: 2.2.0
|
|---|
| 1092 | CREATE OR REPLACE FUNCTION ST_FindExtent(text,text) RETURNS box2d AS
|
|---|
| 1093 | $$
|
|---|
| 1094 | DECLARE
|
|---|
| 1095 | tablename alias for $1;
|
|---|
| 1096 | columnname alias for $2;
|
|---|
| 1097 | myrec RECORD;
|
|---|
| 1098 |
|
|---|
| 1099 | BEGIN
|
|---|
| 1100 | FOR myrec IN EXECUTE 'SELECT @extschema@.ST_Extent("' || columnname || '") As extent FROM "' || tablename || '"' LOOP
|
|---|
| 1101 | return myrec.extent;
|
|---|
| 1102 | END LOOP;
|
|---|
| 1103 | END;
|
|---|
| 1104 | $$
|
|---|
| 1105 | LANGUAGE 'plpgsql' STABLE STRICT _PARALLEL;
|
|---|
| 1106 |
|
|---|
| 1107 |
|
|---|
| 1108 | -------------------------------------------
|
|---|
| 1109 | -- other lwgeom functions
|
|---|
| 1110 | -------------------------------------------
|
|---|
| 1111 | -- Availability: 1.5.0
|
|---|
| 1112 | CREATE OR REPLACE FUNCTION postgis_addbbox(geometry)
|
|---|
| 1113 | RETURNS geometry
|
|---|
| 1114 | AS 'MODULE_PATHNAME','LWGEOM_addBBOX'
|
|---|
| 1115 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1116 |
|
|---|
| 1117 | -- Availability: 1.5.0
|
|---|
| 1118 | CREATE OR REPLACE FUNCTION postgis_dropbbox(geometry)
|
|---|
| 1119 | RETURNS geometry
|
|---|
| 1120 | AS 'MODULE_PATHNAME','LWGEOM_dropBBOX'
|
|---|
| 1121 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1122 |
|
|---|
| 1123 | -- Availability: 1.5.0
|
|---|
| 1124 | CREATE OR REPLACE FUNCTION postgis_hasbbox(geometry)
|
|---|
| 1125 | RETURNS bool
|
|---|
| 1126 | AS 'MODULE_PATHNAME', 'LWGEOM_hasBBOX'
|
|---|
| 1127 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1128 |
|
|---|
| 1129 | -- Availability: 2.5.0
|
|---|
| 1130 | CREATE OR REPLACE FUNCTION ST_QuantizeCoordinates(g geometry, prec_x int, prec_y int DEFAULT NULL, prec_z int DEFAULT NULL, prec_m int DEFAULT NULL)
|
|---|
| 1131 | RETURNS geometry
|
|---|
| 1132 | AS 'MODULE_PATHNAME', 'ST_QuantizeCoordinates'
|
|---|
| 1133 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 1134 | _COST_MEDIUM;
|
|---|
| 1135 |
|
|---|
| 1136 | ------------------------------------------------------------------------
|
|---|
| 1137 | -- DEBUG
|
|---|
| 1138 | ------------------------------------------------------------------------
|
|---|
| 1139 |
|
|---|
| 1140 | -- Availability: 2.2.0
|
|---|
| 1141 | CREATE OR REPLACE FUNCTION ST_MemSize(geometry)
|
|---|
| 1142 | RETURNS int4
|
|---|
| 1143 | AS 'MODULE_PATHNAME', 'LWGEOM_mem_size'
|
|---|
| 1144 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1145 | _COST_LOW;
|
|---|
| 1146 |
|
|---|
| 1147 | -- Availability: 1.2.2
|
|---|
| 1148 | CREATE OR REPLACE FUNCTION ST_Summary(geometry)
|
|---|
| 1149 | RETURNS text
|
|---|
| 1150 | AS 'MODULE_PATHNAME', 'LWGEOM_summary'
|
|---|
| 1151 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1152 | _COST_LOW;
|
|---|
| 1153 |
|
|---|
| 1154 | -- Availability: 1.2.2
|
|---|
| 1155 | CREATE OR REPLACE FUNCTION ST_NPoints(geometry)
|
|---|
| 1156 | RETURNS int4
|
|---|
| 1157 | AS 'MODULE_PATHNAME', 'LWGEOM_npoints'
|
|---|
| 1158 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1159 | _COST_LOW;
|
|---|
| 1160 |
|
|---|
| 1161 | -- Availability: 1.2.2
|
|---|
| 1162 | CREATE OR REPLACE FUNCTION ST_NRings(geometry)
|
|---|
| 1163 | RETURNS int4
|
|---|
| 1164 | AS 'MODULE_PATHNAME', 'LWGEOM_nrings'
|
|---|
| 1165 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1166 | _COST_LOW;
|
|---|
| 1167 |
|
|---|
| 1168 | ------------------------------------------------------------------------
|
|---|
| 1169 | -- Measures
|
|---|
| 1170 | ------------------------------------------------------------------------
|
|---|
| 1171 | -- Availability: 2.0.0
|
|---|
| 1172 | CREATE OR REPLACE FUNCTION ST_3DLength(geometry)
|
|---|
| 1173 | RETURNS FLOAT8
|
|---|
| 1174 | AS 'MODULE_PATHNAME', 'LWGEOM_length_linestring'
|
|---|
| 1175 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1176 | _COST_LOW;
|
|---|
| 1177 |
|
|---|
| 1178 | -- Availability: 1.2.2
|
|---|
| 1179 | CREATE OR REPLACE FUNCTION ST_Length2d(geometry)
|
|---|
| 1180 | RETURNS FLOAT8
|
|---|
| 1181 | AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
|
|---|
| 1182 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1183 | _COST_LOW;
|
|---|
| 1184 |
|
|---|
| 1185 | -- PostGIS equivalent function: length2d(geometry)
|
|---|
| 1186 | CREATE OR REPLACE FUNCTION ST_Length(geometry)
|
|---|
| 1187 | RETURNS FLOAT8
|
|---|
| 1188 | AS 'MODULE_PATHNAME', 'LWGEOM_length2d_linestring'
|
|---|
| 1189 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1190 | _COST_LOW;
|
|---|
| 1191 |
|
|---|
| 1192 | -- Availability in 2.2.0
|
|---|
| 1193 | CREATE OR REPLACE FUNCTION ST_LengthSpheroid(geometry, spheroid)
|
|---|
| 1194 | RETURNS FLOAT8
|
|---|
| 1195 | AS 'MODULE_PATHNAME','LWGEOM_length_ellipsoid_linestring'
|
|---|
| 1196 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1197 | _COST_MEDIUM;
|
|---|
| 1198 |
|
|---|
| 1199 | -- Availability: 2.2.0
|
|---|
| 1200 | CREATE OR REPLACE FUNCTION ST_Length2DSpheroid(geometry, spheroid)
|
|---|
| 1201 | RETURNS FLOAT8
|
|---|
| 1202 | AS 'MODULE_PATHNAME','LWGEOM_length2d_ellipsoid'
|
|---|
| 1203 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1204 | _COST_MEDIUM;
|
|---|
| 1205 |
|
|---|
| 1206 | -- Availability: 2.0.0
|
|---|
| 1207 | CREATE OR REPLACE FUNCTION ST_3DPerimeter(geometry)
|
|---|
| 1208 | RETURNS FLOAT8
|
|---|
| 1209 | AS 'MODULE_PATHNAME', 'LWGEOM_perimeter_poly'
|
|---|
| 1210 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1211 | _COST_LOW;
|
|---|
| 1212 |
|
|---|
| 1213 | -- Availability: 1.2.2
|
|---|
| 1214 | CREATE OR REPLACE FUNCTION ST_perimeter2d(geometry)
|
|---|
| 1215 | RETURNS FLOAT8
|
|---|
| 1216 | AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
|
|---|
| 1217 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1218 | _COST_LOW;
|
|---|
| 1219 |
|
|---|
| 1220 | -- PostGIS equivalent function: perimeter2d(geometry)
|
|---|
| 1221 | CREATE OR REPLACE FUNCTION ST_Perimeter(geometry)
|
|---|
| 1222 | RETURNS FLOAT8
|
|---|
| 1223 | AS 'MODULE_PATHNAME', 'LWGEOM_perimeter2d_poly'
|
|---|
| 1224 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1225 | _COST_LOW;
|
|---|
| 1226 |
|
|---|
| 1227 | -- Availability: 1.2.2
|
|---|
| 1228 | -- Deprecation in 1.3.4
|
|---|
| 1229 | CREATE OR REPLACE FUNCTION ST_Area2D(geometry)
|
|---|
| 1230 | RETURNS FLOAT8
|
|---|
| 1231 | AS 'MODULE_PATHNAME', 'ST_Area'
|
|---|
| 1232 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1233 | _COST_LOW;
|
|---|
| 1234 |
|
|---|
| 1235 | -- PostGIS equivalent function: area(geometry)
|
|---|
| 1236 | CREATE OR REPLACE FUNCTION ST_Area(geometry)
|
|---|
| 1237 | RETURNS FLOAT8
|
|---|
| 1238 | AS 'MODULE_PATHNAME','ST_Area'
|
|---|
| 1239 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1240 | _COST_LOW;
|
|---|
| 1241 |
|
|---|
| 1242 | -- Availability: 2.4.0
|
|---|
| 1243 | CREATE OR REPLACE FUNCTION ST_IsPolygonCW(geometry)
|
|---|
| 1244 | RETURNS boolean
|
|---|
| 1245 | AS 'MODULE_PATHNAME','ST_IsPolygonCW'
|
|---|
| 1246 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1247 | _COST_LOW;
|
|---|
| 1248 |
|
|---|
| 1249 | -- Availability: 2.4.0
|
|---|
| 1250 | CREATE OR REPLACE FUNCTION ST_IsPolygonCCW(geometry)
|
|---|
| 1251 | RETURNS boolean
|
|---|
| 1252 | AS 'MODULE_PATHNAME','ST_IsPolygonCCW'
|
|---|
| 1253 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1254 | _COST_LOW;
|
|---|
| 1255 |
|
|---|
| 1256 | -- Availability: 2.0.0
|
|---|
| 1257 | CREATE OR REPLACE FUNCTION ST_DistanceSpheroid(geom1 geometry, geom2 geometry,spheroid)
|
|---|
| 1258 | RETURNS FLOAT8
|
|---|
| 1259 | AS 'MODULE_PATHNAME','LWGEOM_distance_ellipsoid'
|
|---|
| 1260 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1261 | _COST_MEDIUM; --upped this
|
|---|
| 1262 |
|
|---|
| 1263 | -- Minimum distance. 2D only.
|
|---|
| 1264 | CREATE OR REPLACE FUNCTION ST_Distance(geom1 geometry, geom2 geometry)
|
|---|
| 1265 | RETURNS float8
|
|---|
| 1266 | AS 'MODULE_PATHNAME', 'ST_Distance'
|
|---|
| 1267 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1268 | _COST_HIGH;
|
|---|
| 1269 |
|
|---|
| 1270 | -- Availability: 2.2.0
|
|---|
| 1271 | CREATE OR REPLACE FUNCTION ST_PointInsideCircle(geometry,float8,float8,float8)
|
|---|
| 1272 | RETURNS bool
|
|---|
| 1273 | AS 'MODULE_PATHNAME', 'LWGEOM_inside_circle_point'
|
|---|
| 1274 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1275 | _COST_MEDIUM;
|
|---|
| 1276 |
|
|---|
| 1277 | -- Availability: 1.2.2
|
|---|
| 1278 | CREATE OR REPLACE FUNCTION ST_azimuth(geom1 geometry, geom2 geometry)
|
|---|
| 1279 | RETURNS float8
|
|---|
| 1280 | AS 'MODULE_PATHNAME', 'LWGEOM_azimuth'
|
|---|
| 1281 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1282 | _COST_LOW;
|
|---|
| 1283 |
|
|---|
| 1284 | -- Availability: 2.5.0
|
|---|
| 1285 | CREATE OR REPLACE FUNCTION ST_Angle(pt1 geometry, pt2 geometry, pt3 geometry, pt4 geometry default 'POINT EMPTY'::geometry)
|
|---|
| 1286 | RETURNS float8
|
|---|
| 1287 | AS 'MODULE_PATHNAME', 'LWGEOM_angle'
|
|---|
| 1288 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1289 | _COST_LOW;
|
|---|
| 1290 |
|
|---|
| 1291 | -- Availability: Future
|
|---|
| 1292 | -- CREATE OR REPLACE FUNCTION _ST_DistanceRectTree(g1 geometry, g2 geometry)
|
|---|
| 1293 | -- RETURNS float8
|
|---|
| 1294 | -- AS 'MODULE_PATHNAME', 'ST_DistanceRectTree'
|
|---|
| 1295 | -- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1296 | -- _COST_MEDIUM;
|
|---|
| 1297 |
|
|---|
| 1298 | -- Availability: Future
|
|---|
| 1299 | -- CREATE OR REPLACE FUNCTION _ST_DistanceRectTreeCached(g1 geometry, g2 geometry)
|
|---|
| 1300 | -- RETURNS float8
|
|---|
| 1301 | -- AS 'MODULE_PATHNAME', 'ST_DistanceRectTreeCached'
|
|---|
| 1302 | -- LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1303 | -- _COST_MEDIUM;
|
|---|
| 1304 |
|
|---|
| 1305 | ------------------------------------------------------------------------
|
|---|
| 1306 | -- MISC
|
|---|
| 1307 | ------------------------------------------------------------------------
|
|---|
| 1308 |
|
|---|
| 1309 | -- Availability: 2.1.0
|
|---|
| 1310 | CREATE OR REPLACE FUNCTION ST_Force2D(geometry)
|
|---|
| 1311 | RETURNS geometry
|
|---|
| 1312 | AS 'MODULE_PATHNAME', 'LWGEOM_force_2d'
|
|---|
| 1313 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1314 | _COST_LOW;
|
|---|
| 1315 |
|
|---|
| 1316 | -- Availability: 2.1.0
|
|---|
| 1317 | CREATE OR REPLACE FUNCTION ST_Force3DZ(geometry)
|
|---|
| 1318 | RETURNS geometry
|
|---|
| 1319 | AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
|
|---|
| 1320 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1321 | _COST_LOW;
|
|---|
| 1322 |
|
|---|
| 1323 | -- Availability: 2.1.0
|
|---|
| 1324 | CREATE OR REPLACE FUNCTION ST_Force3D(geometry)
|
|---|
| 1325 | RETURNS geometry
|
|---|
| 1326 | AS 'MODULE_PATHNAME', 'LWGEOM_force_3dz'
|
|---|
| 1327 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1328 | _COST_LOW;
|
|---|
| 1329 |
|
|---|
| 1330 | -- Availability: 2.1.0
|
|---|
| 1331 | CREATE OR REPLACE FUNCTION ST_Force3DM(geometry)
|
|---|
| 1332 | RETURNS geometry
|
|---|
| 1333 | AS 'MODULE_PATHNAME', 'LWGEOM_force_3dm'
|
|---|
| 1334 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1335 | _COST_LOW;
|
|---|
| 1336 |
|
|---|
| 1337 | -- Availability: 2.1.0
|
|---|
| 1338 | CREATE OR REPLACE FUNCTION ST_Force4D(geometry)
|
|---|
| 1339 | RETURNS geometry
|
|---|
| 1340 | AS 'MODULE_PATHNAME', 'LWGEOM_force_4d'
|
|---|
| 1341 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1342 | _COST_LOW;
|
|---|
| 1343 |
|
|---|
| 1344 | -- Availability: 2.1.0
|
|---|
| 1345 | CREATE OR REPLACE FUNCTION ST_ForceCollection(geometry)
|
|---|
| 1346 | RETURNS geometry
|
|---|
| 1347 | AS 'MODULE_PATHNAME', 'LWGEOM_force_collection'
|
|---|
| 1348 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1349 | _COST_LOW;
|
|---|
| 1350 |
|
|---|
| 1351 | -- Availability: 1.5.0
|
|---|
| 1352 | CREATE OR REPLACE FUNCTION ST_CollectionExtract(geometry, integer)
|
|---|
| 1353 | RETURNS geometry
|
|---|
| 1354 | AS 'MODULE_PATHNAME', 'ST_CollectionExtract'
|
|---|
| 1355 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1356 | _COST_LOW;
|
|---|
| 1357 |
|
|---|
| 1358 | -- Availability: 2.0.0
|
|---|
| 1359 | CREATE OR REPLACE FUNCTION ST_CollectionHomogenize(geometry)
|
|---|
| 1360 | RETURNS geometry
|
|---|
| 1361 | AS 'MODULE_PATHNAME', 'ST_CollectionHomogenize'
|
|---|
| 1362 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1363 | _COST_LOW;
|
|---|
| 1364 |
|
|---|
| 1365 | -- Availability: 1.2.2
|
|---|
| 1366 | CREATE OR REPLACE FUNCTION ST_Multi(geometry)
|
|---|
| 1367 | RETURNS geometry
|
|---|
| 1368 | AS 'MODULE_PATHNAME', 'LWGEOM_force_multi'
|
|---|
| 1369 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1370 | _COST_LOW;
|
|---|
| 1371 |
|
|---|
| 1372 | -- Availability: 2.2.0
|
|---|
| 1373 | CREATE OR REPLACE FUNCTION ST_ForceCurve(geometry)
|
|---|
| 1374 | RETURNS geometry
|
|---|
| 1375 | AS 'MODULE_PATHNAME', 'LWGEOM_force_curve'
|
|---|
| 1376 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1377 | _COST_MEDIUM;
|
|---|
| 1378 |
|
|---|
| 1379 | -- Availability: 2.1.0
|
|---|
| 1380 | CREATE OR REPLACE FUNCTION ST_ForceSFS(geometry)
|
|---|
| 1381 | RETURNS geometry
|
|---|
| 1382 | AS 'MODULE_PATHNAME', 'LWGEOM_force_sfs'
|
|---|
| 1383 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1384 | _COST_MEDIUM;
|
|---|
| 1385 |
|
|---|
| 1386 | -- Availability: 2.1.0
|
|---|
| 1387 | CREATE OR REPLACE FUNCTION ST_ForceSFS(geometry, version text)
|
|---|
| 1388 | RETURNS geometry
|
|---|
| 1389 | AS 'MODULE_PATHNAME', 'LWGEOM_force_sfs'
|
|---|
| 1390 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1391 | _COST_MEDIUM;
|
|---|
| 1392 |
|
|---|
| 1393 | -- Availability: 1.2.2
|
|---|
| 1394 | CREATE OR REPLACE FUNCTION ST_Expand(box3d,float8)
|
|---|
| 1395 | RETURNS box3d
|
|---|
| 1396 | AS 'MODULE_PATHNAME', 'BOX3D_expand'
|
|---|
| 1397 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1398 | _COST_LOW;
|
|---|
| 1399 |
|
|---|
| 1400 | -- Availability: 2.3.0
|
|---|
| 1401 | CREATE OR REPLACE FUNCTION ST_Expand(box box3d, dx float8, dy float8, dz float8 DEFAULT 0)
|
|---|
| 1402 | RETURNS box3d
|
|---|
| 1403 | AS 'MODULE_PATHNAME', 'BOX3D_expand'
|
|---|
| 1404 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1405 | _COST_LOW;
|
|---|
| 1406 |
|
|---|
| 1407 | -- Availability: 1.2.2
|
|---|
| 1408 | CREATE OR REPLACE FUNCTION ST_Expand(geometry,float8)
|
|---|
| 1409 | RETURNS geometry
|
|---|
| 1410 | AS 'MODULE_PATHNAME', 'LWGEOM_expand'
|
|---|
| 1411 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1412 | _COST_LOW;
|
|---|
| 1413 |
|
|---|
| 1414 | -- Availability: 2.3.0
|
|---|
| 1415 | CREATE OR REPLACE FUNCTION ST_Expand(geom geometry, dx float8, dy float8, dz float8 DEFAULT 0, dm float8 DEFAULT 0)
|
|---|
| 1416 | RETURNS geometry
|
|---|
| 1417 | AS 'MODULE_PATHNAME', 'LWGEOM_expand'
|
|---|
| 1418 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1419 | _COST_LOW;
|
|---|
| 1420 |
|
|---|
| 1421 | -- PostGIS equivalent function: envelope(geometry)
|
|---|
| 1422 | CREATE OR REPLACE FUNCTION ST_Envelope(geometry)
|
|---|
| 1423 | RETURNS geometry
|
|---|
| 1424 | AS 'MODULE_PATHNAME', 'LWGEOM_envelope'
|
|---|
| 1425 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1426 | _COST_LOW;
|
|---|
| 1427 |
|
|---|
| 1428 | -- Availability: 2.2.0
|
|---|
| 1429 | CREATE OR REPLACE FUNCTION ST_BoundingDiagonal(geom geometry, fits boolean DEFAULT false)
|
|---|
| 1430 | RETURNS geometry
|
|---|
| 1431 | AS 'MODULE_PATHNAME', 'ST_BoundingDiagonal'
|
|---|
| 1432 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1433 | _COST_LOW;
|
|---|
| 1434 |
|
|---|
| 1435 | -- Availability: 1.2.2
|
|---|
| 1436 | CREATE OR REPLACE FUNCTION ST_Reverse(geometry)
|
|---|
| 1437 | RETURNS geometry
|
|---|
| 1438 | AS 'MODULE_PATHNAME', 'LWGEOM_reverse'
|
|---|
| 1439 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1440 | _COST_MEDIUM;
|
|---|
| 1441 |
|
|---|
| 1442 | -- Availability: 2.4.0
|
|---|
| 1443 | CREATE OR REPLACE FUNCTION ST_ForcePolygonCW(geometry)
|
|---|
| 1444 | RETURNS geometry
|
|---|
| 1445 | AS 'MODULE_PATHNAME', 'LWGEOM_force_clockwise_poly'
|
|---|
| 1446 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1447 | _COST_MEDIUM;
|
|---|
| 1448 |
|
|---|
| 1449 | -- Availability: 2.4.0
|
|---|
| 1450 | CREATE OR REPLACE FUNCTION ST_ForcePolygonCCW(geometry)
|
|---|
| 1451 | RETURNS geometry
|
|---|
| 1452 | AS $$ SELECT @extschema@.ST_Reverse(@extschema@.ST_ForcePolygonCW($1)) $$
|
|---|
| 1453 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1454 |
|
|---|
| 1455 | -- Availability: 1.2.2
|
|---|
| 1456 | CREATE OR REPLACE FUNCTION ST_ForceRHR(geometry)
|
|---|
| 1457 | RETURNS geometry
|
|---|
| 1458 | AS 'MODULE_PATHNAME', 'LWGEOM_force_clockwise_poly'
|
|---|
| 1459 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1460 | _COST_MEDIUM;
|
|---|
| 1461 |
|
|---|
| 1462 | -- Availability: 1.5.0
|
|---|
| 1463 | CREATE OR REPLACE FUNCTION postgis_noop(geometry)
|
|---|
| 1464 | RETURNS geometry
|
|---|
| 1465 | AS 'MODULE_PATHNAME', 'LWGEOM_noop'
|
|---|
| 1466 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1467 | _COST_DEFAULT;
|
|---|
| 1468 |
|
|---|
| 1469 | -- Availability: 3.0.0
|
|---|
| 1470 | CREATE OR REPLACE FUNCTION postgis_geos_noop(geometry)
|
|---|
| 1471 | RETURNS geometry
|
|---|
| 1472 | AS 'MODULE_PATHNAME', 'GEOSnoop'
|
|---|
| 1473 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1474 | _COST_DEFAULT;
|
|---|
| 1475 |
|
|---|
| 1476 | -- Availability: 2.3.0
|
|---|
| 1477 | CREATE OR REPLACE FUNCTION ST_Normalize(geom geometry)
|
|---|
| 1478 | RETURNS geometry
|
|---|
| 1479 | AS 'MODULE_PATHNAME', 'ST_Normalize'
|
|---|
| 1480 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1481 | _COST_LOW;
|
|---|
| 1482 |
|
|---|
| 1483 | -- Deprecation in 1.5.0
|
|---|
| 1484 | CREATE OR REPLACE FUNCTION ST_zmflag(geometry)
|
|---|
| 1485 | RETURNS smallint
|
|---|
| 1486 | AS 'MODULE_PATHNAME', 'LWGEOM_zmflag'
|
|---|
| 1487 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1488 | _COST_DEFAULT;
|
|---|
| 1489 |
|
|---|
| 1490 | -- Availability: 1.2.2
|
|---|
| 1491 | CREATE OR REPLACE FUNCTION ST_NDims(geometry)
|
|---|
| 1492 | RETURNS smallint
|
|---|
| 1493 | AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
|
|---|
| 1494 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1495 | _COST_DEFAULT;
|
|---|
| 1496 |
|
|---|
| 1497 | -- Availability: 1.2.2
|
|---|
| 1498 | CREATE OR REPLACE FUNCTION ST_AsEWKT(geometry)
|
|---|
| 1499 | RETURNS TEXT
|
|---|
| 1500 | AS 'MODULE_PATHNAME','LWGEOM_asEWKT'
|
|---|
| 1501 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1502 | _COST_LOW;
|
|---|
| 1503 |
|
|---|
| 1504 | -- Availability: 2.2.0
|
|---|
| 1505 | CREATE OR REPLACE FUNCTION ST_AsTWKB(geom geometry, prec int4 default NULL, prec_z int4 default NULL, prec_m int4 default NULL, with_sizes boolean default NULL, with_boxes boolean default NULL)
|
|---|
| 1506 | RETURNS bytea
|
|---|
| 1507 | AS 'MODULE_PATHNAME','TWKBFromLWGEOM'
|
|---|
| 1508 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 1509 | _COST_MEDIUM;
|
|---|
| 1510 |
|
|---|
| 1511 | -- Availability: 2.2.0
|
|---|
| 1512 | CREATE OR REPLACE FUNCTION ST_AsTWKB(geom geometry[], ids bigint[], prec int4 default NULL, prec_z int4 default NULL, prec_m int4 default NULL, with_sizes boolean default NULL, with_boxes boolean default NULL)
|
|---|
| 1513 | RETURNS bytea
|
|---|
| 1514 | AS 'MODULE_PATHNAME','TWKBFromLWGEOMArray'
|
|---|
| 1515 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 1516 | _COST_MEDIUM;
|
|---|
| 1517 |
|
|---|
| 1518 | -- Availability: 1.2.2
|
|---|
| 1519 | CREATE OR REPLACE FUNCTION ST_AsEWKB(geometry)
|
|---|
| 1520 | RETURNS BYTEA
|
|---|
| 1521 | AS 'MODULE_PATHNAME','WKBFromLWGEOM'
|
|---|
| 1522 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1523 | _COST_LOW;
|
|---|
| 1524 |
|
|---|
| 1525 | -- Availability: 1.2.2
|
|---|
| 1526 | CREATE OR REPLACE FUNCTION ST_AsHEXEWKB(geometry)
|
|---|
| 1527 | RETURNS TEXT
|
|---|
| 1528 | AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
|
|---|
| 1529 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1530 | _COST_LOW;
|
|---|
| 1531 |
|
|---|
| 1532 | -- Availability: 1.2.2
|
|---|
| 1533 | CREATE OR REPLACE FUNCTION ST_AsHEXEWKB(geometry, text)
|
|---|
| 1534 | RETURNS TEXT
|
|---|
| 1535 | AS 'MODULE_PATHNAME','LWGEOM_asHEXEWKB'
|
|---|
| 1536 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1537 | _COST_LOW;
|
|---|
| 1538 |
|
|---|
| 1539 | -- Availability: 1.2.2
|
|---|
| 1540 | CREATE OR REPLACE FUNCTION ST_AsEWKB(geometry,text)
|
|---|
| 1541 | RETURNS bytea
|
|---|
| 1542 | AS 'MODULE_PATHNAME','WKBFromLWGEOM'
|
|---|
| 1543 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1544 | _COST_LOW;
|
|---|
| 1545 |
|
|---|
| 1546 | -- Availability: 2.0.0
|
|---|
| 1547 | CREATE OR REPLACE FUNCTION ST_AsLatLonText(geom geometry, tmpl text DEFAULT '')
|
|---|
| 1548 | RETURNS text
|
|---|
| 1549 | AS 'MODULE_PATHNAME','LWGEOM_to_latlon'
|
|---|
| 1550 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1551 | _COST_LOW;
|
|---|
| 1552 |
|
|---|
| 1553 | -- Deprecation in 1.2.3
|
|---|
| 1554 | CREATE OR REPLACE FUNCTION GeomFromEWKB(bytea)
|
|---|
| 1555 | RETURNS geometry
|
|---|
| 1556 | AS 'MODULE_PATHNAME','LWGEOMFromEWKB'
|
|---|
| 1557 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1558 | _COST_LOW;
|
|---|
| 1559 |
|
|---|
| 1560 | -- Availability: 1.2.2
|
|---|
| 1561 | CREATE OR REPLACE FUNCTION ST_GeomFromEWKB(bytea)
|
|---|
| 1562 | RETURNS geometry
|
|---|
| 1563 | AS 'MODULE_PATHNAME','LWGEOMFromEWKB'
|
|---|
| 1564 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1565 | _COST_LOW;
|
|---|
| 1566 |
|
|---|
| 1567 | -- Availability: 2.2
|
|---|
| 1568 | CREATE OR REPLACE FUNCTION ST_GeomFromTWKB(bytea)
|
|---|
| 1569 | RETURNS geometry
|
|---|
| 1570 | AS 'MODULE_PATHNAME','LWGEOMFromTWKB'
|
|---|
| 1571 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1572 | _COST_LOW;
|
|---|
| 1573 |
|
|---|
| 1574 | -- Deprecation in 1.2.3
|
|---|
| 1575 | CREATE OR REPLACE FUNCTION GeomFromEWKT(text)
|
|---|
| 1576 | RETURNS geometry
|
|---|
| 1577 | AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
|
|---|
| 1578 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1579 | _COST_LOW;
|
|---|
| 1580 |
|
|---|
| 1581 | -- Availability: 1.2.2
|
|---|
| 1582 | CREATE OR REPLACE FUNCTION ST_GeomFromEWKT(text)
|
|---|
| 1583 | RETURNS geometry
|
|---|
| 1584 | AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
|
|---|
| 1585 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1586 | _COST_LOW;
|
|---|
| 1587 |
|
|---|
| 1588 | -- Availability: 1.5.0
|
|---|
| 1589 | CREATE OR REPLACE FUNCTION postgis_cache_bbox()
|
|---|
| 1590 | RETURNS trigger
|
|---|
| 1591 | AS 'MODULE_PATHNAME', 'cache_bbox'
|
|---|
| 1592 | LANGUAGE 'c';
|
|---|
| 1593 |
|
|---|
| 1594 | ------------------------------------------------------------------------
|
|---|
| 1595 | -- CONSTRUCTORS
|
|---|
| 1596 | ------------------------------------------------------------------------
|
|---|
| 1597 |
|
|---|
| 1598 | -- Availability: 1.2.2
|
|---|
| 1599 | CREATE OR REPLACE FUNCTION ST_MakePoint(float8, float8)
|
|---|
| 1600 | RETURNS geometry
|
|---|
| 1601 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
|
|---|
| 1602 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1603 | _COST_LOW;
|
|---|
| 1604 |
|
|---|
| 1605 | -- Availability: 1.2.2
|
|---|
| 1606 | CREATE OR REPLACE FUNCTION ST_MakePoint(float8, float8, float8)
|
|---|
| 1607 | RETURNS geometry
|
|---|
| 1608 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
|
|---|
| 1609 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1610 | _COST_LOW;
|
|---|
| 1611 |
|
|---|
| 1612 | -- Availability: 1.2.2
|
|---|
| 1613 | CREATE OR REPLACE FUNCTION ST_MakePoint(float8, float8, float8, float8)
|
|---|
| 1614 | RETURNS geometry
|
|---|
| 1615 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
|
|---|
| 1616 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1617 | _COST_LOW;
|
|---|
| 1618 |
|
|---|
| 1619 | -- Availability: 1.3.4
|
|---|
| 1620 | CREATE OR REPLACE FUNCTION ST_MakePointM(float8, float8, float8)
|
|---|
| 1621 | RETURNS geometry
|
|---|
| 1622 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoint3dm'
|
|---|
| 1623 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1624 | _COST_LOW;
|
|---|
| 1625 |
|
|---|
| 1626 | -- Availability: 2.0.0
|
|---|
| 1627 | CREATE OR REPLACE FUNCTION ST_3DMakeBox(geom1 geometry, geom2 geometry)
|
|---|
| 1628 | RETURNS box3d
|
|---|
| 1629 | AS 'MODULE_PATHNAME', 'BOX3D_construct'
|
|---|
| 1630 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1631 | _COST_LOW;
|
|---|
| 1632 |
|
|---|
| 1633 | -- Availability: 1.4.0
|
|---|
| 1634 | CREATE OR REPLACE FUNCTION ST_MakeLine (geometry[])
|
|---|
| 1635 | RETURNS geometry
|
|---|
| 1636 | AS 'MODULE_PATHNAME', 'LWGEOM_makeline_garray'
|
|---|
| 1637 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1638 | _COST_LOW;
|
|---|
| 1639 |
|
|---|
| 1640 | -- Availability: 1.2.2
|
|---|
| 1641 | CREATE OR REPLACE FUNCTION ST_LineFromMultiPoint(geometry)
|
|---|
| 1642 | RETURNS geometry
|
|---|
| 1643 | AS 'MODULE_PATHNAME', 'LWGEOM_line_from_mpoint'
|
|---|
| 1644 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1645 | _COST_LOW;
|
|---|
| 1646 |
|
|---|
| 1647 | -- Availability: 1.2.2
|
|---|
| 1648 | CREATE OR REPLACE FUNCTION ST_MakeLine(geom1 geometry, geom2 geometry)
|
|---|
| 1649 | RETURNS geometry
|
|---|
| 1650 | AS 'MODULE_PATHNAME', 'LWGEOM_makeline'
|
|---|
| 1651 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1652 | _COST_LOW;
|
|---|
| 1653 |
|
|---|
| 1654 | -- Availability: 1.2.2
|
|---|
| 1655 | CREATE OR REPLACE FUNCTION ST_AddPoint(geom1 geometry, geom2 geometry)
|
|---|
| 1656 | RETURNS geometry
|
|---|
| 1657 | AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
|
|---|
| 1658 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1659 | _COST_LOW;
|
|---|
| 1660 |
|
|---|
| 1661 | -- Availability: 1.2.2
|
|---|
| 1662 | CREATE OR REPLACE FUNCTION ST_AddPoint(geom1 geometry, geom2 geometry, integer)
|
|---|
| 1663 | RETURNS geometry
|
|---|
| 1664 | AS 'MODULE_PATHNAME', 'LWGEOM_addpoint'
|
|---|
| 1665 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1666 | _COST_LOW;
|
|---|
| 1667 |
|
|---|
| 1668 | -- Availability: 1.2.2
|
|---|
| 1669 | CREATE OR REPLACE FUNCTION ST_RemovePoint(geometry, integer)
|
|---|
| 1670 | RETURNS geometry
|
|---|
| 1671 | AS 'MODULE_PATHNAME', 'LWGEOM_removepoint'
|
|---|
| 1672 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1673 | _COST_LOW;
|
|---|
| 1674 |
|
|---|
| 1675 | -- Availability: 1.2.2
|
|---|
| 1676 | CREATE OR REPLACE FUNCTION ST_SetPoint(geometry, integer, geometry)
|
|---|
| 1677 | RETURNS geometry
|
|---|
| 1678 | AS 'MODULE_PATHNAME', 'LWGEOM_setpoint_linestring'
|
|---|
| 1679 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1680 | _COST_LOW;
|
|---|
| 1681 |
|
|---|
| 1682 | -- Availability: 1.5.0
|
|---|
| 1683 | -- Availability: 2.0.0 - made srid optional
|
|---|
| 1684 | CREATE OR REPLACE FUNCTION ST_MakeEnvelope(float8, float8, float8, float8, integer DEFAULT 0)
|
|---|
| 1685 | RETURNS geometry
|
|---|
| 1686 | AS 'MODULE_PATHNAME', 'ST_MakeEnvelope'
|
|---|
| 1687 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1688 | _COST_LOW;
|
|---|
| 1689 |
|
|---|
| 1690 | -- Availability: 3.0.0
|
|---|
| 1691 | CREATE OR REPLACE FUNCTION ST_TileEnvelope(zoom integer, x integer, y integer, bounds geometry DEFAULT 'SRID=3857;LINESTRING(-20037508.342789 -20037508.342789, 20037508.342789 20037508.342789)'::geometry)
|
|---|
| 1692 | RETURNS geometry
|
|---|
| 1693 | AS 'MODULE_PATHNAME', 'ST_TileEnvelope'
|
|---|
| 1694 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1695 | _COST_LOW;
|
|---|
| 1696 |
|
|---|
| 1697 | -- Availability: 1.2.2
|
|---|
| 1698 | CREATE OR REPLACE FUNCTION ST_MakePolygon(geometry, geometry[])
|
|---|
| 1699 | RETURNS geometry
|
|---|
| 1700 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
|
|---|
| 1701 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1702 | _COST_LOW;
|
|---|
| 1703 |
|
|---|
| 1704 | -- Availability: 1.2.2
|
|---|
| 1705 | CREATE OR REPLACE FUNCTION ST_MakePolygon(geometry)
|
|---|
| 1706 | RETURNS geometry
|
|---|
| 1707 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoly'
|
|---|
| 1708 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1709 | _COST_LOW;
|
|---|
| 1710 |
|
|---|
| 1711 | -- Availability: 1.2.2
|
|---|
| 1712 | CREATE OR REPLACE FUNCTION ST_BuildArea(geometry)
|
|---|
| 1713 | RETURNS geometry
|
|---|
| 1714 | AS 'MODULE_PATHNAME', 'ST_BuildArea'
|
|---|
| 1715 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1716 | _COST_HIGH;
|
|---|
| 1717 |
|
|---|
| 1718 | -- Availability: 1.4.0
|
|---|
| 1719 | CREATE OR REPLACE FUNCTION ST_Polygonize (geometry[])
|
|---|
| 1720 | RETURNS geometry
|
|---|
| 1721 | AS 'MODULE_PATHNAME', 'polygonize_garray'
|
|---|
| 1722 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1723 | _COST_HIGH;
|
|---|
| 1724 |
|
|---|
| 1725 | -- Availability: 2.2
|
|---|
| 1726 | CREATE OR REPLACE FUNCTION ST_ClusterIntersecting(geometry[])
|
|---|
| 1727 | RETURNS geometry[]
|
|---|
| 1728 | AS 'MODULE_PATHNAME', 'clusterintersecting_garray'
|
|---|
| 1729 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1730 | _COST_HIGH;
|
|---|
| 1731 |
|
|---|
| 1732 | -- Availability: 2.2
|
|---|
| 1733 | CREATE OR REPLACE FUNCTION ST_ClusterWithin(geometry[], float8)
|
|---|
| 1734 | RETURNS geometry[]
|
|---|
| 1735 | AS 'MODULE_PATHNAME', 'cluster_within_distance_garray'
|
|---|
| 1736 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1737 | _COST_HIGH;
|
|---|
| 1738 |
|
|---|
| 1739 | -- Availability: 2.3
|
|---|
| 1740 | CREATE OR REPLACE FUNCTION ST_ClusterDBSCAN (geometry, eps float8, minpoints int)
|
|---|
| 1741 | RETURNS int
|
|---|
| 1742 | AS 'MODULE_PATHNAME', 'ST_ClusterDBSCAN'
|
|---|
| 1743 | LANGUAGE 'c' IMMUTABLE STRICT WINDOW _PARALLEL
|
|---|
| 1744 | _COST_HIGH;
|
|---|
| 1745 |
|
|---|
| 1746 | -- Availability: 1.2.2
|
|---|
| 1747 | CREATE OR REPLACE FUNCTION ST_LineMerge(geometry)
|
|---|
| 1748 | RETURNS geometry
|
|---|
| 1749 | AS 'MODULE_PATHNAME', 'linemerge'
|
|---|
| 1750 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1751 | _COST_HIGH;
|
|---|
| 1752 |
|
|---|
| 1753 | -----------------------------------------------------------------------------
|
|---|
| 1754 | -- Affine transforms
|
|---|
| 1755 | -----------------------------------------------------------------------------
|
|---|
| 1756 |
|
|---|
| 1757 | -- Availability: 1.2.2
|
|---|
| 1758 | CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8,float8)
|
|---|
| 1759 | RETURNS geometry
|
|---|
| 1760 | AS 'MODULE_PATHNAME', 'LWGEOM_affine'
|
|---|
| 1761 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1762 | _COST_MEDIUM; -- reset cost, see #3675
|
|---|
| 1763 |
|
|---|
| 1764 | -- Availability: 1.2.2
|
|---|
| 1765 | CREATE OR REPLACE FUNCTION ST_Affine(geometry,float8,float8,float8,float8,float8,float8)
|
|---|
| 1766 | RETURNS geometry
|
|---|
| 1767 | AS 'SELECT @extschema@.ST_Affine($1, $2, $3, 0, $4, $5, 0, 0, 0, 1, $6, $7, 0)'
|
|---|
| 1768 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1769 |
|
|---|
| 1770 | -- Availability: 1.2.2
|
|---|
| 1771 | CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8)
|
|---|
| 1772 | RETURNS geometry
|
|---|
| 1773 | AS 'SELECT @extschema@.ST_Affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, 0, 0, 0)'
|
|---|
| 1774 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1775 |
|
|---|
| 1776 | -- Availability: 2.0.0
|
|---|
| 1777 | CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8,float8,float8)
|
|---|
| 1778 | RETURNS geometry
|
|---|
| 1779 | AS 'SELECT @extschema@.ST_Affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, $3 - cos($2) * $3 + sin($2) * $4, $4 - sin($2) * $3 - cos($2) * $4, 0)'
|
|---|
| 1780 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1781 |
|
|---|
| 1782 | -- Availability: 2.0.0
|
|---|
| 1783 | CREATE OR REPLACE FUNCTION ST_Rotate(geometry,float8,geometry)
|
|---|
| 1784 | RETURNS geometry
|
|---|
| 1785 | AS 'SELECT @extschema@.ST_Affine($1, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0, 1, @extschema@.ST_X($3) - cos($2) * @extschema@.ST_X($3) + sin($2) * @extschema@.ST_Y($3), @extschema@.ST_Y($3) - sin($2) * @extschema@.ST_X($3) - cos($2) * @extschema@.ST_Y($3), 0)'
|
|---|
| 1786 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1787 |
|
|---|
| 1788 | -- Availability: 1.2.2
|
|---|
| 1789 | CREATE OR REPLACE FUNCTION ST_RotateZ(geometry,float8)
|
|---|
| 1790 | RETURNS geometry
|
|---|
| 1791 | AS 'SELECT @extschema@.ST_Rotate($1, $2)'
|
|---|
| 1792 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1793 |
|
|---|
| 1794 | -- Availability: 1.2.2
|
|---|
| 1795 | CREATE OR REPLACE FUNCTION ST_RotateX(geometry,float8)
|
|---|
| 1796 | RETURNS geometry
|
|---|
| 1797 | AS 'SELECT @extschema@.ST_Affine($1, 1, 0, 0, 0, cos($2), -sin($2), 0, sin($2), cos($2), 0, 0, 0)'
|
|---|
| 1798 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1799 |
|
|---|
| 1800 | -- Availability: 1.2.2
|
|---|
| 1801 | CREATE OR REPLACE FUNCTION ST_RotateY(geometry,float8)
|
|---|
| 1802 | RETURNS geometry
|
|---|
| 1803 | AS 'SELECT @extschema@.ST_Affine($1, cos($2), 0, sin($2), 0, 1, 0, -sin($2), 0, cos($2), 0, 0, 0)'
|
|---|
| 1804 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1805 |
|
|---|
| 1806 | -- Availability: 1.2.2
|
|---|
| 1807 | CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8,float8)
|
|---|
| 1808 | RETURNS geometry
|
|---|
| 1809 | AS 'SELECT @extschema@.ST_Affine($1, 1, 0, 0, 0, 1, 0, 0, 0, 1, $2, $3, $4)'
|
|---|
| 1810 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1811 |
|
|---|
| 1812 | -- Availability: 1.2.2
|
|---|
| 1813 | CREATE OR REPLACE FUNCTION ST_Translate(geometry,float8,float8)
|
|---|
| 1814 | RETURNS geometry
|
|---|
| 1815 | AS 'SELECT @extschema@.ST_Translate($1, $2, $3, 0)'
|
|---|
| 1816 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1817 |
|
|---|
| 1818 | -- Availability: 2.2.0
|
|---|
| 1819 | CREATE OR REPLACE FUNCTION ST_Scale(geometry,geometry)
|
|---|
| 1820 | RETURNS geometry
|
|---|
| 1821 | AS 'MODULE_PATHNAME', 'ST_Scale'
|
|---|
| 1822 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1823 | _COST_MEDIUM;
|
|---|
| 1824 |
|
|---|
| 1825 | -- Availability: 2.5.0
|
|---|
| 1826 | CREATE OR REPLACE FUNCTION ST_Scale(geometry,geometry,origin geometry)
|
|---|
| 1827 | RETURNS geometry
|
|---|
| 1828 | AS 'MODULE_PATHNAME', 'ST_Scale'
|
|---|
| 1829 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1830 | _COST_MEDIUM;
|
|---|
| 1831 |
|
|---|
| 1832 | -- Availability: 1.2.2
|
|---|
| 1833 | CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8,float8)
|
|---|
| 1834 | RETURNS geometry
|
|---|
| 1835 | --AS 'SELECT ST_Affine($1, $2, 0, 0, 0, $3, 0, 0, 0, $4, 0, 0, 0)'
|
|---|
| 1836 | AS 'SELECT @extschema@.ST_Scale($1, @extschema@.ST_MakePoint($2, $3, $4))'
|
|---|
| 1837 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1838 |
|
|---|
| 1839 | -- Availability: 1.2.2
|
|---|
| 1840 | CREATE OR REPLACE FUNCTION ST_Scale(geometry,float8,float8)
|
|---|
| 1841 | RETURNS geometry
|
|---|
| 1842 | AS 'SELECT @extschema@.ST_Scale($1, $2, $3, 1)'
|
|---|
| 1843 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1844 |
|
|---|
| 1845 | -- Availability: 1.2.2
|
|---|
| 1846 | CREATE OR REPLACE FUNCTION ST_Transscale(geometry,float8,float8,float8,float8)
|
|---|
| 1847 | RETURNS geometry
|
|---|
| 1848 | AS 'SELECT @extschema@.ST_Affine($1, $4, 0, 0, 0, $5, 0,
|
|---|
| 1849 | 0, 0, 1, $2 * $4, $3 * $5, 0)'
|
|---|
| 1850 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 1851 |
|
|---|
| 1852 | -----------------------------------------------------------------------
|
|---|
| 1853 | -- Dumping
|
|---|
| 1854 | -----------------------------------------------------------------------
|
|---|
| 1855 |
|
|---|
| 1856 | -- Availability: 1.0.0
|
|---|
| 1857 | CREATE TYPE geometry_dump AS (
|
|---|
| 1858 | path integer[],
|
|---|
| 1859 | geom geometry
|
|---|
| 1860 | );
|
|---|
| 1861 |
|
|---|
| 1862 | -- Availability: 1.2.2
|
|---|
| 1863 | CREATE OR REPLACE FUNCTION ST_Dump(geometry)
|
|---|
| 1864 | RETURNS SETOF geometry_dump
|
|---|
| 1865 | AS 'MODULE_PATHNAME', 'LWGEOM_dump'
|
|---|
| 1866 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1867 | _COST_MEDIUM;
|
|---|
| 1868 |
|
|---|
| 1869 | -- Availability: 1.2.2
|
|---|
| 1870 | CREATE OR REPLACE FUNCTION ST_DumpRings(geometry)
|
|---|
| 1871 | RETURNS SETOF geometry_dump
|
|---|
| 1872 | AS 'MODULE_PATHNAME', 'LWGEOM_dump_rings'
|
|---|
| 1873 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1874 | _COST_MEDIUM;
|
|---|
| 1875 |
|
|---|
| 1876 | -----------------------------------------------------------------------
|
|---|
| 1877 | -- ST_DumpPoints()
|
|---|
| 1878 | -----------------------------------------------------------------------
|
|---|
| 1879 | -- This function mimicks that of ST_Dump for collections, but this function
|
|---|
| 1880 | -- that returns a path and all the points that make up a particular geometry.
|
|---|
| 1881 | -- Availability: 1.5.0
|
|---|
| 1882 | CREATE OR REPLACE FUNCTION ST_DumpPoints(geometry)
|
|---|
| 1883 | RETURNS SETOF geometry_dump
|
|---|
| 1884 | AS 'MODULE_PATHNAME', 'LWGEOM_dumppoints'
|
|---|
| 1885 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 1886 | COST 100;
|
|---|
| 1887 |
|
|---|
| 1888 | -------------------------------------------------------------------
|
|---|
| 1889 | -- SPATIAL_REF_SYS
|
|---|
| 1890 | -------------------------------------------------------------------
|
|---|
| 1891 | CREATE TABLE spatial_ref_sys (
|
|---|
| 1892 | srid integer not null primary key
|
|---|
| 1893 | check (srid > 0 and srid <= SRID_USR_MAX),
|
|---|
| 1894 | auth_name varchar(256),
|
|---|
| 1895 | auth_srid integer,
|
|---|
| 1896 | srtext varchar(2048),
|
|---|
| 1897 | proj4text varchar(2048)
|
|---|
| 1898 | );
|
|---|
| 1899 |
|
|---|
| 1900 | -----------------------------------------------------------------------
|
|---|
| 1901 | -- POPULATE_GEOMETRY_COLUMNS()
|
|---|
| 1902 | -----------------------------------------------------------------------
|
|---|
| 1903 | -- Truncates and refills the geometry_columns table from all tables and
|
|---|
| 1904 | -- views in the database that contain geometry columns. This function
|
|---|
| 1905 | -- is a simple wrapper for populate_geometry_columns(oid). In essence,
|
|---|
| 1906 | -- this function ensures every geometry column in the database has the
|
|---|
| 1907 | -- appropriate spatial contraints (for tables) and exists in the
|
|---|
| 1908 | -- geometry_columns table.
|
|---|
| 1909 | -- Availability: 1.4.0
|
|---|
| 1910 | -- Revised: 2.0.0 -- no longer deletes from geometry_columns
|
|---|
| 1911 | -- Has new use_typmod option that defaults to true.
|
|---|
| 1912 | -- If use typmod is set to false will use old constraint behavior.
|
|---|
| 1913 | -- Will only touch table missing typmod or geometry constraints
|
|---|
| 1914 | -----------------------------------------------------------------------
|
|---|
| 1915 | CREATE OR REPLACE FUNCTION populate_geometry_columns(use_typmod boolean DEFAULT true)
|
|---|
| 1916 | RETURNS text AS
|
|---|
| 1917 | $$
|
|---|
| 1918 | DECLARE
|
|---|
| 1919 | inserted integer;
|
|---|
| 1920 | oldcount integer;
|
|---|
| 1921 | probed integer;
|
|---|
| 1922 | stale integer;
|
|---|
| 1923 | gcs RECORD;
|
|---|
| 1924 | gc RECORD;
|
|---|
| 1925 | gsrid integer;
|
|---|
| 1926 | gndims integer;
|
|---|
| 1927 | gtype text;
|
|---|
| 1928 | query text;
|
|---|
| 1929 | gc_is_valid boolean;
|
|---|
| 1930 |
|
|---|
| 1931 | BEGIN
|
|---|
| 1932 | SELECT count(*) INTO oldcount FROM @extschema@.geometry_columns;
|
|---|
| 1933 | inserted := 0;
|
|---|
| 1934 |
|
|---|
| 1935 | -- Count the number of geometry columns in all tables and views
|
|---|
| 1936 | SELECT count(DISTINCT c.oid) INTO probed
|
|---|
| 1937 | FROM pg_class c,
|
|---|
| 1938 | pg_attribute a,
|
|---|
| 1939 | pg_type t,
|
|---|
| 1940 | pg_namespace n
|
|---|
| 1941 | WHERE c.relkind IN('r','v','f')
|
|---|
| 1942 | AND t.typname = 'geometry'
|
|---|
| 1943 | AND a.attisdropped = false
|
|---|
| 1944 | AND a.atttypid = t.oid
|
|---|
| 1945 | AND a.attrelid = c.oid
|
|---|
| 1946 | AND c.relnamespace = n.oid
|
|---|
| 1947 | AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns' ;
|
|---|
| 1948 |
|
|---|
| 1949 | -- Iterate through all non-dropped geometry columns
|
|---|
| 1950 | RAISE DEBUG 'Processing Tables.....';
|
|---|
| 1951 |
|
|---|
| 1952 | FOR gcs IN
|
|---|
| 1953 | SELECT DISTINCT ON (c.oid) c.oid, n.nspname, c.relname
|
|---|
| 1954 | FROM pg_class c,
|
|---|
| 1955 | pg_attribute a,
|
|---|
| 1956 | pg_type t,
|
|---|
| 1957 | pg_namespace n
|
|---|
| 1958 | WHERE c.relkind IN( 'r', 'f')
|
|---|
| 1959 | AND t.typname = 'geometry'
|
|---|
| 1960 | AND a.attisdropped = false
|
|---|
| 1961 | AND a.atttypid = t.oid
|
|---|
| 1962 | AND a.attrelid = c.oid
|
|---|
| 1963 | AND c.relnamespace = n.oid
|
|---|
| 1964 | AND n.nspname NOT ILIKE 'pg_temp%' AND c.relname != 'raster_columns'
|
|---|
| 1965 | LOOP
|
|---|
| 1966 |
|
|---|
| 1967 | inserted := inserted + @extschema@.populate_geometry_columns(gcs.oid, use_typmod);
|
|---|
| 1968 | END LOOP;
|
|---|
| 1969 |
|
|---|
| 1970 | IF oldcount > inserted THEN
|
|---|
| 1971 | stale = oldcount-inserted;
|
|---|
| 1972 | ELSE
|
|---|
| 1973 | stale = 0;
|
|---|
| 1974 | END IF;
|
|---|
| 1975 |
|
|---|
| 1976 | RETURN 'probed:' ||probed|| ' inserted:'||inserted;
|
|---|
| 1977 | END
|
|---|
| 1978 |
|
|---|
| 1979 | $$
|
|---|
| 1980 | LANGUAGE 'plpgsql' VOLATILE;
|
|---|
| 1981 |
|
|---|
| 1982 | -----------------------------------------------------------------------
|
|---|
| 1983 | -- POPULATE_GEOMETRY_COLUMNS(tbl_oid oid)
|
|---|
| 1984 | -----------------------------------------------------------------------
|
|---|
| 1985 | -- DELETEs from and reINSERTs into the geometry_columns table all entries
|
|---|
| 1986 | -- associated with the oid of a particular table or view.
|
|---|
| 1987 | --
|
|---|
| 1988 | -- If the provided oid is for a table, this function tries to determine
|
|---|
| 1989 | -- the srid, dimension, and geometry type of the all geometries
|
|---|
| 1990 | -- in the table, adding contraints as necessary to the table. If
|
|---|
| 1991 | -- successful, an appropriate row is inserted into the geometry_columns
|
|---|
| 1992 | -- table, otherwise, the exception is caught and an error notice is
|
|---|
| 1993 | -- raised describing the problem. (This is so the wrapper function
|
|---|
| 1994 | -- populate_geometry_columns() can apply spatial constraints to all
|
|---|
| 1995 | -- geometry columns across an entire database at once without erroring
|
|---|
| 1996 | -- out)
|
|---|
| 1997 | --
|
|---|
| 1998 | -- If the provided oid is for a view, as with a table oid, this function
|
|---|
| 1999 | -- tries to determine the srid, dimension, and type of all the geometries
|
|---|
| 2000 | -- in the view, inserting appropriate entries into the geometry_columns
|
|---|
| 2001 | -- table.
|
|---|
| 2002 | -- Availability: 1.4.0
|
|---|
| 2003 | -----------------------------------------------------------------------
|
|---|
| 2004 | CREATE OR REPLACE FUNCTION populate_geometry_columns(tbl_oid oid, use_typmod boolean DEFAULT true)
|
|---|
| 2005 | RETURNS integer AS
|
|---|
| 2006 | $$
|
|---|
| 2007 | DECLARE
|
|---|
| 2008 | gcs RECORD;
|
|---|
| 2009 | gc RECORD;
|
|---|
| 2010 | gc_old RECORD;
|
|---|
| 2011 | gsrid integer;
|
|---|
| 2012 | gndims integer;
|
|---|
| 2013 | gtype text;
|
|---|
| 2014 | query text;
|
|---|
| 2015 | gc_is_valid boolean;
|
|---|
| 2016 | inserted integer;
|
|---|
| 2017 | constraint_successful boolean := false;
|
|---|
| 2018 |
|
|---|
| 2019 | BEGIN
|
|---|
| 2020 | inserted := 0;
|
|---|
| 2021 |
|
|---|
| 2022 | -- Iterate through all geometry columns in this table
|
|---|
| 2023 | FOR gcs IN
|
|---|
| 2024 | SELECT n.nspname, c.relname, a.attname
|
|---|
| 2025 | FROM pg_class c,
|
|---|
| 2026 | pg_attribute a,
|
|---|
| 2027 | pg_type t,
|
|---|
| 2028 | pg_namespace n
|
|---|
| 2029 | WHERE c.relkind IN('r', 'f')
|
|---|
| 2030 | AND t.typname = 'geometry'
|
|---|
| 2031 | AND a.attisdropped = false
|
|---|
| 2032 | AND a.atttypid = t.oid
|
|---|
| 2033 | AND a.attrelid = c.oid
|
|---|
| 2034 | AND c.relnamespace = n.oid
|
|---|
| 2035 | AND n.nspname NOT ILIKE 'pg_temp%'
|
|---|
| 2036 | AND c.oid = tbl_oid
|
|---|
| 2037 | LOOP
|
|---|
| 2038 |
|
|---|
| 2039 | RAISE DEBUG 'Processing column %.%.%', gcs.nspname, gcs.relname, gcs.attname;
|
|---|
| 2040 |
|
|---|
| 2041 | gc_is_valid := true;
|
|---|
| 2042 | -- Find the srid, coord_dimension, and type of current geometry
|
|---|
| 2043 | -- in geometry_columns -- which is now a view
|
|---|
| 2044 |
|
|---|
| 2045 | SELECT type, srid, coord_dimension INTO gc_old
|
|---|
| 2046 | FROM geometry_columns
|
|---|
| 2047 | WHERE f_table_schema = gcs.nspname AND f_table_name = gcs.relname AND f_geometry_column = gcs.attname;
|
|---|
| 2048 |
|
|---|
| 2049 | IF upper(gc_old.type) = 'GEOMETRY' THEN
|
|---|
| 2050 | -- This is an unconstrained geometry we need to do something
|
|---|
| 2051 | -- We need to figure out what to set the type by inspecting the data
|
|---|
| 2052 | EXECUTE 'SELECT @extschema@.ST_srid(' || quote_ident(gcs.attname) || ') As srid, @extschema@.GeometryType(' || quote_ident(gcs.attname) || ') As type, @extschema@.ST_NDims(' || quote_ident(gcs.attname) || ') As dims ' ||
|
|---|
| 2053 | ' FROM ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
|
|---|
| 2054 | ' WHERE ' || quote_ident(gcs.attname) || ' IS NOT NULL LIMIT 1;'
|
|---|
| 2055 | INTO gc;
|
|---|
| 2056 | IF gc IS NULL THEN -- there is no data so we can not determine geometry type
|
|---|
| 2057 | RAISE WARNING 'No data in table %.%, so no information to determine geometry type and srid', gcs.nspname, gcs.relname;
|
|---|
| 2058 | RETURN 0;
|
|---|
| 2059 | END IF;
|
|---|
| 2060 | gsrid := gc.srid; gtype := gc.type; gndims := gc.dims;
|
|---|
| 2061 |
|
|---|
| 2062 | IF use_typmod THEN
|
|---|
| 2063 | BEGIN
|
|---|
| 2064 | EXECUTE 'ALTER TABLE ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || ' ALTER COLUMN ' || quote_ident(gcs.attname) ||
|
|---|
| 2065 | ' TYPE geometry(' || postgis_type_name(gtype, gndims, true) || ', ' || gsrid::text || ') ';
|
|---|
| 2066 | inserted := inserted + 1;
|
|---|
| 2067 | EXCEPTION
|
|---|
| 2068 | WHEN invalid_parameter_value OR feature_not_supported THEN
|
|---|
| 2069 | RAISE WARNING 'Could not convert ''%'' in ''%.%'' to use typmod with srid %, type %: %', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), gsrid, postgis_type_name(gtype, gndims, true), SQLERRM;
|
|---|
| 2070 | gc_is_valid := false;
|
|---|
| 2071 | END;
|
|---|
| 2072 |
|
|---|
| 2073 | ELSE
|
|---|
| 2074 | -- Try to apply srid check to column
|
|---|
| 2075 | constraint_successful = false;
|
|---|
| 2076 | IF (gsrid > 0 AND postgis_constraint_srid(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
|
|---|
| 2077 | BEGIN
|
|---|
| 2078 | EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) ||
|
|---|
| 2079 | ' ADD CONSTRAINT ' || quote_ident('enforce_srid_' || gcs.attname) ||
|
|---|
| 2080 | ' CHECK (ST_srid(' || quote_ident(gcs.attname) || ') = ' || gsrid || ')';
|
|---|
| 2081 | constraint_successful := true;
|
|---|
| 2082 | EXCEPTION
|
|---|
| 2083 | WHEN check_violation THEN
|
|---|
| 2084 | RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (st_srid(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gsrid;
|
|---|
| 2085 | gc_is_valid := false;
|
|---|
| 2086 | END;
|
|---|
| 2087 | END IF;
|
|---|
| 2088 |
|
|---|
| 2089 | -- Try to apply ndims check to column
|
|---|
| 2090 | IF (gndims IS NOT NULL AND postgis_constraint_dims(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
|
|---|
| 2091 | BEGIN
|
|---|
| 2092 | EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
|
|---|
| 2093 | ADD CONSTRAINT ' || quote_ident('enforce_dims_' || gcs.attname) || '
|
|---|
| 2094 | CHECK (st_ndims(' || quote_ident(gcs.attname) || ') = '||gndims||')';
|
|---|
| 2095 | constraint_successful := true;
|
|---|
| 2096 | EXCEPTION
|
|---|
| 2097 | WHEN check_violation THEN
|
|---|
| 2098 | RAISE WARNING 'Not inserting ''%'' in ''%.%'' into geometry_columns: could not apply constraint CHECK (st_ndims(%) = %)', quote_ident(gcs.attname), quote_ident(gcs.nspname), quote_ident(gcs.relname), quote_ident(gcs.attname), gndims;
|
|---|
| 2099 | gc_is_valid := false;
|
|---|
| 2100 | END;
|
|---|
| 2101 | END IF;
|
|---|
| 2102 |
|
|---|
| 2103 | -- Try to apply geometrytype check to column
|
|---|
| 2104 | IF (gtype IS NOT NULL AND postgis_constraint_type(gcs.nspname, gcs.relname,gcs.attname) IS NULL ) THEN
|
|---|
| 2105 | BEGIN
|
|---|
| 2106 | EXECUTE 'ALTER TABLE ONLY ' || quote_ident(gcs.nspname) || '.' || quote_ident(gcs.relname) || '
|
|---|
| 2107 | ADD CONSTRAINT ' || quote_ident('enforce_geotype_' || gcs.attname) || '
|
|---|
| 2108 | CHECK (geometrytype(' || quote_ident(gcs.attname) || ') = ' || quote_literal(gtype) || ')';
|
|---|
| 2109 | constraint_successful := true;
|
|---|
| 2110 | EXCEPTION
|
|---|
| 2111 | WHEN check_violation THEN
|
|---|
| 2112 | -- No geometry check can be applied. This column contains a number of geometry types.
|
|---|
| 2113 | RAISE WARNING 'Could not add geometry type check (%) to table column: %.%.%', gtype, quote_ident(gcs.nspname),quote_ident(gcs.relname),quote_ident(gcs.attname);
|
|---|
| 2114 | END;
|
|---|
| 2115 | END IF;
|
|---|
| 2116 | --only count if we were successful in applying at least one constraint
|
|---|
| 2117 | IF constraint_successful THEN
|
|---|
| 2118 | inserted := inserted + 1;
|
|---|
| 2119 | END IF;
|
|---|
| 2120 | END IF;
|
|---|
| 2121 | END IF;
|
|---|
| 2122 |
|
|---|
| 2123 | END LOOP;
|
|---|
| 2124 |
|
|---|
| 2125 | RETURN inserted;
|
|---|
| 2126 | END
|
|---|
| 2127 |
|
|---|
| 2128 | $$
|
|---|
| 2129 | LANGUAGE 'plpgsql' VOLATILE;
|
|---|
| 2130 |
|
|---|
| 2131 | -----------------------------------------------------------------------
|
|---|
| 2132 | -- ADDGEOMETRYCOLUMN
|
|---|
| 2133 | -- <catalogue>, <schema>, <table>, <column>, <srid>, <type>, <dim>
|
|---|
| 2134 | -----------------------------------------------------------------------
|
|---|
| 2135 | --
|
|---|
| 2136 | -- Type can be one of GEOMETRY, GEOMETRYCOLLECTION, POINT, MULTIPOINT, POLYGON,
|
|---|
| 2137 | -- MULTIPOLYGON, LINESTRING, or MULTILINESTRING.
|
|---|
| 2138 | --
|
|---|
| 2139 | -- Geometry types (except GEOMETRY) are checked for consistency using a CHECK constraint.
|
|---|
| 2140 | -- Uses an ALTER TABLE command to add the geometry column to the table.
|
|---|
| 2141 | -- Addes a row to geometry_columns.
|
|---|
| 2142 | -- Addes a constraint on the table that all the geometries MUST have the same
|
|---|
| 2143 | -- SRID. Checks the coord_dimension to make sure its between 0 and 3.
|
|---|
| 2144 | -- Should also check the precision grid (future expansion).
|
|---|
| 2145 | --
|
|---|
| 2146 | -----------------------------------------------------------------------
|
|---|
| 2147 | CREATE OR REPLACE FUNCTION AddGeometryColumn(catalog_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid_in integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true)
|
|---|
| 2148 | RETURNS text
|
|---|
| 2149 | AS
|
|---|
| 2150 | $$
|
|---|
| 2151 | DECLARE
|
|---|
| 2152 | rec RECORD;
|
|---|
| 2153 | sr varchar;
|
|---|
| 2154 | real_schema name;
|
|---|
| 2155 | sql text;
|
|---|
| 2156 | new_srid integer;
|
|---|
| 2157 |
|
|---|
| 2158 | BEGIN
|
|---|
| 2159 |
|
|---|
| 2160 | -- Verify geometry type
|
|---|
| 2161 | IF (postgis_type_name(new_type,new_dim) IS NULL )
|
|---|
| 2162 | THEN
|
|---|
| 2163 | RAISE EXCEPTION 'Invalid type name "%(%)" - valid ones are:
|
|---|
| 2164 | POINT, MULTIPOINT,
|
|---|
| 2165 | LINESTRING, MULTILINESTRING,
|
|---|
| 2166 | POLYGON, MULTIPOLYGON,
|
|---|
| 2167 | CIRCULARSTRING, COMPOUNDCURVE, MULTICURVE,
|
|---|
| 2168 | CURVEPOLYGON, MULTISURFACE,
|
|---|
| 2169 | GEOMETRY, GEOMETRYCOLLECTION,
|
|---|
| 2170 | POINTM, MULTIPOINTM,
|
|---|
| 2171 | LINESTRINGM, MULTILINESTRINGM,
|
|---|
| 2172 | POLYGONM, MULTIPOLYGONM,
|
|---|
| 2173 | CIRCULARSTRINGM, COMPOUNDCURVEM, MULTICURVEM
|
|---|
| 2174 | CURVEPOLYGONM, MULTISURFACEM, TRIANGLE, TRIANGLEM,
|
|---|
| 2175 | POLYHEDRALSURFACE, POLYHEDRALSURFACEM, TIN, TINM
|
|---|
| 2176 | or GEOMETRYCOLLECTIONM', new_type, new_dim;
|
|---|
| 2177 | RETURN 'fail';
|
|---|
| 2178 | END IF;
|
|---|
| 2179 |
|
|---|
| 2180 | -- Verify dimension
|
|---|
| 2181 | IF ( (new_dim >4) OR (new_dim <2) ) THEN
|
|---|
| 2182 | RAISE EXCEPTION 'invalid dimension';
|
|---|
| 2183 | RETURN 'fail';
|
|---|
| 2184 | END IF;
|
|---|
| 2185 |
|
|---|
| 2186 | IF ( (new_type LIKE '%M') AND (new_dim!=3) ) THEN
|
|---|
| 2187 | RAISE EXCEPTION 'TypeM needs 3 dimensions';
|
|---|
| 2188 | RETURN 'fail';
|
|---|
| 2189 | END IF;
|
|---|
| 2190 |
|
|---|
| 2191 | -- Verify SRID
|
|---|
| 2192 | IF ( new_srid_in > 0 ) THEN
|
|---|
| 2193 | IF new_srid_in > SRID_USR_MAX THEN
|
|---|
| 2194 | RAISE EXCEPTION 'AddGeometryColumn() - SRID must be <= %', SRID_USR_MAX;
|
|---|
| 2195 | END IF;
|
|---|
| 2196 | new_srid := new_srid_in;
|
|---|
| 2197 | SELECT SRID INTO sr FROM spatial_ref_sys WHERE SRID = new_srid;
|
|---|
| 2198 | IF NOT FOUND THEN
|
|---|
| 2199 | RAISE EXCEPTION 'AddGeometryColumn() - invalid SRID';
|
|---|
| 2200 | RETURN 'fail';
|
|---|
| 2201 | END IF;
|
|---|
| 2202 | ELSE
|
|---|
| 2203 | new_srid := @extschema@.ST_SRID('POINT EMPTY'::@extschema@.geometry);
|
|---|
| 2204 | IF ( new_srid_in != new_srid ) THEN
|
|---|
| 2205 | RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
|
|---|
| 2206 | END IF;
|
|---|
| 2207 | END IF;
|
|---|
| 2208 |
|
|---|
| 2209 | -- Verify schema
|
|---|
| 2210 | IF ( schema_name IS NOT NULL AND schema_name != '' ) THEN
|
|---|
| 2211 | sql := 'SELECT nspname FROM pg_namespace ' ||
|
|---|
| 2212 | 'WHERE text(nspname) = ' || quote_literal(schema_name) ||
|
|---|
| 2213 | 'LIMIT 1';
|
|---|
| 2214 | RAISE DEBUG '%', sql;
|
|---|
| 2215 | EXECUTE sql INTO real_schema;
|
|---|
| 2216 |
|
|---|
| 2217 | IF ( real_schema IS NULL ) THEN
|
|---|
| 2218 | RAISE EXCEPTION 'Schema % is not a valid schemaname', quote_literal(schema_name);
|
|---|
| 2219 | RETURN 'fail';
|
|---|
| 2220 | END IF;
|
|---|
| 2221 | END IF;
|
|---|
| 2222 |
|
|---|
| 2223 | IF ( real_schema IS NULL ) THEN
|
|---|
| 2224 | RAISE DEBUG 'Detecting schema';
|
|---|
| 2225 | sql := 'SELECT n.nspname AS schemaname ' ||
|
|---|
| 2226 | 'FROM pg_catalog.pg_class c ' ||
|
|---|
| 2227 | 'JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace ' ||
|
|---|
| 2228 | 'WHERE c.relkind = ' || quote_literal('r') ||
|
|---|
| 2229 | ' AND n.nspname NOT IN (' || quote_literal('pg_catalog') || ', ' || quote_literal('pg_toast') || ')' ||
|
|---|
| 2230 | ' AND pg_catalog.pg_table_is_visible(c.oid)' ||
|
|---|
| 2231 | ' AND c.relname = ' || quote_literal(table_name);
|
|---|
| 2232 | RAISE DEBUG '%', sql;
|
|---|
| 2233 | EXECUTE sql INTO real_schema;
|
|---|
| 2234 |
|
|---|
| 2235 | IF ( real_schema IS NULL ) THEN
|
|---|
| 2236 | RAISE EXCEPTION 'Table % does not occur in the search_path', quote_literal(table_name);
|
|---|
| 2237 | RETURN 'fail';
|
|---|
| 2238 | END IF;
|
|---|
| 2239 | END IF;
|
|---|
| 2240 |
|
|---|
| 2241 | -- Add geometry column to table
|
|---|
| 2242 | IF use_typmod THEN
|
|---|
| 2243 | sql := 'ALTER TABLE ' ||
|
|---|
| 2244 | quote_ident(real_schema) || '.' || quote_ident(table_name)
|
|---|
| 2245 | || ' ADD COLUMN ' || quote_ident(column_name) ||
|
|---|
| 2246 | ' geometry(' || @extschema@.postgis_type_name(new_type, new_dim) || ', ' || new_srid::text || ')';
|
|---|
| 2247 | RAISE DEBUG '%', sql;
|
|---|
| 2248 | ELSE
|
|---|
| 2249 | sql := 'ALTER TABLE ' ||
|
|---|
| 2250 | quote_ident(real_schema) || '.' || quote_ident(table_name)
|
|---|
| 2251 | || ' ADD COLUMN ' || quote_ident(column_name) ||
|
|---|
| 2252 | ' geometry ';
|
|---|
| 2253 | RAISE DEBUG '%', sql;
|
|---|
| 2254 | END IF;
|
|---|
| 2255 | EXECUTE sql;
|
|---|
| 2256 |
|
|---|
| 2257 | IF NOT use_typmod THEN
|
|---|
| 2258 | -- Add table CHECKs
|
|---|
| 2259 | sql := 'ALTER TABLE ' ||
|
|---|
| 2260 | quote_ident(real_schema) || '.' || quote_ident(table_name)
|
|---|
| 2261 | || ' ADD CONSTRAINT '
|
|---|
| 2262 | || quote_ident('enforce_srid_' || column_name)
|
|---|
| 2263 | || ' CHECK (st_srid(' || quote_ident(column_name) ||
|
|---|
| 2264 | ') = ' || new_srid::text || ')' ;
|
|---|
| 2265 | RAISE DEBUG '%', sql;
|
|---|
| 2266 | EXECUTE sql;
|
|---|
| 2267 |
|
|---|
| 2268 | sql := 'ALTER TABLE ' ||
|
|---|
| 2269 | quote_ident(real_schema) || '.' || quote_ident(table_name)
|
|---|
| 2270 | || ' ADD CONSTRAINT '
|
|---|
| 2271 | || quote_ident('enforce_dims_' || column_name)
|
|---|
| 2272 | || ' CHECK (st_ndims(' || quote_ident(column_name) ||
|
|---|
| 2273 | ') = ' || new_dim::text || ')' ;
|
|---|
| 2274 | RAISE DEBUG '%', sql;
|
|---|
| 2275 | EXECUTE sql;
|
|---|
| 2276 |
|
|---|
| 2277 | IF ( NOT (new_type = 'GEOMETRY')) THEN
|
|---|
| 2278 | sql := 'ALTER TABLE ' ||
|
|---|
| 2279 | quote_ident(real_schema) || '.' || quote_ident(table_name) || ' ADD CONSTRAINT ' ||
|
|---|
| 2280 | quote_ident('enforce_geotype_' || column_name) ||
|
|---|
| 2281 | ' CHECK (GeometryType(' ||
|
|---|
| 2282 | quote_ident(column_name) || ')=' ||
|
|---|
| 2283 | quote_literal(new_type) || ' OR (' ||
|
|---|
| 2284 | quote_ident(column_name) || ') is null)';
|
|---|
| 2285 | RAISE DEBUG '%', sql;
|
|---|
| 2286 | EXECUTE sql;
|
|---|
| 2287 | END IF;
|
|---|
| 2288 | END IF;
|
|---|
| 2289 |
|
|---|
| 2290 | RETURN
|
|---|
| 2291 | real_schema || '.' ||
|
|---|
| 2292 | table_name || '.' || column_name ||
|
|---|
| 2293 | ' SRID:' || new_srid::text ||
|
|---|
| 2294 | ' TYPE:' || new_type ||
|
|---|
| 2295 | ' DIMS:' || new_dim::text || ' ';
|
|---|
| 2296 | END;
|
|---|
| 2297 | $$
|
|---|
| 2298 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2299 |
|
|---|
| 2300 | ----------------------------------------------------------------------------
|
|---|
| 2301 | -- ADDGEOMETRYCOLUMN ( <schema>, <table>, <column>, <srid>, <type>, <dim> )
|
|---|
| 2302 | ----------------------------------------------------------------------------
|
|---|
| 2303 | --
|
|---|
| 2304 | -- This is a wrapper to the real AddGeometryColumn, for use
|
|---|
| 2305 | -- when catalogue is undefined
|
|---|
| 2306 | --
|
|---|
| 2307 | ----------------------------------------------------------------------------
|
|---|
| 2308 | CREATE OR REPLACE FUNCTION AddGeometryColumn(schema_name varchar,table_name varchar,column_name varchar,new_srid integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true) RETURNS text AS $$
|
|---|
| 2309 | DECLARE
|
|---|
| 2310 | ret text;
|
|---|
| 2311 | BEGIN
|
|---|
| 2312 | SELECT @extschema@.AddGeometryColumn('',$1,$2,$3,$4,$5,$6,$7) into ret;
|
|---|
| 2313 | RETURN ret;
|
|---|
| 2314 | END;
|
|---|
| 2315 | $$
|
|---|
| 2316 | LANGUAGE 'plpgsql' STABLE STRICT;
|
|---|
| 2317 |
|
|---|
| 2318 | ----------------------------------------------------------------------------
|
|---|
| 2319 | -- ADDGEOMETRYCOLUMN ( <table>, <column>, <srid>, <type>, <dim> )
|
|---|
| 2320 | ----------------------------------------------------------------------------
|
|---|
| 2321 | --
|
|---|
| 2322 | -- This is a wrapper to the real AddGeometryColumn, for use
|
|---|
| 2323 | -- when catalogue and schema are undefined
|
|---|
| 2324 | --
|
|---|
| 2325 | ----------------------------------------------------------------------------
|
|---|
| 2326 | CREATE OR REPLACE FUNCTION AddGeometryColumn(table_name varchar,column_name varchar,new_srid integer,new_type varchar,new_dim integer, use_typmod boolean DEFAULT true) RETURNS text AS $$
|
|---|
| 2327 | DECLARE
|
|---|
| 2328 | ret text;
|
|---|
| 2329 | BEGIN
|
|---|
| 2330 | SELECT @extschema@.AddGeometryColumn('','',$1,$2,$3,$4,$5, $6) into ret;
|
|---|
| 2331 | RETURN ret;
|
|---|
| 2332 | END;
|
|---|
| 2333 | $$
|
|---|
| 2334 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2335 |
|
|---|
| 2336 | -----------------------------------------------------------------------
|
|---|
| 2337 | -- DROPGEOMETRYCOLUMN
|
|---|
| 2338 | -- <catalogue>, <schema>, <table>, <column>
|
|---|
| 2339 | -----------------------------------------------------------------------
|
|---|
| 2340 | --
|
|---|
| 2341 | -- Removes geometry column reference from geometry_columns table.
|
|---|
| 2342 | -- Drops the column with pgsql >= 73.
|
|---|
| 2343 | -- Make some silly enforcements on it for pgsql < 73
|
|---|
| 2344 | --
|
|---|
| 2345 | -----------------------------------------------------------------------
|
|---|
| 2346 | CREATE OR REPLACE FUNCTION DropGeometryColumn(catalog_name varchar, schema_name varchar,table_name varchar,column_name varchar)
|
|---|
| 2347 | RETURNS text
|
|---|
| 2348 | AS
|
|---|
| 2349 | $$
|
|---|
| 2350 | DECLARE
|
|---|
| 2351 | myrec RECORD;
|
|---|
| 2352 | okay boolean;
|
|---|
| 2353 | real_schema name;
|
|---|
| 2354 |
|
|---|
| 2355 | BEGIN
|
|---|
| 2356 |
|
|---|
| 2357 | -- Find, check or fix schema_name
|
|---|
| 2358 | IF ( schema_name != '' ) THEN
|
|---|
| 2359 | okay = false;
|
|---|
| 2360 |
|
|---|
| 2361 | FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
|
|---|
| 2362 | okay := true;
|
|---|
| 2363 | END LOOP;
|
|---|
| 2364 |
|
|---|
| 2365 | IF ( okay <> true ) THEN
|
|---|
| 2366 | RAISE NOTICE 'Invalid schema name - using current_schema()';
|
|---|
| 2367 | SELECT current_schema() into real_schema;
|
|---|
| 2368 | ELSE
|
|---|
| 2369 | real_schema = schema_name;
|
|---|
| 2370 | END IF;
|
|---|
| 2371 | ELSE
|
|---|
| 2372 | SELECT current_schema() into real_schema;
|
|---|
| 2373 | END IF;
|
|---|
| 2374 |
|
|---|
| 2375 | -- Find out if the column is in the geometry_columns table
|
|---|
| 2376 | okay = false;
|
|---|
| 2377 | FOR myrec IN SELECT * from @extschema@.geometry_columns where f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
|
|---|
| 2378 | okay := true;
|
|---|
| 2379 | END LOOP;
|
|---|
| 2380 | IF (okay <> true) THEN
|
|---|
| 2381 | RAISE EXCEPTION 'column not found in geometry_columns table';
|
|---|
| 2382 | RETURN false;
|
|---|
| 2383 | END IF;
|
|---|
| 2384 |
|
|---|
| 2385 | -- Remove table column
|
|---|
| 2386 | EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' ||
|
|---|
| 2387 | quote_ident(table_name) || ' DROP COLUMN ' ||
|
|---|
| 2388 | quote_ident(column_name);
|
|---|
| 2389 |
|
|---|
| 2390 | RETURN real_schema || '.' || table_name || '.' || column_name ||' effectively removed.';
|
|---|
| 2391 |
|
|---|
| 2392 | END;
|
|---|
| 2393 | $$
|
|---|
| 2394 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2395 |
|
|---|
| 2396 | -----------------------------------------------------------------------
|
|---|
| 2397 | -- DROPGEOMETRYCOLUMN
|
|---|
| 2398 | -- <schema>, <table>, <column>
|
|---|
| 2399 | -----------------------------------------------------------------------
|
|---|
| 2400 | --
|
|---|
| 2401 | -- This is a wrapper to the real DropGeometryColumn, for use
|
|---|
| 2402 | -- when catalogue is undefined
|
|---|
| 2403 | --
|
|---|
| 2404 | -----------------------------------------------------------------------
|
|---|
| 2405 | CREATE OR REPLACE FUNCTION DropGeometryColumn(schema_name varchar, table_name varchar,column_name varchar)
|
|---|
| 2406 | RETURNS text
|
|---|
| 2407 | AS
|
|---|
| 2408 | $$
|
|---|
| 2409 | DECLARE
|
|---|
| 2410 | ret text;
|
|---|
| 2411 | BEGIN
|
|---|
| 2412 | SELECT @extschema@.DropGeometryColumn('',$1,$2,$3) into ret;
|
|---|
| 2413 | RETURN ret;
|
|---|
| 2414 | END;
|
|---|
| 2415 | $$
|
|---|
| 2416 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2417 |
|
|---|
| 2418 | -----------------------------------------------------------------------
|
|---|
| 2419 | -- DROPGEOMETRYCOLUMN
|
|---|
| 2420 | -- <table>, <column>
|
|---|
| 2421 | -----------------------------------------------------------------------
|
|---|
| 2422 | --
|
|---|
| 2423 | -- This is a wrapper to the real DropGeometryColumn, for use
|
|---|
| 2424 | -- when catalogue and schema is undefined.
|
|---|
| 2425 | --
|
|---|
| 2426 | -----------------------------------------------------------------------
|
|---|
| 2427 | CREATE OR REPLACE FUNCTION DropGeometryColumn(table_name varchar, column_name varchar)
|
|---|
| 2428 | RETURNS text
|
|---|
| 2429 | AS
|
|---|
| 2430 | $$
|
|---|
| 2431 | DECLARE
|
|---|
| 2432 | ret text;
|
|---|
| 2433 | BEGIN
|
|---|
| 2434 | SELECT @extschema@.DropGeometryColumn('','',$1,$2) into ret;
|
|---|
| 2435 | RETURN ret;
|
|---|
| 2436 | END;
|
|---|
| 2437 | $$
|
|---|
| 2438 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2439 |
|
|---|
| 2440 | -----------------------------------------------------------------------
|
|---|
| 2441 | -- DROPGEOMETRYTABLE
|
|---|
| 2442 | -- <catalogue>, <schema>, <table>
|
|---|
| 2443 | -----------------------------------------------------------------------
|
|---|
| 2444 | --
|
|---|
| 2445 | -- Drop a table and all its references in geometry_columns
|
|---|
| 2446 | --
|
|---|
| 2447 | -----------------------------------------------------------------------
|
|---|
| 2448 | CREATE OR REPLACE FUNCTION DropGeometryTable(catalog_name varchar, schema_name varchar, table_name varchar)
|
|---|
| 2449 | RETURNS text
|
|---|
| 2450 | AS
|
|---|
| 2451 | $$
|
|---|
| 2452 | DECLARE
|
|---|
| 2453 | real_schema name;
|
|---|
| 2454 |
|
|---|
| 2455 | BEGIN
|
|---|
| 2456 |
|
|---|
| 2457 | IF ( schema_name = '' ) THEN
|
|---|
| 2458 | SELECT current_schema() into real_schema;
|
|---|
| 2459 | ELSE
|
|---|
| 2460 | real_schema = schema_name;
|
|---|
| 2461 | END IF;
|
|---|
| 2462 |
|
|---|
| 2463 | -- TODO: Should we warn if table doesn't exist probably instead just saying dropped
|
|---|
| 2464 | -- Remove table
|
|---|
| 2465 | EXECUTE 'DROP TABLE IF EXISTS '
|
|---|
| 2466 | || quote_ident(real_schema) || '.' ||
|
|---|
| 2467 | quote_ident(table_name) || ' RESTRICT';
|
|---|
| 2468 |
|
|---|
| 2469 | RETURN
|
|---|
| 2470 | real_schema || '.' ||
|
|---|
| 2471 | table_name ||' dropped.';
|
|---|
| 2472 |
|
|---|
| 2473 | END;
|
|---|
| 2474 | $$
|
|---|
| 2475 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2476 |
|
|---|
| 2477 | -----------------------------------------------------------------------
|
|---|
| 2478 | -- DROPGEOMETRYTABLE
|
|---|
| 2479 | -- <schema>, <table>
|
|---|
| 2480 | -----------------------------------------------------------------------
|
|---|
| 2481 | --
|
|---|
| 2482 | -- Drop a table and all its references in geometry_columns
|
|---|
| 2483 | --
|
|---|
| 2484 | -----------------------------------------------------------------------
|
|---|
| 2485 | CREATE OR REPLACE FUNCTION DropGeometryTable(schema_name varchar, table_name varchar) RETURNS text AS
|
|---|
| 2486 | $$ SELECT @extschema@.DropGeometryTable('',$1,$2) $$
|
|---|
| 2487 | LANGUAGE 'sql' VOLATILE STRICT;
|
|---|
| 2488 |
|
|---|
| 2489 | -----------------------------------------------------------------------
|
|---|
| 2490 | -- DROPGEOMETRYTABLE
|
|---|
| 2491 | -- <table>
|
|---|
| 2492 | -----------------------------------------------------------------------
|
|---|
| 2493 | --
|
|---|
| 2494 | -- Drop a table and all its references in geometry_columns
|
|---|
| 2495 | -- For PG>=73 use current_schema()
|
|---|
| 2496 | --
|
|---|
| 2497 | -----------------------------------------------------------------------
|
|---|
| 2498 | CREATE OR REPLACE FUNCTION DropGeometryTable(table_name varchar) RETURNS text AS
|
|---|
| 2499 | $$ SELECT @extschema@.DropGeometryTable('','',$1) $$
|
|---|
| 2500 | LANGUAGE 'sql' VOLATILE STRICT;
|
|---|
| 2501 |
|
|---|
| 2502 | -----------------------------------------------------------------------
|
|---|
| 2503 | -- UPDATEGEOMETRYSRID
|
|---|
| 2504 | -- <catalogue>, <schema>, <table>, <column>, <srid>
|
|---|
| 2505 | -----------------------------------------------------------------------
|
|---|
| 2506 | --
|
|---|
| 2507 | -- Change SRID of all features in a spatially-enabled table
|
|---|
| 2508 | --
|
|---|
| 2509 | -----------------------------------------------------------------------
|
|---|
| 2510 | -- Changed: 2.1.4 check against real_schema
|
|---|
| 2511 | CREATE OR REPLACE FUNCTION UpdateGeometrySRID(catalogn_name varchar,schema_name varchar,table_name varchar,column_name varchar,new_srid_in integer)
|
|---|
| 2512 | RETURNS text
|
|---|
| 2513 | AS
|
|---|
| 2514 | $$
|
|---|
| 2515 | DECLARE
|
|---|
| 2516 | myrec RECORD;
|
|---|
| 2517 | okay boolean;
|
|---|
| 2518 | cname varchar;
|
|---|
| 2519 | real_schema name;
|
|---|
| 2520 | unknown_srid integer;
|
|---|
| 2521 | new_srid integer := new_srid_in;
|
|---|
| 2522 |
|
|---|
| 2523 | BEGIN
|
|---|
| 2524 |
|
|---|
| 2525 | -- Find, check or fix schema_name
|
|---|
| 2526 | IF ( schema_name != '' ) THEN
|
|---|
| 2527 | okay = false;
|
|---|
| 2528 |
|
|---|
| 2529 | FOR myrec IN SELECT nspname FROM pg_namespace WHERE text(nspname) = schema_name LOOP
|
|---|
| 2530 | okay := true;
|
|---|
| 2531 | END LOOP;
|
|---|
| 2532 |
|
|---|
| 2533 | IF ( okay <> true ) THEN
|
|---|
| 2534 | RAISE EXCEPTION 'Invalid schema name';
|
|---|
| 2535 | ELSE
|
|---|
| 2536 | real_schema = schema_name;
|
|---|
| 2537 | END IF;
|
|---|
| 2538 | ELSE
|
|---|
| 2539 | SELECT INTO real_schema current_schema()::text;
|
|---|
| 2540 | END IF;
|
|---|
| 2541 |
|
|---|
| 2542 | -- Ensure that column_name is in geometry_columns
|
|---|
| 2543 | okay = false;
|
|---|
| 2544 | FOR myrec IN SELECT type, coord_dimension FROM @extschema@.geometry_columns WHERE f_table_schema = text(real_schema) and f_table_name = table_name and f_geometry_column = column_name LOOP
|
|---|
| 2545 | okay := true;
|
|---|
| 2546 | END LOOP;
|
|---|
| 2547 | IF (NOT okay) THEN
|
|---|
| 2548 | RAISE EXCEPTION 'column not found in geometry_columns table';
|
|---|
| 2549 | RETURN false;
|
|---|
| 2550 | END IF;
|
|---|
| 2551 |
|
|---|
| 2552 | -- Ensure that new_srid is valid
|
|---|
| 2553 | IF ( new_srid > 0 ) THEN
|
|---|
| 2554 | IF ( SELECT count(*) = 0 from spatial_ref_sys where srid = new_srid ) THEN
|
|---|
| 2555 | RAISE EXCEPTION 'invalid SRID: % not found in spatial_ref_sys', new_srid;
|
|---|
| 2556 | RETURN false;
|
|---|
| 2557 | END IF;
|
|---|
| 2558 | ELSE
|
|---|
| 2559 | unknown_srid := @extschema@.ST_SRID('POINT EMPTY'::@extschema@.geometry);
|
|---|
| 2560 | IF ( new_srid != unknown_srid ) THEN
|
|---|
| 2561 | new_srid := unknown_srid;
|
|---|
| 2562 | RAISE NOTICE 'SRID value % converted to the officially unknown SRID value %', new_srid_in, new_srid;
|
|---|
| 2563 | END IF;
|
|---|
| 2564 | END IF;
|
|---|
| 2565 |
|
|---|
| 2566 | IF postgis_constraint_srid(real_schema, table_name, column_name) IS NOT NULL THEN
|
|---|
| 2567 | -- srid was enforced with constraints before, keep it that way.
|
|---|
| 2568 | -- Make up constraint name
|
|---|
| 2569 | cname = 'enforce_srid_' || column_name;
|
|---|
| 2570 |
|
|---|
| 2571 | -- Drop enforce_srid constraint
|
|---|
| 2572 | EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
|
|---|
| 2573 | '.' || quote_ident(table_name) ||
|
|---|
| 2574 | ' DROP constraint ' || quote_ident(cname);
|
|---|
| 2575 |
|
|---|
| 2576 | -- Update geometries SRID
|
|---|
| 2577 | EXECUTE 'UPDATE ' || quote_ident(real_schema) ||
|
|---|
| 2578 | '.' || quote_ident(table_name) ||
|
|---|
| 2579 | ' SET ' || quote_ident(column_name) ||
|
|---|
| 2580 | ' = @extschema@.ST_SetSRID(' || quote_ident(column_name) ||
|
|---|
| 2581 | ', ' || new_srid::text || ')';
|
|---|
| 2582 |
|
|---|
| 2583 | -- Reset enforce_srid constraint
|
|---|
| 2584 | EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) ||
|
|---|
| 2585 | '.' || quote_ident(table_name) ||
|
|---|
| 2586 | ' ADD constraint ' || quote_ident(cname) ||
|
|---|
| 2587 | ' CHECK (st_srid(' || quote_ident(column_name) ||
|
|---|
| 2588 | ') = ' || new_srid::text || ')';
|
|---|
| 2589 | ELSE
|
|---|
| 2590 | -- We will use typmod to enforce if no srid constraints
|
|---|
| 2591 | -- We are using postgis_type_name to lookup the new name
|
|---|
| 2592 | -- (in case Paul changes his mind and flips geometry_columns to return old upper case name)
|
|---|
| 2593 | EXECUTE 'ALTER TABLE ' || quote_ident(real_schema) || '.' || quote_ident(table_name) ||
|
|---|
| 2594 | ' ALTER COLUMN ' || quote_ident(column_name) || ' TYPE geometry(' || @extschema@.postgis_type_name(myrec.type, myrec.coord_dimension, true) || ', ' || new_srid::text || ') USING @extschema@.ST_SetSRID(' || quote_ident(column_name) || ',' || new_srid::text || ');' ;
|
|---|
| 2595 | END IF;
|
|---|
| 2596 |
|
|---|
| 2597 | RETURN real_schema || '.' || table_name || '.' || column_name ||' SRID changed to ' || new_srid::text;
|
|---|
| 2598 |
|
|---|
| 2599 | END;
|
|---|
| 2600 | $$
|
|---|
| 2601 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2602 |
|
|---|
| 2603 | -----------------------------------------------------------------------
|
|---|
| 2604 | -- UPDATEGEOMETRYSRID
|
|---|
| 2605 | -- <schema>, <table>, <column>, <srid>
|
|---|
| 2606 | -----------------------------------------------------------------------
|
|---|
| 2607 | CREATE OR REPLACE FUNCTION UpdateGeometrySRID(varchar,varchar,varchar,integer)
|
|---|
| 2608 | RETURNS text
|
|---|
| 2609 | AS $$
|
|---|
| 2610 | DECLARE
|
|---|
| 2611 | ret text;
|
|---|
| 2612 | BEGIN
|
|---|
| 2613 | SELECT @extschema@.UpdateGeometrySRID('',$1,$2,$3,$4) into ret;
|
|---|
| 2614 | RETURN ret;
|
|---|
| 2615 | END;
|
|---|
| 2616 | $$
|
|---|
| 2617 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2618 |
|
|---|
| 2619 | -----------------------------------------------------------------------
|
|---|
| 2620 | -- UPDATEGEOMETRYSRID
|
|---|
| 2621 | -- <table>, <column>, <srid>
|
|---|
| 2622 | -----------------------------------------------------------------------
|
|---|
| 2623 | CREATE OR REPLACE FUNCTION UpdateGeometrySRID(varchar,varchar,integer)
|
|---|
| 2624 | RETURNS text
|
|---|
| 2625 | AS $$
|
|---|
| 2626 | DECLARE
|
|---|
| 2627 | ret text;
|
|---|
| 2628 | BEGIN
|
|---|
| 2629 | SELECT @extschema@.UpdateGeometrySRID('','',$1,$2,$3) into ret;
|
|---|
| 2630 | RETURN ret;
|
|---|
| 2631 | END;
|
|---|
| 2632 | $$
|
|---|
| 2633 | LANGUAGE 'plpgsql' VOLATILE STRICT;
|
|---|
| 2634 |
|
|---|
| 2635 | -----------------------------------------------------------------------
|
|---|
| 2636 | -- FIND_SRID( <schema>, <table>, <geom col> )
|
|---|
| 2637 | -----------------------------------------------------------------------
|
|---|
| 2638 | -- Changed: 2.1.8 improve performance
|
|---|
| 2639 | CREATE OR REPLACE FUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
|
|---|
| 2640 | $$
|
|---|
| 2641 | DECLARE
|
|---|
| 2642 | schem varchar = $1;
|
|---|
| 2643 | tabl varchar = $2;
|
|---|
| 2644 | sr int4;
|
|---|
| 2645 | BEGIN
|
|---|
| 2646 | -- if the table contains a . and the schema is empty
|
|---|
| 2647 | -- split the table into a schema and a table
|
|---|
| 2648 | -- otherwise drop through to default behavior
|
|---|
| 2649 | IF ( schem = '' and strpos(tabl,'.') > 0 ) THEN
|
|---|
| 2650 | schem = substr(tabl,1,strpos(tabl,'.')-1);
|
|---|
| 2651 | tabl = substr(tabl,length(schem)+2);
|
|---|
| 2652 | END IF;
|
|---|
| 2653 |
|
|---|
| 2654 | select SRID into sr from @extschema@.geometry_columns where (f_table_schema = schem or schem = '') and f_table_name = tabl and f_geometry_column = $3;
|
|---|
| 2655 | IF NOT FOUND THEN
|
|---|
| 2656 | RAISE EXCEPTION 'find_srid() - could not find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase mismatch?';
|
|---|
| 2657 | END IF;
|
|---|
| 2658 | return sr;
|
|---|
| 2659 | END;
|
|---|
| 2660 | $$
|
|---|
| 2661 | LANGUAGE 'plpgsql' STABLE STRICT _PARALLEL;
|
|---|
| 2662 |
|
|---|
| 2663 | ---------------------------------------------------------------
|
|---|
| 2664 | -- PROJ support
|
|---|
| 2665 | ---------------------------------------------------------------
|
|---|
| 2666 |
|
|---|
| 2667 | CREATE OR REPLACE FUNCTION get_proj4_from_srid(integer) RETURNS text AS
|
|---|
| 2668 | $$
|
|---|
| 2669 | BEGIN
|
|---|
| 2670 | RETURN proj4text::text FROM @extschema@.spatial_ref_sys WHERE srid= $1;
|
|---|
| 2671 | END;
|
|---|
| 2672 | $$
|
|---|
| 2673 | LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 2674 |
|
|---|
| 2675 | -- Availability: 1.2.2
|
|---|
| 2676 | CREATE OR REPLACE FUNCTION ST_SetSRID(geom geometry, srid int4)
|
|---|
| 2677 | RETURNS geometry
|
|---|
| 2678 | AS 'MODULE_PATHNAME','LWGEOM_set_srid'
|
|---|
| 2679 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 2680 | _COST_LOW;
|
|---|
| 2681 |
|
|---|
| 2682 | CREATE OR REPLACE FUNCTION ST_SRID(geom geometry)
|
|---|
| 2683 | RETURNS int4
|
|---|
| 2684 | AS 'MODULE_PATHNAME','LWGEOM_get_srid'
|
|---|
| 2685 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 2686 | _COST_LOW;
|
|---|
| 2687 |
|
|---|
| 2688 | CREATE OR REPLACE FUNCTION postgis_transform_geometry(geom geometry, text, text, int)
|
|---|
| 2689 | RETURNS geometry
|
|---|
| 2690 | AS 'MODULE_PATHNAME','transform_geom'
|
|---|
| 2691 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 2692 | _COST_MEDIUM;
|
|---|
| 2693 |
|
|---|
| 2694 | -- PostGIS equivalent of old function: transform(geometry,integer)
|
|---|
| 2695 | CREATE OR REPLACE FUNCTION ST_Transform(geometry,integer)
|
|---|
| 2696 | RETURNS geometry
|
|---|
| 2697 | AS 'MODULE_PATHNAME','transform'
|
|---|
| 2698 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 2699 | _COST_MEDIUM;
|
|---|
| 2700 |
|
|---|
| 2701 | -- Availability: 2.3.0
|
|---|
| 2702 | CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, to_proj text)
|
|---|
| 2703 | RETURNS geometry AS
|
|---|
| 2704 | 'SELECT @extschema@.postgis_transform_geometry($1, proj4text, $2, 0)
|
|---|
| 2705 | FROM spatial_ref_sys WHERE srid=@extschema@.ST_SRID($1);'
|
|---|
| 2706 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 2707 |
|
|---|
| 2708 | -- Availability: 2.3.0
|
|---|
| 2709 | CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, from_proj text, to_proj text)
|
|---|
| 2710 | RETURNS geometry AS
|
|---|
| 2711 | 'SELECT @extschema@.postgis_transform_geometry($1, $2, $3, 0)'
|
|---|
| 2712 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 2713 |
|
|---|
| 2714 | -- Availability: 2.3.0
|
|---|
| 2715 | CREATE OR REPLACE FUNCTION ST_Transform(geom geometry, from_proj text, to_srid integer)
|
|---|
| 2716 | RETURNS geometry AS
|
|---|
| 2717 | 'SELECT @extschema@.postgis_transform_geometry($1, $2, proj4text, $3)
|
|---|
| 2718 | FROM spatial_ref_sys WHERE srid=$3;'
|
|---|
| 2719 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 2720 |
|
|---|
| 2721 | -----------------------------------------------------------------------
|
|---|
| 2722 | -- POSTGIS_VERSION()
|
|---|
| 2723 | -----------------------------------------------------------------------
|
|---|
| 2724 |
|
|---|
| 2725 | CREATE OR REPLACE FUNCTION postgis_version() RETURNS text
|
|---|
| 2726 | AS 'MODULE_PATHNAME'
|
|---|
| 2727 | LANGUAGE 'c' IMMUTABLE
|
|---|
| 2728 | _COST_DEFAULT;
|
|---|
| 2729 |
|
|---|
| 2730 | CREATE OR REPLACE FUNCTION postgis_liblwgeom_version() RETURNS text
|
|---|
| 2731 | AS 'MODULE_PATHNAME'
|
|---|
| 2732 | LANGUAGE 'c' IMMUTABLE
|
|---|
| 2733 | _COST_DEFAULT;
|
|---|
| 2734 |
|
|---|
| 2735 | CREATE OR REPLACE FUNCTION postgis_proj_version() RETURNS text
|
|---|
| 2736 | AS 'MODULE_PATHNAME'
|
|---|
| 2737 | LANGUAGE 'c' IMMUTABLE
|
|---|
| 2738 | _COST_DEFAULT;
|
|---|
| 2739 |
|
|---|
| 2740 | CREATE OR REPLACE FUNCTION postgis_wagyu_version() RETURNS text
|
|---|
| 2741 | AS 'MODULE_PATHNAME'
|
|---|
| 2742 | LANGUAGE 'c' IMMUTABLE
|
|---|
| 2743 | _COST_DEFAULT;
|
|---|
| 2744 |
|
|---|
| 2745 | --
|
|---|
| 2746 | -- IMPORTANT:
|
|---|
| 2747 | -- Starting at 1.1.0 this function is used by postgis_proc_upgrade.pl
|
|---|
| 2748 | -- to extract version of postgis being installed.
|
|---|
| 2749 | -- Do not modify this w/out also changing postgis_proc_upgrade.pl
|
|---|
| 2750 | --
|
|---|
| 2751 | CREATE OR REPLACE FUNCTION postgis_scripts_installed() RETURNS text
|
|---|
| 2752 | AS _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION
|
|---|
| 2753 | LANGUAGE 'sql' IMMUTABLE;
|
|---|
| 2754 |
|
|---|
| 2755 | CREATE OR REPLACE FUNCTION postgis_lib_version() RETURNS text
|
|---|
| 2756 | AS 'MODULE_PATHNAME'
|
|---|
| 2757 | LANGUAGE 'c' IMMUTABLE; -- a new lib will require a new session
|
|---|
| 2758 |
|
|---|
| 2759 | -- NOTE: from 1.1.0 to 1.5.x this was the same of postgis_lib_version()
|
|---|
| 2760 | -- NOTE: from 2.0.0 up it includes postgis_svn_revision()
|
|---|
| 2761 | CREATE OR REPLACE FUNCTION postgis_scripts_released() RETURNS text
|
|---|
| 2762 | AS 'MODULE_PATHNAME'
|
|---|
| 2763 | LANGUAGE 'c' IMMUTABLE;
|
|---|
| 2764 |
|
|---|
| 2765 | CREATE OR REPLACE FUNCTION postgis_geos_version() RETURNS text
|
|---|
| 2766 | AS 'MODULE_PATHNAME'
|
|---|
| 2767 | LANGUAGE 'c' IMMUTABLE;
|
|---|
| 2768 |
|
|---|
| 2769 | CREATE OR REPLACE FUNCTION postgis_svn_version() RETURNS text
|
|---|
| 2770 | AS 'MODULE_PATHNAME'
|
|---|
| 2771 | LANGUAGE 'c' IMMUTABLE;
|
|---|
| 2772 |
|
|---|
| 2773 | CREATE OR REPLACE FUNCTION postgis_libxml_version() RETURNS text
|
|---|
| 2774 | AS 'MODULE_PATHNAME'
|
|---|
| 2775 | LANGUAGE 'c' IMMUTABLE;
|
|---|
| 2776 |
|
|---|
| 2777 | CREATE OR REPLACE FUNCTION postgis_scripts_build_date() RETURNS text
|
|---|
| 2778 | AS _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE
|
|---|
| 2779 | LANGUAGE 'sql' IMMUTABLE;
|
|---|
| 2780 |
|
|---|
| 2781 | CREATE OR REPLACE FUNCTION postgis_lib_build_date() RETURNS text
|
|---|
| 2782 | AS 'MODULE_PATHNAME'
|
|---|
| 2783 | LANGUAGE 'c' IMMUTABLE;
|
|---|
| 2784 |
|
|---|
| 2785 | CREATE OR REPLACE FUNCTION _postgis_scripts_pgsql_version() RETURNS text
|
|---|
| 2786 | AS _POSTGIS_SQL_SELECT_POSTGIS_PGSQL_VERSION
|
|---|
| 2787 | LANGUAGE 'sql' IMMUTABLE;
|
|---|
| 2788 |
|
|---|
| 2789 | CREATE OR REPLACE FUNCTION _postgis_pgsql_version() RETURNS text
|
|---|
| 2790 | AS $$
|
|---|
| 2791 | SELECT CASE WHEN split_part(s,'.',1)::integer > 9 THEN split_part(s,'.',1) || '0' ELSE split_part(s,'.', 1) || split_part(s,'.', 2) END AS v
|
|---|
| 2792 | FROM substring(version(), 'PostgreSQL ([0-9\.]+)') AS s;
|
|---|
| 2793 | $$ LANGUAGE 'sql' STABLE;
|
|---|
| 2794 |
|
|---|
| 2795 | -- Availability: 2.5.0
|
|---|
| 2796 | -- Changed: 3.0.0 also upgrade postgis_raster if it exists
|
|---|
| 2797 | CREATE OR REPLACE FUNCTION postgis_extensions_upgrade() RETURNS text
|
|---|
| 2798 | AS $$
|
|---|
| 2799 | DECLARE rec record; sql text; var_schema text;
|
|---|
| 2800 | BEGIN
|
|---|
| 2801 |
|
|---|
| 2802 | FOR rec IN
|
|---|
| 2803 | SELECT name, default_version, installed_version
|
|---|
| 2804 | FROM pg_catalog.pg_available_extensions
|
|---|
| 2805 | WHERE name IN (
|
|---|
| 2806 | 'postgis',
|
|---|
| 2807 | 'postgis_raster',
|
|---|
| 2808 | 'postgis_sfcgal',
|
|---|
| 2809 | 'postgis_topology',
|
|---|
| 2810 | 'postgis_tiger_geocoder'
|
|---|
| 2811 | )
|
|---|
| 2812 | ORDER BY length(name) -- this is to make sure 'postgis' is first !
|
|---|
| 2813 | LOOP
|
|---|
| 2814 | IF rec.installed_version IS NULL THEN
|
|---|
| 2815 | -- If the support installed by available extension
|
|---|
| 2816 | -- is found unpackaged, we package it
|
|---|
| 2817 | IF
|
|---|
| 2818 | -- PostGIS is always available (this function is part of it)
|
|---|
| 2819 | rec.name = 'postgis'
|
|---|
| 2820 |
|
|---|
| 2821 | -- PostGIS raster is available if type 'raster' exists
|
|---|
| 2822 | OR ( rec.name = 'postgis_raster' AND EXISTS (
|
|---|
| 2823 | SELECT 1 FROM pg_catalog.pg_type
|
|---|
| 2824 | WHERE typname = 'raster' ) )
|
|---|
| 2825 |
|
|---|
| 2826 | -- PostGIS SFCGAL is availble if
|
|---|
| 2827 | -- 'postgis_sfcgal_version' function exists
|
|---|
| 2828 | OR ( rec.name = 'postgis_sfcgal' AND EXISTS (
|
|---|
| 2829 | SELECT 1 FROM pg_catalog.pg_proc
|
|---|
| 2830 | WHERE proname = 'postgis_sfcgal_version' ) )
|
|---|
| 2831 |
|
|---|
| 2832 | -- PostGIS Topology is available if
|
|---|
| 2833 | -- 'topology.topology' table exists
|
|---|
| 2834 | -- NOTE: watch out for https://trac.osgeo.org/postgis/ticket/2503
|
|---|
| 2835 | OR ( rec.name = 'postgis_topology' AND EXISTS (
|
|---|
| 2836 | SELECT 1 FROM pg_catalog.pg_class c
|
|---|
| 2837 | JOIN pg_catalog.pg_namespace n ON (c.relnamespace = n.oid )
|
|---|
| 2838 | WHERE n.nspname = 'topology' AND c.relname = 'topology') )
|
|---|
| 2839 |
|
|---|
| 2840 | -- TODO: How do we tell if PostGIS Tiger Geocoder is available ?
|
|---|
| 2841 | THEN
|
|---|
| 2842 | sql = 'CREATE EXTENSION ' || rec.name || ' FROM unpackaged';
|
|---|
| 2843 | RAISE NOTICE 'Packaging extension %', rec.name;
|
|---|
| 2844 | RAISE DEBUG '%', sql;
|
|---|
| 2845 | EXECUTE sql;
|
|---|
| 2846 | ELSE
|
|---|
| 2847 | RAISE NOTICE 'Extension % is not available or not packagable for some reason', rec.name;
|
|---|
| 2848 | END IF;
|
|---|
| 2849 | ELSIF rec.default_version != rec.installed_version
|
|---|
| 2850 | THEN
|
|---|
| 2851 | sql = 'ALTER EXTENSION ' || rec.name || ' UPDATE TO ' ||
|
|---|
| 2852 | quote_ident(rec.default_version) || ';';
|
|---|
| 2853 | RAISE NOTICE 'Updating extension % from % to %',
|
|---|
| 2854 | rec.name, rec.installed_version, rec.default_version;
|
|---|
| 2855 | RAISE DEBUG '%', sql;
|
|---|
| 2856 | EXECUTE sql;
|
|---|
| 2857 | ELSIF (rec.default_version = rec.installed_version AND rec.installed_version ILIKE '%dev') OR
|
|---|
| 2858 | (@extschema@._postgis_pgsql_version() != @extschema@._postgis_scripts_pgsql_version())
|
|---|
| 2859 | THEN
|
|---|
| 2860 | -- we need to upgrade to next and back
|
|---|
| 2861 | RAISE NOTICE 'Updating extension % %',
|
|---|
| 2862 | rec.name, rec.installed_version;
|
|---|
| 2863 | sql = 'ALTER EXTENSION ' || rec.name || ' UPDATE TO ' ||
|
|---|
| 2864 | quote_ident(rec.default_version || 'next') || ';';
|
|---|
| 2865 | RAISE DEBUG '%', sql;
|
|---|
| 2866 | EXECUTE sql;
|
|---|
| 2867 | sql = 'ALTER EXTENSION ' || rec.name || ' UPDATE TO ' ||
|
|---|
| 2868 | quote_ident(rec.default_version) || ';';
|
|---|
| 2869 | RAISE DEBUG '%', sql;
|
|---|
| 2870 | EXECUTE sql;
|
|---|
| 2871 | END IF;
|
|---|
| 2872 |
|
|---|
| 2873 | END LOOP;
|
|---|
| 2874 |
|
|---|
| 2875 | RETURN 'Upgrade completed, run SELECT postgis_full_version(); for details';
|
|---|
| 2876 |
|
|---|
| 2877 | END
|
|---|
| 2878 | $$ LANGUAGE plpgsql VOLATILE;
|
|---|
| 2879 |
|
|---|
| 2880 | -- Changed: 3.0.0
|
|---|
| 2881 | CREATE OR REPLACE FUNCTION postgis_full_version() RETURNS text
|
|---|
| 2882 | AS $$
|
|---|
| 2883 | DECLARE
|
|---|
| 2884 | libver text;
|
|---|
| 2885 | svnver text;
|
|---|
| 2886 | projver text;
|
|---|
| 2887 | geosver text;
|
|---|
| 2888 | sfcgalver text;
|
|---|
| 2889 | gdalver text := NULL;
|
|---|
| 2890 | libxmlver text;
|
|---|
| 2891 | liblwgeomver text;
|
|---|
| 2892 | dbproc text;
|
|---|
| 2893 | relproc text;
|
|---|
| 2894 | fullver text;
|
|---|
| 2895 | rast_lib_ver text := NULL;
|
|---|
| 2896 | rast_scr_ver text := NULL;
|
|---|
| 2897 | topo_scr_ver text := NULL;
|
|---|
| 2898 | json_lib_ver text;
|
|---|
| 2899 | protobuf_lib_ver text;
|
|---|
| 2900 | wagyu_lib_ver text;
|
|---|
| 2901 | sfcgal_lib_ver text;
|
|---|
| 2902 | sfcgal_scr_ver text;
|
|---|
| 2903 | pgsql_scr_ver text;
|
|---|
| 2904 | pgsql_ver text;
|
|---|
| 2905 | core_is_extension bool;
|
|---|
| 2906 | BEGIN
|
|---|
| 2907 | SELECT @extschema@.postgis_lib_version() INTO libver;
|
|---|
| 2908 | SELECT @extschema@.postgis_proj_version() INTO projver;
|
|---|
| 2909 | SELECT @extschema@.postgis_geos_version() INTO geosver;
|
|---|
| 2910 | SELECT @extschema@.postgis_libjson_version() INTO json_lib_ver;
|
|---|
| 2911 | SELECT @extschema@.postgis_libprotobuf_version() INTO protobuf_lib_ver;
|
|---|
| 2912 | SELECT @extschema@.postgis_wagyu_version() INTO wagyu_lib_ver;
|
|---|
| 2913 | SELECT @extschema@._postgis_scripts_pgsql_version() INTO pgsql_scr_ver;
|
|---|
| 2914 | SELECT @extschema@._postgis_pgsql_version() INTO pgsql_ver;
|
|---|
| 2915 | BEGIN
|
|---|
| 2916 | SELECT @extschema@.postgis_gdal_version() INTO gdalver;
|
|---|
| 2917 | EXCEPTION
|
|---|
| 2918 | WHEN undefined_function THEN
|
|---|
| 2919 | RAISE DEBUG 'Function postgis_gdal_version() not found. Is raster support enabled and rtpostgis.sql installed?';
|
|---|
| 2920 | END;
|
|---|
| 2921 | BEGIN
|
|---|
| 2922 | SELECT @extschema@.postgis_sfcgal_version() INTO sfcgalver;
|
|---|
| 2923 | BEGIN
|
|---|
| 2924 | SELECT @extschema@.postgis_sfcgal_scripts_installed() INTO sfcgal_scr_ver;
|
|---|
| 2925 | EXCEPTION
|
|---|
| 2926 | WHEN undefined_function THEN
|
|---|
| 2927 | sfcgal_scr_ver := 'missing';
|
|---|
| 2928 | END;
|
|---|
| 2929 | EXCEPTION
|
|---|
| 2930 | WHEN undefined_function THEN
|
|---|
| 2931 | RAISE DEBUG 'Function postgis_sfcgal_scripts_installed() not found. Is sfcgal support enabled and sfcgal.sql installed?';
|
|---|
| 2932 | END;
|
|---|
| 2933 | SELECT @extschema@.postgis_liblwgeom_version() INTO liblwgeomver;
|
|---|
| 2934 | SELECT @extschema@.postgis_libxml_version() INTO libxmlver;
|
|---|
| 2935 | SELECT @extschema@.postgis_scripts_installed() INTO dbproc;
|
|---|
| 2936 | SELECT @extschema@.postgis_scripts_released() INTO relproc;
|
|---|
| 2937 | SELECT @extschema@.postgis_svn_version() INTO svnver;
|
|---|
| 2938 | BEGIN
|
|---|
| 2939 | SELECT topology.postgis_topology_scripts_installed() INTO topo_scr_ver;
|
|---|
| 2940 | EXCEPTION
|
|---|
| 2941 | WHEN undefined_function OR invalid_schema_name THEN
|
|---|
| 2942 | RAISE DEBUG 'Function postgis_topology_scripts_installed() not found. Is topology support enabled and topology.sql installed?';
|
|---|
| 2943 | WHEN insufficient_privilege THEN
|
|---|
| 2944 | RAISE NOTICE 'Topology support cannot be inspected. Is current user granted USAGE on schema "topology" ?';
|
|---|
| 2945 | WHEN OTHERS THEN
|
|---|
| 2946 | RAISE NOTICE 'Function postgis_topology_scripts_installed() could not be called: % (%)', SQLERRM, SQLSTATE;
|
|---|
| 2947 | END;
|
|---|
| 2948 |
|
|---|
| 2949 | BEGIN
|
|---|
| 2950 | SELECT postgis_raster_scripts_installed() INTO rast_scr_ver;
|
|---|
| 2951 | EXCEPTION
|
|---|
| 2952 | WHEN undefined_function THEN
|
|---|
| 2953 | RAISE DEBUG 'Function postgis_raster_scripts_installed() not found. Is raster support enabled and rtpostgis.sql installed?';
|
|---|
| 2954 | WHEN OTHERS THEN
|
|---|
| 2955 | RAISE NOTICE 'Function postgis_raster_scripts_installed() could not be called: % (%)', SQLERRM, SQLSTATE;
|
|---|
| 2956 | END;
|
|---|
| 2957 |
|
|---|
| 2958 | BEGIN
|
|---|
| 2959 | SELECT @extschema@.postgis_raster_lib_version() INTO rast_lib_ver;
|
|---|
| 2960 | EXCEPTION
|
|---|
| 2961 | WHEN undefined_function THEN
|
|---|
| 2962 | RAISE DEBUG 'Function postgis_raster_lib_version() not found. Is raster support enabled and rtpostgis.sql installed?';
|
|---|
| 2963 | WHEN OTHERS THEN
|
|---|
| 2964 | RAISE NOTICE 'Function postgis_raster_lib_version() could not be called: % (%)', SQLERRM, SQLSTATE;
|
|---|
| 2965 | END;
|
|---|
| 2966 |
|
|---|
| 2967 | fullver = 'POSTGIS="' || libver;
|
|---|
| 2968 |
|
|---|
| 2969 | IF svnver IS NOT NULL THEN
|
|---|
| 2970 | fullver = fullver || ' r' || svnver;
|
|---|
| 2971 | END IF;
|
|---|
| 2972 |
|
|---|
| 2973 | fullver = fullver || '"';
|
|---|
| 2974 |
|
|---|
| 2975 | IF EXISTS (
|
|---|
| 2976 | SELECT * FROM pg_catalog.pg_extension
|
|---|
| 2977 | WHERE extname = 'postgis')
|
|---|
| 2978 | THEN
|
|---|
| 2979 | fullver = fullver || ' [EXTENSION]';
|
|---|
| 2980 | core_is_extension := true;
|
|---|
| 2981 | ELSE
|
|---|
| 2982 | core_is_extension := false;
|
|---|
| 2983 | END IF;
|
|---|
| 2984 |
|
|---|
| 2985 | IF liblwgeomver != relproc THEN
|
|---|
| 2986 | fullver = fullver || ' (liblwgeom version mismatch: "' || liblwgeomver || '")';
|
|---|
| 2987 | END IF;
|
|---|
| 2988 |
|
|---|
| 2989 | fullver = fullver || ' PGSQL="' || pgsql_scr_ver || '"';
|
|---|
| 2990 | IF pgsql_scr_ver != pgsql_ver THEN
|
|---|
| 2991 | fullver = fullver || ' (procs need upgrade for use with PostgreSQL "' || pgsql_ver || '")';
|
|---|
| 2992 | END IF;
|
|---|
| 2993 |
|
|---|
| 2994 | IF geosver IS NOT NULL THEN
|
|---|
| 2995 | fullver = fullver || ' GEOS="' || geosver || '"';
|
|---|
| 2996 | END IF;
|
|---|
| 2997 |
|
|---|
| 2998 | IF sfcgalver IS NOT NULL THEN
|
|---|
| 2999 | fullver = fullver || ' SFCGAL="' || sfcgalver || '"';
|
|---|
| 3000 | END IF;
|
|---|
| 3001 |
|
|---|
| 3002 | IF projver IS NOT NULL THEN
|
|---|
| 3003 | fullver = fullver || ' PROJ="' || projver || '"';
|
|---|
| 3004 | END IF;
|
|---|
| 3005 |
|
|---|
| 3006 | IF gdalver IS NOT NULL THEN
|
|---|
| 3007 | fullver = fullver || ' GDAL="' || gdalver || '"';
|
|---|
| 3008 | END IF;
|
|---|
| 3009 |
|
|---|
| 3010 | IF libxmlver IS NOT NULL THEN
|
|---|
| 3011 | fullver = fullver || ' LIBXML="' || libxmlver || '"';
|
|---|
| 3012 | END IF;
|
|---|
| 3013 |
|
|---|
| 3014 | IF json_lib_ver IS NOT NULL THEN
|
|---|
| 3015 | fullver = fullver || ' LIBJSON="' || json_lib_ver || '"';
|
|---|
| 3016 | END IF;
|
|---|
| 3017 |
|
|---|
| 3018 | IF protobuf_lib_ver IS NOT NULL THEN
|
|---|
| 3019 | fullver = fullver || ' LIBPROTOBUF="' || protobuf_lib_ver || '"';
|
|---|
| 3020 | END IF;
|
|---|
| 3021 |
|
|---|
| 3022 | IF wagyu_lib_ver IS NOT NULL THEN
|
|---|
| 3023 | fullver = fullver || ' WAGYU="' || wagyu_lib_ver || '"';
|
|---|
| 3024 | END IF;
|
|---|
| 3025 |
|
|---|
| 3026 | IF dbproc != relproc THEN
|
|---|
| 3027 | fullver = fullver || ' (core procs from "' || dbproc || '" need upgrade)';
|
|---|
| 3028 | END IF;
|
|---|
| 3029 |
|
|---|
| 3030 | IF topo_scr_ver IS NOT NULL THEN
|
|---|
| 3031 | fullver = fullver || ' TOPOLOGY';
|
|---|
| 3032 | IF topo_scr_ver != relproc THEN
|
|---|
| 3033 | fullver = fullver || ' (topology procs from "' || topo_scr_ver || '" need upgrade)';
|
|---|
| 3034 | END IF;
|
|---|
| 3035 | IF core_is_extension AND NOT EXISTS (
|
|---|
| 3036 | SELECT * FROM pg_catalog.pg_extension
|
|---|
| 3037 | WHERE extname = 'postgis_topology')
|
|---|
| 3038 | THEN
|
|---|
| 3039 | fullver = fullver || ' [UNPACKAGED!]';
|
|---|
| 3040 | END IF;
|
|---|
| 3041 | END IF;
|
|---|
| 3042 |
|
|---|
| 3043 | IF rast_lib_ver IS NOT NULL THEN
|
|---|
| 3044 | fullver = fullver || ' RASTER';
|
|---|
| 3045 | IF rast_lib_ver != relproc THEN
|
|---|
| 3046 | fullver = fullver || ' (raster lib from "' || rast_lib_ver || '" need upgrade)';
|
|---|
| 3047 | END IF;
|
|---|
| 3048 | IF core_is_extension AND NOT EXISTS (
|
|---|
| 3049 | SELECT * FROM pg_catalog.pg_extension
|
|---|
| 3050 | WHERE extname = 'postgis_raster')
|
|---|
| 3051 | THEN
|
|---|
| 3052 | fullver = fullver || ' [UNPACKAGED!]';
|
|---|
| 3053 | END IF;
|
|---|
| 3054 | END IF;
|
|---|
| 3055 |
|
|---|
| 3056 | IF rast_scr_ver IS NOT NULL AND rast_scr_ver != relproc THEN
|
|---|
| 3057 | fullver = fullver || ' (raster procs from "' || rast_scr_ver || '" need upgrade)';
|
|---|
| 3058 | END IF;
|
|---|
| 3059 |
|
|---|
| 3060 | IF sfcgal_scr_ver IS NOT NULL AND sfcgal_scr_ver != relproc THEN
|
|---|
| 3061 | fullver = fullver || ' (sfcgal procs from "' || sfcgal_scr_ver || '" need upgrade)';
|
|---|
| 3062 | END IF;
|
|---|
| 3063 |
|
|---|
| 3064 | RETURN fullver;
|
|---|
| 3065 | END
|
|---|
| 3066 | $$
|
|---|
| 3067 | LANGUAGE 'plpgsql' IMMUTABLE;
|
|---|
| 3068 |
|
|---|
| 3069 | ---------------------------------------------------------------
|
|---|
| 3070 | -- CASTS
|
|---|
| 3071 | ---------------------------------------------------------------
|
|---|
| 3072 |
|
|---|
| 3073 | CREATE OR REPLACE FUNCTION box2d(geometry)
|
|---|
| 3074 | RETURNS box2d
|
|---|
| 3075 | AS 'MODULE_PATHNAME','LWGEOM_to_BOX2D'
|
|---|
| 3076 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3077 | _COST_LOW;
|
|---|
| 3078 |
|
|---|
| 3079 | CREATE OR REPLACE FUNCTION box3d(geometry)
|
|---|
| 3080 | RETURNS box3d
|
|---|
| 3081 | AS 'MODULE_PATHNAME','LWGEOM_to_BOX3D'
|
|---|
| 3082 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3083 | _COST_LOW;
|
|---|
| 3084 |
|
|---|
| 3085 | CREATE OR REPLACE FUNCTION box(geometry)
|
|---|
| 3086 | RETURNS box
|
|---|
| 3087 | AS 'MODULE_PATHNAME','LWGEOM_to_BOX'
|
|---|
| 3088 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3089 | _COST_LOW;
|
|---|
| 3090 |
|
|---|
| 3091 | CREATE OR REPLACE FUNCTION box2d(box3d)
|
|---|
| 3092 | RETURNS box2d
|
|---|
| 3093 | AS 'MODULE_PATHNAME','BOX3D_to_BOX2D'
|
|---|
| 3094 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3095 | _COST_LOW;
|
|---|
| 3096 |
|
|---|
| 3097 | CREATE OR REPLACE FUNCTION box3d(box2d)
|
|---|
| 3098 | RETURNS box3d
|
|---|
| 3099 | AS 'MODULE_PATHNAME','BOX2D_to_BOX3D'
|
|---|
| 3100 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3101 | _COST_LOW;
|
|---|
| 3102 |
|
|---|
| 3103 | CREATE OR REPLACE FUNCTION box(box3d)
|
|---|
| 3104 | RETURNS box
|
|---|
| 3105 | AS 'MODULE_PATHNAME','BOX3D_to_BOX'
|
|---|
| 3106 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3107 | _COST_LOW;
|
|---|
| 3108 |
|
|---|
| 3109 | CREATE OR REPLACE FUNCTION text(geometry)
|
|---|
| 3110 | RETURNS text
|
|---|
| 3111 | AS 'MODULE_PATHNAME','LWGEOM_to_text'
|
|---|
| 3112 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3113 | _COST_LOW;
|
|---|
| 3114 |
|
|---|
| 3115 | -- this is kept for backward-compatibility
|
|---|
| 3116 | -- Deprecation in 1.2.3
|
|---|
| 3117 | CREATE OR REPLACE FUNCTION box3dtobox(box3d)
|
|---|
| 3118 | RETURNS box
|
|---|
| 3119 | AS 'MODULE_PATHNAME','BOX3D_to_BOX'
|
|---|
| 3120 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3121 | _COST_LOW;
|
|---|
| 3122 |
|
|---|
| 3123 | CREATE OR REPLACE FUNCTION geometry(box2d)
|
|---|
| 3124 | RETURNS geometry
|
|---|
| 3125 | AS 'MODULE_PATHNAME','BOX2D_to_LWGEOM'
|
|---|
| 3126 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3127 | _COST_LOW;
|
|---|
| 3128 |
|
|---|
| 3129 | CREATE OR REPLACE FUNCTION geometry(box3d)
|
|---|
| 3130 | RETURNS geometry
|
|---|
| 3131 | AS 'MODULE_PATHNAME','BOX3D_to_LWGEOM'
|
|---|
| 3132 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3133 | _COST_LOW;
|
|---|
| 3134 |
|
|---|
| 3135 | CREATE OR REPLACE FUNCTION geometry(text)
|
|---|
| 3136 | RETURNS geometry
|
|---|
| 3137 | AS 'MODULE_PATHNAME','parse_WKT_lwgeom'
|
|---|
| 3138 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3139 | _COST_LOW;
|
|---|
| 3140 |
|
|---|
| 3141 | CREATE OR REPLACE FUNCTION geometry(bytea)
|
|---|
| 3142 | RETURNS geometry
|
|---|
| 3143 | AS 'MODULE_PATHNAME','LWGEOM_from_bytea'
|
|---|
| 3144 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3145 | _COST_LOW;
|
|---|
| 3146 |
|
|---|
| 3147 | CREATE OR REPLACE FUNCTION bytea(geometry)
|
|---|
| 3148 | RETURNS bytea
|
|---|
| 3149 | AS 'MODULE_PATHNAME','LWGEOM_to_bytea'
|
|---|
| 3150 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3151 | _COST_LOW;
|
|---|
| 3152 |
|
|---|
| 3153 | -- 7.3+ explicit casting definitions
|
|---|
| 3154 | CREATE CAST (geometry AS box2d) WITH FUNCTION box2d(geometry) AS IMPLICIT;
|
|---|
| 3155 | CREATE CAST (geometry AS box3d) WITH FUNCTION box3d(geometry) AS IMPLICIT;
|
|---|
| 3156 |
|
|---|
| 3157 | -- ticket: 2262 changed 2.1.0 to assignment to prevent PostGIS
|
|---|
| 3158 | -- from misusing PostgreSQL geometric functions
|
|---|
| 3159 | CREATE CAST (geometry AS box) WITH FUNCTION box(geometry) AS ASSIGNMENT;
|
|---|
| 3160 |
|
|---|
| 3161 | CREATE CAST (box3d AS box2d) WITH FUNCTION box2d(box3d) AS IMPLICIT;
|
|---|
| 3162 | CREATE CAST (box2d AS box3d) WITH FUNCTION box3d(box2d) AS IMPLICIT;
|
|---|
| 3163 | CREATE CAST (box2d AS geometry) WITH FUNCTION geometry(box2d) AS IMPLICIT;
|
|---|
| 3164 | CREATE CAST (box3d AS box) WITH FUNCTION box(box3d) AS IMPLICIT;
|
|---|
| 3165 | CREATE CAST (box3d AS geometry) WITH FUNCTION geometry(box3d) AS IMPLICIT;
|
|---|
| 3166 | CREATE CAST (text AS geometry) WITH FUNCTION geometry(text) AS IMPLICIT;
|
|---|
| 3167 | CREATE CAST (geometry AS text) WITH FUNCTION text(geometry) AS IMPLICIT;
|
|---|
| 3168 | CREATE CAST (bytea AS geometry) WITH FUNCTION geometry(bytea) AS IMPLICIT;
|
|---|
| 3169 | CREATE CAST (geometry AS bytea) WITH FUNCTION bytea(geometry) AS IMPLICIT;
|
|---|
| 3170 |
|
|---|
| 3171 | ---------------------------------------------------------------
|
|---|
| 3172 | -- Algorithms
|
|---|
| 3173 | ---------------------------------------------------------------
|
|---|
| 3174 |
|
|---|
| 3175 | -- Availability: 1.2.2
|
|---|
| 3176 | CREATE OR REPLACE FUNCTION ST_Simplify(geometry, float8)
|
|---|
| 3177 | RETURNS geometry
|
|---|
| 3178 | AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
|
|---|
| 3179 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3180 | _COST_HIGH;
|
|---|
| 3181 |
|
|---|
| 3182 | -- Availability: 2.2.0
|
|---|
| 3183 | CREATE OR REPLACE FUNCTION ST_Simplify(geometry, float8, boolean)
|
|---|
| 3184 | RETURNS geometry
|
|---|
| 3185 | AS 'MODULE_PATHNAME', 'LWGEOM_simplify2d'
|
|---|
| 3186 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3187 | _COST_HIGH;
|
|---|
| 3188 |
|
|---|
| 3189 | -- Availability: 2.2.0
|
|---|
| 3190 | CREATE OR REPLACE FUNCTION ST_SimplifyVW(geometry, float8)
|
|---|
| 3191 | RETURNS geometry
|
|---|
| 3192 | AS 'MODULE_PATHNAME', 'LWGEOM_SetEffectiveArea'
|
|---|
| 3193 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3194 | _COST_HIGH;
|
|---|
| 3195 |
|
|---|
| 3196 | -- Availability: 2.2.0
|
|---|
| 3197 | CREATE OR REPLACE FUNCTION ST_SetEffectiveArea(geometry, float8 default -1, integer default 1)
|
|---|
| 3198 | RETURNS geometry
|
|---|
| 3199 | AS 'MODULE_PATHNAME', 'LWGEOM_SetEffectiveArea'
|
|---|
| 3200 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3201 | _COST_MEDIUM;
|
|---|
| 3202 |
|
|---|
| 3203 | -- Availability: 2.5.0
|
|---|
| 3204 | CREATE OR REPLACE FUNCTION ST_FilterByM(geometry, double precision, double precision default null, boolean default false)
|
|---|
| 3205 | RETURNS geometry
|
|---|
| 3206 | AS 'MODULE_PATHNAME', 'LWGEOM_FilterByM'
|
|---|
| 3207 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 3208 | _COST_MEDIUM;
|
|---|
| 3209 |
|
|---|
| 3210 | -- Availability: 2.5.0
|
|---|
| 3211 | CREATE OR REPLACE FUNCTION ST_ChaikinSmoothing(geometry, integer default 1, boolean default false)
|
|---|
| 3212 | RETURNS geometry
|
|---|
| 3213 | AS 'MODULE_PATHNAME', 'LWGEOM_ChaikinSmoothing'
|
|---|
| 3214 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3215 | _COST_HIGH;
|
|---|
| 3216 |
|
|---|
| 3217 | -- ST_SnapToGrid(input, xoff, yoff, xsize, ysize)
|
|---|
| 3218 | -- Availability: 1.2.2
|
|---|
| 3219 | CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8, float8, float8)
|
|---|
| 3220 | RETURNS geometry
|
|---|
| 3221 | AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid'
|
|---|
| 3222 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3223 | _COST_MEDIUM;
|
|---|
| 3224 |
|
|---|
| 3225 | -- ST_SnapToGrid(input, xsize, ysize) # offsets=0
|
|---|
| 3226 | -- Availability: 1.2.2
|
|---|
| 3227 | CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8, float8)
|
|---|
| 3228 | RETURNS geometry
|
|---|
| 3229 | AS 'SELECT @extschema@.ST_SnapToGrid($1, 0, 0, $2, $3)'
|
|---|
| 3230 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3231 | _COST_MEDIUM;
|
|---|
| 3232 |
|
|---|
| 3233 | -- ST_SnapToGrid(input, size) # xsize=ysize=size, offsets=0
|
|---|
| 3234 | -- Availability: 1.2.2
|
|---|
| 3235 | CREATE OR REPLACE FUNCTION ST_SnapToGrid(geometry, float8)
|
|---|
| 3236 | RETURNS geometry
|
|---|
| 3237 | AS 'SELECT @extschema@.ST_SnapToGrid($1, 0, 0, $2, $2)'
|
|---|
| 3238 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3239 |
|
|---|
| 3240 | -- ST_SnapToGrid(input, point_offsets, xsize, ysize, zsize, msize)
|
|---|
| 3241 | -- Availability: 1.2.2
|
|---|
| 3242 | CREATE OR REPLACE FUNCTION ST_SnapToGrid(geom1 geometry, geom2 geometry, float8, float8, float8, float8)
|
|---|
| 3243 | RETURNS geometry
|
|---|
| 3244 | AS 'MODULE_PATHNAME', 'LWGEOM_snaptogrid_pointoff'
|
|---|
| 3245 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3246 | _COST_MEDIUM;
|
|---|
| 3247 |
|
|---|
| 3248 | -- Availability: 1.2.2
|
|---|
| 3249 | CREATE OR REPLACE FUNCTION ST_Segmentize(geometry, float8)
|
|---|
| 3250 | RETURNS geometry
|
|---|
| 3251 | AS 'MODULE_PATHNAME', 'LWGEOM_segmentize2d'
|
|---|
| 3252 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3253 | _COST_MEDIUM;
|
|---|
| 3254 |
|
|---|
| 3255 | ---------------------------------------------------------------
|
|---|
| 3256 | -- LRS
|
|---|
| 3257 | ---------------------------------------------------------------
|
|---|
| 3258 |
|
|---|
| 3259 | -- Availability: 2.1.0
|
|---|
| 3260 | CREATE OR REPLACE FUNCTION ST_LineInterpolatePoint(geometry, float8)
|
|---|
| 3261 | RETURNS geometry
|
|---|
| 3262 | AS 'MODULE_PATHNAME', 'LWGEOM_line_interpolate_point'
|
|---|
| 3263 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3264 | _COST_MEDIUM;
|
|---|
| 3265 |
|
|---|
| 3266 | -- Availability: 2.5.0
|
|---|
| 3267 | CREATE OR REPLACE FUNCTION ST_LineInterpolatePoints(geometry, float8, repeat boolean DEFAULT true)
|
|---|
| 3268 | RETURNS geometry
|
|---|
| 3269 | AS 'MODULE_PATHNAME', 'LWGEOM_line_interpolate_point'
|
|---|
| 3270 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3271 | _COST_MEDIUM;
|
|---|
| 3272 |
|
|---|
| 3273 | -- Availability: 2.1.0
|
|---|
| 3274 | CREATE OR REPLACE FUNCTION ST_LineSubstring(geometry, float8, float8)
|
|---|
| 3275 | RETURNS geometry
|
|---|
| 3276 | AS 'MODULE_PATHNAME', 'LWGEOM_line_substring'
|
|---|
| 3277 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3278 | _COST_MEDIUM;
|
|---|
| 3279 |
|
|---|
| 3280 | -- Availability: 2.1.0
|
|---|
| 3281 | CREATE OR REPLACE FUNCTION ST_LineLocatePoint(geom1 geometry, geom2 geometry)
|
|---|
| 3282 | RETURNS float8
|
|---|
| 3283 | AS 'MODULE_PATHNAME', 'LWGEOM_line_locate_point'
|
|---|
| 3284 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3285 | _COST_MEDIUM;
|
|---|
| 3286 |
|
|---|
| 3287 | -- Availability: 1.5.0
|
|---|
| 3288 | CREATE OR REPLACE FUNCTION ST_AddMeasure(geometry, float8, float8)
|
|---|
| 3289 | RETURNS geometry
|
|---|
| 3290 | AS 'MODULE_PATHNAME', 'ST_AddMeasure'
|
|---|
| 3291 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3292 | _COST_MEDIUM;
|
|---|
| 3293 |
|
|---|
| 3294 | ---------------------------------------------------------------
|
|---|
| 3295 | -- TEMPORAL
|
|---|
| 3296 | ---------------------------------------------------------------
|
|---|
| 3297 |
|
|---|
| 3298 | -- Availability: 2.2.0
|
|---|
| 3299 | CREATE OR REPLACE FUNCTION ST_ClosestPointOfApproach(geometry, geometry)
|
|---|
| 3300 | RETURNS float8
|
|---|
| 3301 | AS 'MODULE_PATHNAME', 'ST_ClosestPointOfApproach'
|
|---|
| 3302 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3303 | _COST_HIGH;
|
|---|
| 3304 |
|
|---|
| 3305 | -- Availability: 2.2.0
|
|---|
| 3306 | CREATE OR REPLACE FUNCTION ST_DistanceCPA(geometry, geometry)
|
|---|
| 3307 | RETURNS float8
|
|---|
| 3308 | AS 'MODULE_PATHNAME', 'ST_DistanceCPA'
|
|---|
| 3309 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3310 | _COST_HIGH;
|
|---|
| 3311 |
|
|---|
| 3312 | -- Availability: 2.2.0
|
|---|
| 3313 | CREATE OR REPLACE FUNCTION ST_CPAWithin(geometry, geometry, float8)
|
|---|
| 3314 | RETURNS bool
|
|---|
| 3315 | AS 'MODULE_PATHNAME', 'ST_CPAWithin'
|
|---|
| 3316 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3317 | _COST_HIGH;
|
|---|
| 3318 |
|
|---|
| 3319 | -- Availability: 2.2.0
|
|---|
| 3320 | CREATE OR REPLACE FUNCTION ST_IsValidTrajectory(geometry)
|
|---|
| 3321 | RETURNS bool
|
|---|
| 3322 | AS 'MODULE_PATHNAME', 'ST_IsValidTrajectory'
|
|---|
| 3323 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3324 | _COST_HIGH;
|
|---|
| 3325 |
|
|---|
| 3326 | ---------------------------------------------------------------
|
|---|
| 3327 | -- GEOS
|
|---|
| 3328 | ---------------------------------------------------------------
|
|---|
| 3329 |
|
|---|
| 3330 | CREATE OR REPLACE FUNCTION ST_Intersection(geom1 geometry, geom2 geometry)
|
|---|
| 3331 | RETURNS geometry
|
|---|
| 3332 | AS 'MODULE_PATHNAME','ST_Intersection'
|
|---|
| 3333 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3334 | _COST_HIGH;
|
|---|
| 3335 |
|
|---|
| 3336 | CREATE OR REPLACE FUNCTION ST_Buffer(geom geometry, radius float8, options text DEFAULT '')
|
|---|
| 3337 | RETURNS geometry
|
|---|
| 3338 | AS 'MODULE_PATHNAME','buffer'
|
|---|
| 3339 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3340 | _COST_HIGH;
|
|---|
| 3341 |
|
|---|
| 3342 | -- Availability: 1.2.2
|
|---|
| 3343 | CREATE OR REPLACE FUNCTION ST_Buffer(geom geometry, radius float8, quadsegs integer)
|
|---|
| 3344 | RETURNS geometry
|
|---|
| 3345 | AS $$ SELECT @extschema@.ST_Buffer($1, $2, CAST('quad_segs='||CAST($3 AS text) as text)) $$
|
|---|
| 3346 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3347 |
|
|---|
| 3348 | -- Availability: 2.3.0
|
|---|
| 3349 | CREATE OR REPLACE FUNCTION ST_MinimumBoundingRadius(geometry, OUT center geometry, OUT radius double precision)
|
|---|
| 3350 | AS 'MODULE_PATHNAME', 'ST_MinimumBoundingRadius'
|
|---|
| 3351 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3352 | _COST_HIGH;
|
|---|
| 3353 |
|
|---|
| 3354 | -- Availability: 1.4.0
|
|---|
| 3355 | CREATE OR REPLACE FUNCTION ST_MinimumBoundingCircle(inputgeom geometry, segs_per_quarter integer DEFAULT 48)
|
|---|
| 3356 | RETURNS geometry
|
|---|
| 3357 | AS 'MODULE_PATHNAME', 'ST_MinimumBoundingCircle'
|
|---|
| 3358 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3359 | _COST_HIGH;
|
|---|
| 3360 |
|
|---|
| 3361 | -- Availability: 2.5.0
|
|---|
| 3362 | CREATE OR REPLACE FUNCTION ST_OrientedEnvelope(geometry)
|
|---|
| 3363 | RETURNS geometry
|
|---|
| 3364 | AS 'MODULE_PATHNAME', 'ST_OrientedEnvelope'
|
|---|
| 3365 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3366 | _COST_HIGH;
|
|---|
| 3367 |
|
|---|
| 3368 | -- Availability: 2.0.0
|
|---|
| 3369 | CREATE OR REPLACE FUNCTION ST_OffsetCurve(line geometry, distance float8, params text DEFAULT '')
|
|---|
| 3370 | RETURNS geometry
|
|---|
| 3371 | AS 'MODULE_PATHNAME','ST_OffsetCurve'
|
|---|
| 3372 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3373 | _COST_HIGH;
|
|---|
| 3374 |
|
|---|
| 3375 | -- Availability: 2.3.0
|
|---|
| 3376 | -- Changed: 3.0.0
|
|---|
| 3377 | CREATE OR REPLACE FUNCTION ST_GeneratePoints(area geometry, npoints integer)
|
|---|
| 3378 | RETURNS geometry
|
|---|
| 3379 | AS 'MODULE_PATHNAME','ST_GeneratePoints'
|
|---|
| 3380 | LANGUAGE 'c' VOLATILE STRICT _PARALLEL
|
|---|
| 3381 | _COST_HIGH;
|
|---|
| 3382 |
|
|---|
| 3383 | -- Availability: 3.0.0
|
|---|
| 3384 | CREATE OR REPLACE FUNCTION ST_GeneratePoints(area geometry, npoints integer, seed integer)
|
|---|
| 3385 | RETURNS geometry
|
|---|
| 3386 | AS 'MODULE_PATHNAME','ST_GeneratePoints'
|
|---|
| 3387 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3388 | _COST_HIGH;
|
|---|
| 3389 |
|
|---|
| 3390 | -- PostGIS equivalent function: convexhull(geometry)
|
|---|
| 3391 | CREATE OR REPLACE FUNCTION ST_ConvexHull(geometry)
|
|---|
| 3392 | RETURNS geometry
|
|---|
| 3393 | AS 'MODULE_PATHNAME','convexhull'
|
|---|
| 3394 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3395 | _COST_HIGH;
|
|---|
| 3396 |
|
|---|
| 3397 | -- Availability: 1.3.3
|
|---|
| 3398 | CREATE OR REPLACE FUNCTION ST_SimplifyPreserveTopology(geometry, float8)
|
|---|
| 3399 | RETURNS geometry
|
|---|
| 3400 | AS 'MODULE_PATHNAME','topologypreservesimplify'
|
|---|
| 3401 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3402 | _COST_HIGH;
|
|---|
| 3403 |
|
|---|
| 3404 | -- Availability: 1.4.0
|
|---|
| 3405 | CREATE OR REPLACE FUNCTION ST_IsValidReason(geometry)
|
|---|
| 3406 | RETURNS text
|
|---|
| 3407 | AS 'MODULE_PATHNAME', 'isvalidreason'
|
|---|
| 3408 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3409 | _COST_HIGH;
|
|---|
| 3410 |
|
|---|
| 3411 | -- Availability: 2.0.0
|
|---|
| 3412 | CREATE TYPE valid_detail AS (
|
|---|
| 3413 | valid bool,
|
|---|
| 3414 | reason varchar,
|
|---|
| 3415 | location geometry
|
|---|
| 3416 | );
|
|---|
| 3417 |
|
|---|
| 3418 | -- Availability: 2.0.0
|
|---|
| 3419 | CREATE OR REPLACE FUNCTION ST_IsValidDetail(geom geometry, flags int4 DEFAULT 0)
|
|---|
| 3420 | RETURNS valid_detail
|
|---|
| 3421 | AS 'MODULE_PATHNAME', 'isvaliddetail'
|
|---|
| 3422 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3423 | _COST_HIGH;
|
|---|
| 3424 |
|
|---|
| 3425 | -- Availability: 2.0.0
|
|---|
| 3426 | CREATE OR REPLACE FUNCTION ST_IsValidReason(geometry, int4)
|
|---|
| 3427 | RETURNS text
|
|---|
| 3428 | AS $$
|
|---|
| 3429 | SELECT CASE WHEN valid THEN 'Valid Geometry' ELSE reason END FROM (
|
|---|
| 3430 | SELECT (@extschema@.ST_isValidDetail($1, $2)).*
|
|---|
| 3431 | ) foo
|
|---|
| 3432 | $$
|
|---|
| 3433 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3434 |
|
|---|
| 3435 | -- Availability: 2.0.0
|
|---|
| 3436 | CREATE OR REPLACE FUNCTION ST_IsValid(geometry, int4)
|
|---|
| 3437 | RETURNS boolean
|
|---|
| 3438 | AS 'SELECT (@extschema@.ST_isValidDetail($1, $2)).valid'
|
|---|
| 3439 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3440 |
|
|---|
| 3441 | -- Availability: 1.5.0
|
|---|
| 3442 | CREATE OR REPLACE FUNCTION ST_HausdorffDistance(geom1 geometry, geom2 geometry)
|
|---|
| 3443 | RETURNS FLOAT8
|
|---|
| 3444 | AS 'MODULE_PATHNAME', 'hausdorffdistance'
|
|---|
| 3445 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3446 | _COST_HIGH;
|
|---|
| 3447 |
|
|---|
| 3448 | -- Availability: 1.5.0
|
|---|
| 3449 | CREATE OR REPLACE FUNCTION ST_HausdorffDistance(geom1 geometry, geom2 geometry, float8)
|
|---|
| 3450 | RETURNS FLOAT8
|
|---|
| 3451 | AS 'MODULE_PATHNAME', 'hausdorffdistancedensify'
|
|---|
| 3452 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3453 | _COST_HIGH;
|
|---|
| 3454 |
|
|---|
| 3455 | -- Availability: 2.4.0
|
|---|
| 3456 | CREATE OR REPLACE FUNCTION ST_FrechetDistance(geom1 geometry, geom2 geometry, float8 default -1)
|
|---|
| 3457 | RETURNS FLOAT8
|
|---|
| 3458 | AS 'MODULE_PATHNAME', 'ST_FrechetDistance'
|
|---|
| 3459 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3460 | _COST_HIGH;
|
|---|
| 3461 |
|
|---|
| 3462 | -- PostGIS equivalent function: difference(geom1 geometry, geom2 geometry)
|
|---|
| 3463 | CREATE OR REPLACE FUNCTION ST_Difference(geom1 geometry, geom2 geometry)
|
|---|
| 3464 | RETURNS geometry
|
|---|
| 3465 | AS 'MODULE_PATHNAME','ST_Difference'
|
|---|
| 3466 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3467 | _COST_HIGH;
|
|---|
| 3468 |
|
|---|
| 3469 | -- PostGIS equivalent function: boundary(geometry)
|
|---|
| 3470 | CREATE OR REPLACE FUNCTION ST_Boundary(geometry)
|
|---|
| 3471 | RETURNS geometry
|
|---|
| 3472 | AS 'MODULE_PATHNAME','boundary'
|
|---|
| 3473 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3474 | _COST_MEDIUM;
|
|---|
| 3475 |
|
|---|
| 3476 | -- Availability: 2.3.0
|
|---|
| 3477 | CREATE OR REPLACE FUNCTION ST_Points(geometry)
|
|---|
| 3478 | RETURNS geometry
|
|---|
| 3479 | AS 'MODULE_PATHNAME', 'ST_Points'
|
|---|
| 3480 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3481 | _COST_MEDIUM;
|
|---|
| 3482 |
|
|---|
| 3483 | -- PostGIS equivalent function: symdifference(geom1 geometry, geom2 geometry)
|
|---|
| 3484 | CREATE OR REPLACE FUNCTION ST_SymDifference(geom1 geometry, geom2 geometry)
|
|---|
| 3485 | RETURNS geometry
|
|---|
| 3486 | AS 'MODULE_PATHNAME','symdifference'
|
|---|
| 3487 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3488 | _COST_HIGH;
|
|---|
| 3489 |
|
|---|
| 3490 | -- Availability: 1.2.2
|
|---|
| 3491 | CREATE OR REPLACE FUNCTION ST_SymmetricDifference(geom1 geometry, geom2 geometry)
|
|---|
| 3492 | RETURNS geometry
|
|---|
| 3493 | AS 'MODULE_PATHNAME','symdifference'
|
|---|
| 3494 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3495 | _COST_HIGH;
|
|---|
| 3496 |
|
|---|
| 3497 | -- PostGIS equivalent function: GeomUnion(geom1 geometry, geom2 geometry)
|
|---|
| 3498 | CREATE OR REPLACE FUNCTION ST_Union(geom1 geometry, geom2 geometry)
|
|---|
| 3499 | RETURNS geometry
|
|---|
| 3500 | AS 'MODULE_PATHNAME','ST_Union'
|
|---|
| 3501 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3502 | _COST_HIGH;
|
|---|
| 3503 |
|
|---|
| 3504 | -- Availability: 2.0.0
|
|---|
| 3505 | CREATE OR REPLACE FUNCTION ST_UnaryUnion(geometry)
|
|---|
| 3506 | RETURNS geometry
|
|---|
| 3507 | AS 'MODULE_PATHNAME','ST_UnaryUnion'
|
|---|
| 3508 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3509 | _COST_HIGH;
|
|---|
| 3510 |
|
|---|
| 3511 | -- ST_RemoveRepeatedPoints(in geometry)
|
|---|
| 3512 | --
|
|---|
| 3513 | -- Removes duplicate vertices in input.
|
|---|
| 3514 | -- Only checks consecutive points for lineal and polygonal geoms.
|
|---|
| 3515 | -- Checks all points for multipoint geoms.
|
|---|
| 3516 | --
|
|---|
| 3517 | -- Availability: 2.2.0
|
|---|
| 3518 | CREATE OR REPLACE FUNCTION ST_RemoveRepeatedPoints(geom geometry, tolerance float8 default 0.0)
|
|---|
| 3519 | RETURNS geometry
|
|---|
| 3520 | AS 'MODULE_PATHNAME', 'ST_RemoveRepeatedPoints'
|
|---|
| 3521 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3522 | _COST_MEDIUM;
|
|---|
| 3523 |
|
|---|
| 3524 | -- Availability: 2.2.0
|
|---|
| 3525 | CREATE OR REPLACE FUNCTION ST_ClipByBox2d(geom geometry, box box2d)
|
|---|
| 3526 | RETURNS geometry
|
|---|
| 3527 | AS 'MODULE_PATHNAME', 'ST_ClipByBox2d'
|
|---|
| 3528 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3529 | _COST_HIGH;
|
|---|
| 3530 |
|
|---|
| 3531 | -- Availability: 2.2.0
|
|---|
| 3532 | CREATE OR REPLACE FUNCTION ST_Subdivide(geom geometry, maxvertices integer DEFAULT 256)
|
|---|
| 3533 | RETURNS setof geometry
|
|---|
| 3534 | AS 'MODULE_PATHNAME', 'ST_Subdivide'
|
|---|
| 3535 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3536 | _COST_HIGH;
|
|---|
| 3537 |
|
|---|
| 3538 | --------------------------------------------------------------------------------
|
|---|
| 3539 | -- ST_CleanGeometry / ST_MakeValid
|
|---|
| 3540 | --------------------------------------------------------------------------------
|
|---|
| 3541 |
|
|---|
| 3542 | -- ST_MakeValid(in geometry)
|
|---|
| 3543 | --
|
|---|
| 3544 | -- Try to make the input valid maintaining the boundary profile.
|
|---|
| 3545 | -- May return a collection.
|
|---|
| 3546 | -- May return a geometry with inferior dimensions (dimensional collapses).
|
|---|
| 3547 | -- May return NULL if can't handle input.
|
|---|
| 3548 | --
|
|---|
| 3549 | -- Availability: 2.0.0
|
|---|
| 3550 | CREATE OR REPLACE FUNCTION ST_MakeValid(geometry)
|
|---|
| 3551 | RETURNS geometry
|
|---|
| 3552 | AS 'MODULE_PATHNAME', 'ST_MakeValid'
|
|---|
| 3553 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3554 | _COST_HIGH;
|
|---|
| 3555 |
|
|---|
| 3556 | -- ST_CleanGeometry(in geometry)
|
|---|
| 3557 | --
|
|---|
| 3558 | -- Make input:
|
|---|
| 3559 | -- - Simple (lineal components)
|
|---|
| 3560 | -- - Valid (polygonal components)
|
|---|
| 3561 | -- - Obeying the RHR (if polygonal)
|
|---|
| 3562 | -- - Simplified of consecutive duplicated points
|
|---|
| 3563 | -- Ensuring:
|
|---|
| 3564 | -- - No input vertexes are discarded (except consecutive repeated ones)
|
|---|
| 3565 | -- - Output geometry type matches input
|
|---|
| 3566 | --
|
|---|
| 3567 | -- Returns NULL on failure.
|
|---|
| 3568 | --
|
|---|
| 3569 | -- Availability: 2.0.0
|
|---|
| 3570 | CREATE OR REPLACE FUNCTION ST_CleanGeometry(geometry)
|
|---|
| 3571 | RETURNS geometry
|
|---|
| 3572 | AS 'MODULE_PATHNAME', 'ST_CleanGeometry'
|
|---|
| 3573 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3574 | _COST_HIGH;
|
|---|
| 3575 |
|
|---|
| 3576 | --------------------------------------------------------------------------------
|
|---|
| 3577 | -- ST_Split
|
|---|
| 3578 | --------------------------------------------------------------------------------
|
|---|
| 3579 |
|
|---|
| 3580 | -- ST_Split(in geometry, blade geometry)
|
|---|
| 3581 | --
|
|---|
| 3582 | -- Split a geometry in parts after cutting it with given blade.
|
|---|
| 3583 | -- Returns a collection containing all parts.
|
|---|
| 3584 | --
|
|---|
| 3585 | -- Note that multi-part geometries will be returned exploded,
|
|---|
| 3586 | -- no matter relation to blade.
|
|---|
| 3587 | --
|
|---|
| 3588 | -- Availability: 2.0.0
|
|---|
| 3589 | --
|
|---|
| 3590 | CREATE OR REPLACE FUNCTION ST_Split(geom1 geometry, geom2 geometry)
|
|---|
| 3591 | RETURNS geometry
|
|---|
| 3592 | AS 'MODULE_PATHNAME', 'ST_Split'
|
|---|
| 3593 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3594 | _COST_HIGH;
|
|---|
| 3595 |
|
|---|
| 3596 | --------------------------------------------------------------------------------
|
|---|
| 3597 | -- ST_SharedPaths
|
|---|
| 3598 | --------------------------------------------------------------------------------
|
|---|
| 3599 |
|
|---|
| 3600 | -- ST_SharedPaths(lineal1 geometry, lineal1 geometry)
|
|---|
| 3601 | --
|
|---|
| 3602 | -- Returns a collection containing paths shared by the two
|
|---|
| 3603 | -- input geometries. Those going in the same direction are
|
|---|
| 3604 | -- in the first element of the collection, those going in the
|
|---|
| 3605 | -- opposite direction are in the second element.
|
|---|
| 3606 | --
|
|---|
| 3607 | -- The paths themselves are given in the direction of the
|
|---|
| 3608 | -- first geometry.
|
|---|
| 3609 | --
|
|---|
| 3610 | -- Availability: 2.0.0
|
|---|
| 3611 | --
|
|---|
| 3612 | CREATE OR REPLACE FUNCTION ST_SharedPaths(geom1 geometry, geom2 geometry)
|
|---|
| 3613 | RETURNS geometry
|
|---|
| 3614 | AS 'MODULE_PATHNAME', 'ST_SharedPaths'
|
|---|
| 3615 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3616 | _COST_HIGH;
|
|---|
| 3617 |
|
|---|
| 3618 | --------------------------------------------------------------------------------
|
|---|
| 3619 | -- ST_Snap
|
|---|
| 3620 | --------------------------------------------------------------------------------
|
|---|
| 3621 |
|
|---|
| 3622 | -- ST_Snap(g1 geometry, g2 geometry, tolerance float8)
|
|---|
| 3623 | --
|
|---|
| 3624 | -- Snap first geometry against second.
|
|---|
| 3625 | --
|
|---|
| 3626 | -- Availability: 2.0.0
|
|---|
| 3627 | --
|
|---|
| 3628 | CREATE OR REPLACE FUNCTION ST_Snap(geom1 geometry, geom2 geometry, float8)
|
|---|
| 3629 | RETURNS geometry
|
|---|
| 3630 | AS 'MODULE_PATHNAME', 'ST_Snap'
|
|---|
| 3631 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3632 | _COST_HIGH;
|
|---|
| 3633 |
|
|---|
| 3634 | --------------------------------------------------------------------------------
|
|---|
| 3635 | -- ST_RelateMatch
|
|---|
| 3636 | --------------------------------------------------------------------------------
|
|---|
| 3637 |
|
|---|
| 3638 | -- ST_RelateMatch(matrix text, pattern text)
|
|---|
| 3639 | --
|
|---|
| 3640 | -- Returns true if pattern 'pattern' matches DE9 intersection matrix 'matrix'
|
|---|
| 3641 | --
|
|---|
| 3642 | -- Availability: 2.0.0
|
|---|
| 3643 | --
|
|---|
| 3644 | CREATE OR REPLACE FUNCTION ST_RelateMatch(text, text)
|
|---|
| 3645 | RETURNS bool
|
|---|
| 3646 | AS 'MODULE_PATHNAME', 'ST_RelateMatch'
|
|---|
| 3647 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3648 | _COST_MEDIUM;
|
|---|
| 3649 |
|
|---|
| 3650 | --------------------------------------------------------------------------------
|
|---|
| 3651 | -- ST_Node
|
|---|
| 3652 | --------------------------------------------------------------------------------
|
|---|
| 3653 |
|
|---|
| 3654 | -- ST_Node(in geometry)
|
|---|
| 3655 | --
|
|---|
| 3656 | -- Fully node lines in input using the least set of nodes while
|
|---|
| 3657 | -- preserving each of the input ones.
|
|---|
| 3658 | -- Returns a linestring or a multilinestring containing all parts.
|
|---|
| 3659 | --
|
|---|
| 3660 | -- Availability: 2.0.0
|
|---|
| 3661 | --
|
|---|
| 3662 | CREATE OR REPLACE FUNCTION ST_Node(g geometry)
|
|---|
| 3663 | RETURNS geometry
|
|---|
| 3664 | AS 'MODULE_PATHNAME', 'ST_Node'
|
|---|
| 3665 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3666 | _COST_HIGH;
|
|---|
| 3667 |
|
|---|
| 3668 | --------------------------------------------------------------------------------
|
|---|
| 3669 | -- ST_DelaunayTriangles
|
|---|
| 3670 | --------------------------------------------------------------------------------
|
|---|
| 3671 |
|
|---|
| 3672 | -- ST_DelaunayTriangles(g1 geometry, tolerance float8, flags int4)
|
|---|
| 3673 | --
|
|---|
| 3674 | -- Builds Delaunay triangulation out of geometry vertices.
|
|---|
| 3675 | --
|
|---|
| 3676 | -- Returns a collection of triangular polygons with flags=0
|
|---|
| 3677 | -- or a multilinestring with flags=1
|
|---|
| 3678 | --
|
|---|
| 3679 | -- If a tolerance is given it will be used to snap the input points
|
|---|
| 3680 | -- each-other.
|
|---|
| 3681 | --
|
|---|
| 3682 | --
|
|---|
| 3683 | -- Availability: 2.1.0
|
|---|
| 3684 | --
|
|---|
| 3685 | CREATE OR REPLACE FUNCTION ST_DelaunayTriangles(g1 geometry, tolerance float8 DEFAULT 0.0, flags int4 DEFAULT 0)
|
|---|
| 3686 | RETURNS geometry
|
|---|
| 3687 | AS 'MODULE_PATHNAME', 'ST_DelaunayTriangles'
|
|---|
| 3688 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3689 | _COST_HIGH;
|
|---|
| 3690 |
|
|---|
| 3691 | --------------------------------------------------------------------------------
|
|---|
| 3692 | -- _ST_Voronoi
|
|---|
| 3693 | --------------------------------------------------------------------------------
|
|---|
| 3694 |
|
|---|
| 3695 | -- ST_Voronoi(g1 geometry, clip geometry, tolerance float8, return_polygons boolean)
|
|---|
| 3696 | --
|
|---|
| 3697 | -- Builds a Voronoi Diagram from the vertices of the supplied geometry.
|
|---|
| 3698 | --
|
|---|
| 3699 | -- By default, the diagram will be extended to an envelope larger than the
|
|---|
| 3700 | -- input points.
|
|---|
| 3701 | --
|
|---|
| 3702 | -- If a second geometry is supplied, the diagram will be extended to fill the
|
|---|
| 3703 | -- envelope of the second geometry, unless that is smaller than the default
|
|---|
| 3704 | -- envelope.
|
|---|
| 3705 | --
|
|---|
| 3706 | -- If a tolerance is given it will be used to snap the input points
|
|---|
| 3707 | -- each-other.
|
|---|
| 3708 | --
|
|---|
| 3709 | -- If return_polygons is true, returns a GeometryCollection of polygons.
|
|---|
| 3710 | -- If return_polygons is false, returns a MultiLineString.
|
|---|
| 3711 | --
|
|---|
| 3712 | -- Availability: 2.3.0
|
|---|
| 3713 | --
|
|---|
| 3714 |
|
|---|
| 3715 | CREATE OR REPLACE FUNCTION _ST_Voronoi(g1 geometry, clip geometry DEFAULT NULL, tolerance float8 DEFAULT 0.0, return_polygons boolean DEFAULT true)
|
|---|
| 3716 | RETURNS geometry
|
|---|
| 3717 | AS 'MODULE_PATHNAME', 'ST_Voronoi'
|
|---|
| 3718 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 3719 | _COST_HIGH;
|
|---|
| 3720 |
|
|---|
| 3721 | CREATE OR REPLACE FUNCTION ST_VoronoiPolygons(g1 geometry, tolerance float8 DEFAULT 0.0, extend_to geometry DEFAULT NULL)
|
|---|
| 3722 | RETURNS geometry
|
|---|
| 3723 | AS $$ SELECT @extschema@._ST_Voronoi(g1, extend_to, tolerance, true) $$
|
|---|
| 3724 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 3725 |
|
|---|
| 3726 | CREATE OR REPLACE FUNCTION ST_VoronoiLines(g1 geometry, tolerance float8 DEFAULT 0.0, extend_to geometry DEFAULT NULL)
|
|---|
| 3727 | RETURNS geometry
|
|---|
| 3728 | AS $$ SELECT @extschema@._ST_Voronoi(g1, extend_to, tolerance, false) $$
|
|---|
| 3729 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 3730 |
|
|---|
| 3731 | --------------------------------------------------------------------------------
|
|---|
| 3732 | -- Aggregates and their supporting functions
|
|---|
| 3733 | --------------------------------------------------------------------------------
|
|---|
| 3734 |
|
|---|
| 3735 | -- Availability: 2.2.0
|
|---|
| 3736 | CREATE OR REPLACE FUNCTION ST_CombineBBox(box3d,geometry)
|
|---|
| 3737 | RETURNS box3d
|
|---|
| 3738 | AS 'MODULE_PATHNAME', 'BOX3D_combine'
|
|---|
| 3739 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 3740 |
|
|---|
| 3741 | -- Availability: 2.3.0
|
|---|
| 3742 | CREATE OR REPLACE FUNCTION ST_CombineBBox(box3d,box3d)
|
|---|
| 3743 | RETURNS box3d
|
|---|
| 3744 | AS 'MODULE_PATHNAME', 'BOX3D_combine_BOX3D'
|
|---|
| 3745 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 3746 |
|
|---|
| 3747 | -- Availability: 2.2.0
|
|---|
| 3748 | CREATE OR REPLACE FUNCTION ST_CombineBbox(box2d,geometry)
|
|---|
| 3749 | RETURNS box2d
|
|---|
| 3750 | AS 'MODULE_PATHNAME', 'BOX2D_combine'
|
|---|
| 3751 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 3752 |
|
|---|
| 3753 | -- Availability: 1.2.2
|
|---|
| 3754 | -- Changed: 2.2.0 to use non-deprecated ST_CombineBBox (r13535)
|
|---|
| 3755 | -- Changed: 2.3.0 to support PostgreSQL 9.6
|
|---|
| 3756 | -- Changed: 2.3.1 to support PostgreSQL 9.6 parallel safe
|
|---|
| 3757 | CREATE AGGREGATE ST_Extent(geometry) (
|
|---|
| 3758 | sfunc = ST_CombineBBox,
|
|---|
| 3759 | stype = box3d,
|
|---|
| 3760 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3761 | combinefunc = ST_CombineBBox,
|
|---|
| 3762 | parallel = safe,
|
|---|
| 3763 | #endif
|
|---|
| 3764 | finalfunc = box2d
|
|---|
| 3765 | );
|
|---|
| 3766 |
|
|---|
| 3767 | -- Availability: 2.0.0
|
|---|
| 3768 | -- Changed: 2.2.0 to use non-deprecated ST_CombineBBox (r13535)
|
|---|
| 3769 | -- Changed: 2.3.0 to support PostgreSQL 9.6
|
|---|
| 3770 | -- Changed: 2.3.1 to support PostgreSQL 9.6 parallel safe
|
|---|
| 3771 | CREATE AGGREGATE ST_3DExtent(geometry)(
|
|---|
| 3772 | sfunc = ST_CombineBBox,
|
|---|
| 3773 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3774 | combinefunc = ST_CombineBBox,
|
|---|
| 3775 | parallel = safe,
|
|---|
| 3776 | #endif
|
|---|
| 3777 | stype = box3d
|
|---|
| 3778 | );
|
|---|
| 3779 |
|
|---|
| 3780 | -- Availability: 1.2.2
|
|---|
| 3781 | CREATE OR REPLACE FUNCTION ST_Collect(geom1 geometry, geom2 geometry)
|
|---|
| 3782 | RETURNS geometry
|
|---|
| 3783 | AS 'MODULE_PATHNAME', 'LWGEOM_collect'
|
|---|
| 3784 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 3785 |
|
|---|
| 3786 | -- Availability: 1.2.2
|
|---|
| 3787 | -- Changed: 2.3.0 to support PostgreSQL 9.6
|
|---|
| 3788 | -- Changed: 2.3.1 to support PostgreSQL 9.6 parallel safe
|
|---|
| 3789 | CREATE AGGREGATE ST_MemCollect(geometry)(
|
|---|
| 3790 | sfunc = ST_collect,
|
|---|
| 3791 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3792 | combinefunc = ST_collect,
|
|---|
| 3793 | parallel = safe,
|
|---|
| 3794 | #endif
|
|---|
| 3795 | stype = geometry
|
|---|
| 3796 | );
|
|---|
| 3797 |
|
|---|
| 3798 | -- Availability: 1.2.2
|
|---|
| 3799 | CREATE OR REPLACE FUNCTION ST_Collect(geometry[])
|
|---|
| 3800 | RETURNS geometry
|
|---|
| 3801 | AS 'MODULE_PATHNAME', 'LWGEOM_collect_garray'
|
|---|
| 3802 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3803 |
|
|---|
| 3804 | -- Availability: 1.2.2
|
|---|
| 3805 | -- Changed: 2.3.0 to support PostgreSQL 9.6
|
|---|
| 3806 | -- Changed: 2.3.1 to support PostgreSQL 9.6 parallel safe
|
|---|
| 3807 | CREATE AGGREGATE ST_MemUnion(geometry) (
|
|---|
| 3808 | sfunc = ST_Union,
|
|---|
| 3809 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3810 | combinefunc = ST_Union,
|
|---|
| 3811 | parallel = safe,
|
|---|
| 3812 | #endif
|
|---|
| 3813 | stype = geometry
|
|---|
| 3814 | );
|
|---|
| 3815 |
|
|---|
| 3816 |
|
|---|
| 3817 | -- Availability: 1.4.0
|
|---|
| 3818 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3819 | CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry)
|
|---|
| 3820 | RETURNS internal
|
|---|
| 3821 | AS 'MODULE_PATHNAME'
|
|---|
| 3822 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3823 |
|
|---|
| 3824 | -- Availability: 2.2
|
|---|
| 3825 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3826 | CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry, float8)
|
|---|
| 3827 | RETURNS internal
|
|---|
| 3828 | AS 'MODULE_PATHNAME'
|
|---|
| 3829 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3830 |
|
|---|
| 3831 | -- Availability: 2.3
|
|---|
| 3832 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3833 | CREATE OR REPLACE FUNCTION pgis_geometry_accum_transfn(internal, geometry, float8, int)
|
|---|
| 3834 | RETURNS internal
|
|---|
| 3835 | AS 'MODULE_PATHNAME'
|
|---|
| 3836 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3837 |
|
|---|
| 3838 | -- Availability: 1.4.0
|
|---|
| 3839 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3840 | CREATE OR REPLACE FUNCTION pgis_geometry_union_finalfn(internal)
|
|---|
| 3841 | RETURNS geometry
|
|---|
| 3842 | AS 'MODULE_PATHNAME'
|
|---|
| 3843 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3844 |
|
|---|
| 3845 | -- Availability: 1.4.0
|
|---|
| 3846 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3847 | CREATE OR REPLACE FUNCTION pgis_geometry_collect_finalfn(internal)
|
|---|
| 3848 | RETURNS geometry
|
|---|
| 3849 | AS 'MODULE_PATHNAME'
|
|---|
| 3850 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3851 |
|
|---|
| 3852 | -- Availability: 1.4.0
|
|---|
| 3853 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3854 | CREATE OR REPLACE FUNCTION pgis_geometry_polygonize_finalfn(internal)
|
|---|
| 3855 | RETURNS geometry
|
|---|
| 3856 | AS 'MODULE_PATHNAME'
|
|---|
| 3857 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3858 |
|
|---|
| 3859 | -- Availability: 2.2
|
|---|
| 3860 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3861 | CREATE OR REPLACE FUNCTION pgis_geometry_clusterintersecting_finalfn(internal)
|
|---|
| 3862 | RETURNS geometry[]
|
|---|
| 3863 | AS 'MODULE_PATHNAME'
|
|---|
| 3864 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3865 |
|
|---|
| 3866 | -- Availability: 2.2
|
|---|
| 3867 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3868 | CREATE OR REPLACE FUNCTION pgis_geometry_clusterwithin_finalfn(internal)
|
|---|
| 3869 | RETURNS geometry[]
|
|---|
| 3870 | AS 'MODULE_PATHNAME'
|
|---|
| 3871 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3872 |
|
|---|
| 3873 | -- Availability: 1.4.0
|
|---|
| 3874 | -- Changed: 2.5.0 use 'internal' transfer type
|
|---|
| 3875 | CREATE OR REPLACE FUNCTION pgis_geometry_makeline_finalfn(internal)
|
|---|
| 3876 | RETURNS geometry
|
|---|
| 3877 | AS 'MODULE_PATHNAME'
|
|---|
| 3878 | LANGUAGE 'c' _PARALLEL;
|
|---|
| 3879 |
|
|---|
| 3880 | -- Availability: 1.4.0
|
|---|
| 3881 | CREATE OR REPLACE FUNCTION ST_Union (geometry[])
|
|---|
| 3882 | RETURNS geometry
|
|---|
| 3883 | AS 'MODULE_PATHNAME','pgis_union_geometry_array'
|
|---|
| 3884 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 3885 |
|
|---|
| 3886 | -- Availability: 1.2.2
|
|---|
| 3887 | -- Changed but upgrader helper no touch: 2.4.0 marked parallel safe
|
|---|
| 3888 | -- we don't want to force drop of this agg since its often used in views
|
|---|
| 3889 | -- parallel handling dealt with in postgis_after_upgrade.sql
|
|---|
| 3890 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3891 | CREATE AGGREGATE ST_Union (geometry) (
|
|---|
| 3892 | sfunc = pgis_geometry_accum_transfn,
|
|---|
| 3893 | stype = internal,
|
|---|
| 3894 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3895 | parallel = safe,
|
|---|
| 3896 | #endif
|
|---|
| 3897 | finalfunc = pgis_geometry_union_finalfn
|
|---|
| 3898 | );
|
|---|
| 3899 |
|
|---|
| 3900 | -- Availability: 1.2.2
|
|---|
| 3901 | -- Changed: 2.4.0: marked parallel safe
|
|---|
| 3902 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3903 | CREATE AGGREGATE ST_Collect (geometry) (
|
|---|
| 3904 | SFUNC = pgis_geometry_accum_transfn,
|
|---|
| 3905 | STYPE = internal,
|
|---|
| 3906 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3907 | parallel = safe,
|
|---|
| 3908 | #endif
|
|---|
| 3909 | FINALFUNC = pgis_geometry_collect_finalfn
|
|---|
| 3910 | );
|
|---|
| 3911 |
|
|---|
| 3912 | -- Availability: 2.2
|
|---|
| 3913 | -- Changed: 2.4.0: marked parallel safe
|
|---|
| 3914 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3915 | CREATE AGGREGATE ST_ClusterIntersecting (geometry) (
|
|---|
| 3916 | SFUNC = pgis_geometry_accum_transfn,
|
|---|
| 3917 | STYPE = internal,
|
|---|
| 3918 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3919 | parallel = safe,
|
|---|
| 3920 | #endif
|
|---|
| 3921 | FINALFUNC = pgis_geometry_clusterintersecting_finalfn
|
|---|
| 3922 | );
|
|---|
| 3923 |
|
|---|
| 3924 | -- Availability: 2.2
|
|---|
| 3925 | -- Changed: 2.4.0 marked parallel safe
|
|---|
| 3926 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3927 | CREATE AGGREGATE ST_ClusterWithin (geometry, float8) (
|
|---|
| 3928 | SFUNC = pgis_geometry_accum_transfn,
|
|---|
| 3929 | STYPE = internal,
|
|---|
| 3930 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3931 | parallel = safe,
|
|---|
| 3932 | #endif
|
|---|
| 3933 | FINALFUNC = pgis_geometry_clusterwithin_finalfn
|
|---|
| 3934 | );
|
|---|
| 3935 |
|
|---|
| 3936 | -- Availability: 1.2.2
|
|---|
| 3937 | -- Changed: 2.4.0 marked parallel safe
|
|---|
| 3938 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3939 | CREATE AGGREGATE ST_Polygonize (geometry) (
|
|---|
| 3940 | SFUNC = pgis_geometry_accum_transfn,
|
|---|
| 3941 | STYPE = internal,
|
|---|
| 3942 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3943 | parallel = safe,
|
|---|
| 3944 | #endif
|
|---|
| 3945 | FINALFUNC = pgis_geometry_polygonize_finalfn
|
|---|
| 3946 | );
|
|---|
| 3947 |
|
|---|
| 3948 | -- Availability: 1.2.2
|
|---|
| 3949 | -- Changed: 2.4.0 marked parallel safe
|
|---|
| 3950 | -- Changed: 2.5.0 use 'internal' stype
|
|---|
| 3951 | CREATE AGGREGATE ST_MakeLine (geometry) (
|
|---|
| 3952 | SFUNC = pgis_geometry_accum_transfn,
|
|---|
| 3953 | STYPE = internal,
|
|---|
| 3954 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 3955 | parallel = safe,
|
|---|
| 3956 | #endif
|
|---|
| 3957 | FINALFUNC = pgis_geometry_makeline_finalfn
|
|---|
| 3958 | );
|
|---|
| 3959 |
|
|---|
| 3960 | --------------------------------------------------------------------------------
|
|---|
| 3961 |
|
|---|
| 3962 | -- Availability: 2.3.0
|
|---|
| 3963 | CREATE OR REPLACE FUNCTION ST_ClusterKMeans(geom geometry, k integer)
|
|---|
| 3964 | RETURNS integer
|
|---|
| 3965 | AS 'MODULE_PATHNAME', 'ST_ClusterKMeans'
|
|---|
| 3966 | LANGUAGE 'c' VOLATILE STRICT WINDOW
|
|---|
| 3967 | _COST_HIGH;
|
|---|
| 3968 |
|
|---|
| 3969 | -- Availability: 1.2.2
|
|---|
| 3970 | CREATE OR REPLACE FUNCTION ST_Relate(geom1 geometry, geom2 geometry)
|
|---|
| 3971 | RETURNS text
|
|---|
| 3972 | AS 'MODULE_PATHNAME','relate_full'
|
|---|
| 3973 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3974 | _COST_HIGH;
|
|---|
| 3975 |
|
|---|
| 3976 | -- Availability: 2.0.0
|
|---|
| 3977 | CREATE OR REPLACE FUNCTION ST_Relate(geom1 geometry, geom2 geometry, int4)
|
|---|
| 3978 | RETURNS text
|
|---|
| 3979 | AS 'MODULE_PATHNAME','relate_full'
|
|---|
| 3980 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3981 | _COST_HIGH;
|
|---|
| 3982 |
|
|---|
| 3983 | -- PostGIS equivalent function: relate(geom1 geometry, geom2 geometry,text)
|
|---|
| 3984 | CREATE OR REPLACE FUNCTION ST_Relate(geom1 geometry, geom2 geometry,text)
|
|---|
| 3985 | RETURNS boolean
|
|---|
| 3986 | AS 'MODULE_PATHNAME','relate_pattern'
|
|---|
| 3987 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3988 | _COST_HIGH;
|
|---|
| 3989 |
|
|---|
| 3990 | -- PostGIS equivalent function: disjoint(geom1 geometry, geom2 geometry)
|
|---|
| 3991 | CREATE OR REPLACE FUNCTION ST_Disjoint(geom1 geometry, geom2 geometry)
|
|---|
| 3992 | RETURNS boolean
|
|---|
| 3993 | AS 'MODULE_PATHNAME','disjoint'
|
|---|
| 3994 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 3995 | _COST_HIGH;
|
|---|
| 3996 |
|
|---|
| 3997 | -----------------------------------------------------------------------------
|
|---|
| 3998 | -- Non-indexed functions (see above for public indexed variants)
|
|---|
| 3999 |
|
|---|
| 4000 | -- Availability: 1.4.0
|
|---|
| 4001 | CREATE OR REPLACE FUNCTION _ST_LineCrossingDirection(line1 geometry, line2 geometry)
|
|---|
| 4002 | RETURNS integer
|
|---|
| 4003 | AS 'MODULE_PATHNAME', 'ST_LineCrossingDirection'
|
|---|
| 4004 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4005 | _COST_HIGH;
|
|---|
| 4006 |
|
|---|
| 4007 | -- Availability: 1.3.4
|
|---|
| 4008 | CREATE OR REPLACE FUNCTION _ST_DWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4009 | RETURNS boolean
|
|---|
| 4010 | AS 'MODULE_PATHNAME', 'LWGEOM_dwithin'
|
|---|
| 4011 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4012 | _COST_HIGH;
|
|---|
| 4013 |
|
|---|
| 4014 | -- Availability: 1.2.2
|
|---|
| 4015 | CREATE OR REPLACE FUNCTION _ST_Touches(geom1 geometry, geom2 geometry)
|
|---|
| 4016 | RETURNS boolean
|
|---|
| 4017 | AS 'MODULE_PATHNAME','touches'
|
|---|
| 4018 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4019 | _COST_HIGH;
|
|---|
| 4020 |
|
|---|
| 4021 | -- Availability: 1.2.2
|
|---|
| 4022 | CREATE OR REPLACE FUNCTION _ST_Intersects(geom1 geometry, geom2 geometry)
|
|---|
| 4023 | RETURNS boolean
|
|---|
| 4024 | AS 'MODULE_PATHNAME','ST_Intersects'
|
|---|
| 4025 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4026 | _COST_HIGH;
|
|---|
| 4027 |
|
|---|
| 4028 | -- Availability: 1.2.2
|
|---|
| 4029 | CREATE OR REPLACE FUNCTION _ST_Crosses(geom1 geometry, geom2 geometry)
|
|---|
| 4030 | RETURNS boolean
|
|---|
| 4031 | AS 'MODULE_PATHNAME','crosses'
|
|---|
| 4032 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4033 | _COST_HIGH;
|
|---|
| 4034 |
|
|---|
| 4035 | -- Availability: 1.2.2
|
|---|
| 4036 | CREATE OR REPLACE FUNCTION _ST_Contains(geom1 geometry, geom2 geometry)
|
|---|
| 4037 | RETURNS boolean
|
|---|
| 4038 | AS 'MODULE_PATHNAME','contains'
|
|---|
| 4039 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4040 | _COST_HIGH;
|
|---|
| 4041 |
|
|---|
| 4042 | -- Availability: 1.4.0
|
|---|
| 4043 | CREATE OR REPLACE FUNCTION _ST_ContainsProperly(geom1 geometry, geom2 geometry)
|
|---|
| 4044 | RETURNS boolean
|
|---|
| 4045 | AS 'MODULE_PATHNAME','containsproperly'
|
|---|
| 4046 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4047 | _COST_HIGH;
|
|---|
| 4048 |
|
|---|
| 4049 | -- Availability: 1.2.2
|
|---|
| 4050 | CREATE OR REPLACE FUNCTION _ST_Covers(geom1 geometry, geom2 geometry)
|
|---|
| 4051 | RETURNS boolean
|
|---|
| 4052 | AS 'MODULE_PATHNAME', 'covers'
|
|---|
| 4053 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4054 | _COST_HIGH;
|
|---|
| 4055 |
|
|---|
| 4056 | -- Availability: 1.2.2
|
|---|
| 4057 | CREATE OR REPLACE FUNCTION _ST_CoveredBy(geom1 geometry, geom2 geometry)
|
|---|
| 4058 | RETURNS boolean
|
|---|
| 4059 | AS 'MODULE_PATHNAME', 'coveredby'
|
|---|
| 4060 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4061 | _COST_HIGH;
|
|---|
| 4062 |
|
|---|
| 4063 | -- Availability: 1.2.2
|
|---|
| 4064 | CREATE OR REPLACE FUNCTION _ST_Within(geom1 geometry, geom2 geometry)
|
|---|
| 4065 | RETURNS boolean
|
|---|
| 4066 | AS 'SELECT @extschema@._ST_Contains($2,$1)'
|
|---|
| 4067 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4068 |
|
|---|
| 4069 | -- Availability: 1.2.2
|
|---|
| 4070 | CREATE OR REPLACE FUNCTION _ST_Overlaps(geom1 geometry, geom2 geometry)
|
|---|
| 4071 | RETURNS boolean
|
|---|
| 4072 | AS 'MODULE_PATHNAME','overlaps'
|
|---|
| 4073 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4074 | _COST_HIGH;
|
|---|
| 4075 |
|
|---|
| 4076 | CREATE OR REPLACE FUNCTION _ST_DFullyWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4077 | RETURNS boolean
|
|---|
| 4078 | AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin'
|
|---|
| 4079 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4080 | _COST_HIGH;
|
|---|
| 4081 |
|
|---|
| 4082 | CREATE OR REPLACE FUNCTION _ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4083 | RETURNS boolean
|
|---|
| 4084 | AS 'MODULE_PATHNAME', 'LWGEOM_dwithin3d'
|
|---|
| 4085 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4086 | _COST_HIGH;
|
|---|
| 4087 |
|
|---|
| 4088 | CREATE OR REPLACE FUNCTION _ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4089 | RETURNS boolean
|
|---|
| 4090 | AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin3d'
|
|---|
| 4091 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4092 | _COST_HIGH;
|
|---|
| 4093 |
|
|---|
| 4094 | CREATE OR REPLACE FUNCTION _ST_3DIntersects(geom1 geometry, geom2 geometry)
|
|---|
| 4095 | RETURNS boolean
|
|---|
| 4096 | AS 'MODULE_PATHNAME', 'ST_3DIntersects'
|
|---|
| 4097 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4098 | _COST_HIGH;
|
|---|
| 4099 |
|
|---|
| 4100 | CREATE OR REPLACE FUNCTION _ST_OrderingEquals(geom1 geometry, geom2 geometry)
|
|---|
| 4101 | RETURNS boolean
|
|---|
| 4102 | AS 'MODULE_PATHNAME', 'LWGEOM_same'
|
|---|
| 4103 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4104 | _COST_HIGH;
|
|---|
| 4105 |
|
|---|
| 4106 | CREATE OR REPLACE FUNCTION _ST_Equals(geom1 geometry, geom2 geometry)
|
|---|
| 4107 | RETURNS boolean
|
|---|
| 4108 | AS 'MODULE_PATHNAME','ST_Equals'
|
|---|
| 4109 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4110 | _COST_HIGH;
|
|---|
| 4111 |
|
|---|
| 4112 | -----------------------------------------------------------------------------
|
|---|
| 4113 |
|
|---|
| 4114 | #if POSTGIS_PGSQL_VERSION >= 120
|
|---|
| 4115 |
|
|---|
| 4116 | -----------------------------------------------------------------------------
|
|---|
| 4117 | -- Planner Support Functions
|
|---|
| 4118 | -----------------------------------------------------------------------------
|
|---|
| 4119 | -- Availability 3.0.0
|
|---|
| 4120 | CREATE OR REPLACE FUNCTION postgis_index_supportfn (internal)
|
|---|
| 4121 | RETURNS internal
|
|---|
| 4122 | AS 'MODULE_PATHNAME', 'postgis_index_supportfn'
|
|---|
| 4123 | LANGUAGE 'c';
|
|---|
| 4124 |
|
|---|
| 4125 | -----------------------------------------------------------------------------
|
|---|
| 4126 |
|
|---|
| 4127 | -- Availability: 1.4.0
|
|---|
| 4128 | CREATE OR REPLACE FUNCTION ST_LineCrossingDirection(geom1 geometry, geom2 geometry)
|
|---|
| 4129 | RETURNS integer
|
|---|
| 4130 | AS 'MODULE_PATHNAME', 'ST_LineCrossingDirection'
|
|---|
| 4131 | SUPPORT postgis_index_supportfn
|
|---|
| 4132 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4133 | _COST_HIGH;
|
|---|
| 4134 |
|
|---|
| 4135 | -- Availability: 1.3.4
|
|---|
| 4136 | CREATE OR REPLACE FUNCTION ST_DWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4137 | RETURNS boolean
|
|---|
| 4138 | AS 'MODULE_PATHNAME', 'LWGEOM_dwithin'
|
|---|
| 4139 | SUPPORT postgis_index_supportfn
|
|---|
| 4140 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4141 | _COST_HIGH;
|
|---|
| 4142 |
|
|---|
| 4143 | -- Availability: 1.2.2
|
|---|
| 4144 | CREATE OR REPLACE FUNCTION ST_Touches(geom1 geometry, geom2 geometry)
|
|---|
| 4145 | RETURNS boolean
|
|---|
| 4146 | AS 'MODULE_PATHNAME','touches'
|
|---|
| 4147 | SUPPORT postgis_index_supportfn
|
|---|
| 4148 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4149 | _COST_HIGH;
|
|---|
| 4150 |
|
|---|
| 4151 | -- Availability: 1.2.2
|
|---|
| 4152 | CREATE OR REPLACE FUNCTION ST_Intersects(geom1 geometry, geom2 geometry)
|
|---|
| 4153 | RETURNS boolean
|
|---|
| 4154 | AS 'MODULE_PATHNAME','ST_Intersects'
|
|---|
| 4155 | SUPPORT postgis_index_supportfn
|
|---|
| 4156 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4157 | _COST_HIGH;
|
|---|
| 4158 |
|
|---|
| 4159 | -- Availability: 1.2.2
|
|---|
| 4160 | CREATE OR REPLACE FUNCTION ST_Crosses(geom1 geometry, geom2 geometry)
|
|---|
| 4161 | RETURNS boolean
|
|---|
| 4162 | AS 'MODULE_PATHNAME','crosses'
|
|---|
| 4163 | SUPPORT postgis_index_supportfn
|
|---|
| 4164 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4165 | _COST_HIGH;
|
|---|
| 4166 |
|
|---|
| 4167 | -- Availability: 1.2.2
|
|---|
| 4168 | CREATE OR REPLACE FUNCTION ST_Contains(geom1 geometry, geom2 geometry)
|
|---|
| 4169 | RETURNS boolean
|
|---|
| 4170 | AS 'MODULE_PATHNAME','contains'
|
|---|
| 4171 | SUPPORT postgis_index_supportfn
|
|---|
| 4172 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4173 | _COST_HIGH;
|
|---|
| 4174 |
|
|---|
| 4175 | -- Availability: 1.4.0
|
|---|
| 4176 | CREATE OR REPLACE FUNCTION ST_ContainsProperly(geom1 geometry, geom2 geometry)
|
|---|
| 4177 | RETURNS boolean
|
|---|
| 4178 | AS 'MODULE_PATHNAME','containsproperly'
|
|---|
| 4179 | SUPPORT postgis_index_supportfn
|
|---|
| 4180 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4181 | _COST_HIGH;
|
|---|
| 4182 |
|
|---|
| 4183 | -- Availability: 1.2.2
|
|---|
| 4184 | CREATE OR REPLACE FUNCTION ST_Within(geom1 geometry, geom2 geometry)
|
|---|
| 4185 | RETURNS boolean
|
|---|
| 4186 | AS 'MODULE_PATHNAME','within'
|
|---|
| 4187 | SUPPORT postgis_index_supportfn
|
|---|
| 4188 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4189 | _COST_HIGH;
|
|---|
| 4190 |
|
|---|
| 4191 | -- Availability: 1.2.2
|
|---|
| 4192 | CREATE OR REPLACE FUNCTION ST_Covers(geom1 geometry, geom2 geometry)
|
|---|
| 4193 | RETURNS boolean
|
|---|
| 4194 | AS 'MODULE_PATHNAME', 'covers'
|
|---|
| 4195 | SUPPORT postgis_index_supportfn
|
|---|
| 4196 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4197 | _COST_HIGH;
|
|---|
| 4198 |
|
|---|
| 4199 | -- Availability: 1.2.2
|
|---|
| 4200 | CREATE OR REPLACE FUNCTION ST_CoveredBy(geom1 geometry, geom2 geometry)
|
|---|
| 4201 | RETURNS boolean
|
|---|
| 4202 | AS 'MODULE_PATHNAME', 'coveredby'
|
|---|
| 4203 | SUPPORT postgis_index_supportfn
|
|---|
| 4204 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4205 | _COST_HIGH;
|
|---|
| 4206 |
|
|---|
| 4207 | -- Availability: 1.2.2
|
|---|
| 4208 | CREATE OR REPLACE FUNCTION ST_Overlaps(geom1 geometry, geom2 geometry)
|
|---|
| 4209 | RETURNS boolean
|
|---|
| 4210 | AS 'MODULE_PATHNAME','overlaps'
|
|---|
| 4211 | SUPPORT postgis_index_supportfn
|
|---|
| 4212 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4213 | _COST_HIGH;
|
|---|
| 4214 |
|
|---|
| 4215 | CREATE OR REPLACE FUNCTION ST_DFullyWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4216 | RETURNS boolean
|
|---|
| 4217 | AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin'
|
|---|
| 4218 | SUPPORT postgis_index_supportfn
|
|---|
| 4219 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4220 | _COST_HIGH;
|
|---|
| 4221 |
|
|---|
| 4222 | CREATE OR REPLACE FUNCTION ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4223 | RETURNS boolean
|
|---|
| 4224 | AS 'MODULE_PATHNAME', 'LWGEOM_dwithin3d'
|
|---|
| 4225 | SUPPORT postgis_index_supportfn
|
|---|
| 4226 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4227 | _COST_HIGH;
|
|---|
| 4228 |
|
|---|
| 4229 | CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4230 | RETURNS boolean
|
|---|
| 4231 | AS 'MODULE_PATHNAME', 'LWGEOM_dfullywithin3d'
|
|---|
| 4232 | SUPPORT postgis_index_supportfn
|
|---|
| 4233 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4234 | _COST_HIGH;
|
|---|
| 4235 |
|
|---|
| 4236 | CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry)
|
|---|
| 4237 | RETURNS boolean
|
|---|
| 4238 | AS 'MODULE_PATHNAME', 'ST_3DIntersects'
|
|---|
| 4239 | SUPPORT postgis_index_supportfn
|
|---|
| 4240 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4241 | _COST_HIGH;
|
|---|
| 4242 |
|
|---|
| 4243 | CREATE OR REPLACE FUNCTION ST_OrderingEquals(geom1 geometry, geom2 geometry)
|
|---|
| 4244 | RETURNS boolean
|
|---|
| 4245 | AS 'MODULE_PATHNAME', 'LWGEOM_same'
|
|---|
| 4246 | SUPPORT postgis_index_supportfn
|
|---|
| 4247 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4248 | _COST_HIGH;
|
|---|
| 4249 |
|
|---|
| 4250 | CREATE OR REPLACE FUNCTION ST_Equals(geom1 geometry, geom2 geometry)
|
|---|
| 4251 | RETURNS boolean
|
|---|
| 4252 | AS 'MODULE_PATHNAME','ST_Equals'
|
|---|
| 4253 | SUPPORT postgis_index_supportfn
|
|---|
| 4254 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4255 | _COST_HIGH;
|
|---|
| 4256 |
|
|---|
| 4257 | #else
|
|---|
| 4258 |
|
|---|
| 4259 | -- Availability: 1.4.0
|
|---|
| 4260 | CREATE OR REPLACE FUNCTION ST_LineCrossingDirection(line1 geometry, line2 geometry)
|
|---|
| 4261 | RETURNS integer AS
|
|---|
| 4262 | $$ SELECT CASE WHEN NOT $1 OPERATOR(@extschema@.&&) $2 THEN 0 ELSE @extschema@._ST_LineCrossingDirection($1,$2) END $$
|
|---|
| 4263 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4264 |
|
|---|
| 4265 | -- Availability: 1.2.2
|
|---|
| 4266 | CREATE OR REPLACE FUNCTION ST_DWithin(geom1 geometry, geom2 geometry, float8)
|
|---|
| 4267 | RETURNS boolean
|
|---|
| 4268 | AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_DWithin($1, $2, $3)'
|
|---|
| 4269 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4270 |
|
|---|
| 4271 | -- Availability: 1.2.2
|
|---|
| 4272 | CREATE OR REPLACE FUNCTION ST_Touches(geom1 geometry, geom2 geometry)
|
|---|
| 4273 | RETURNS boolean
|
|---|
| 4274 | AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Touches($1,$2)'
|
|---|
| 4275 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4276 |
|
|---|
| 4277 | -- Availability: 1.2.2
|
|---|
| 4278 | CREATE OR REPLACE FUNCTION ST_Intersects(geom1 geometry, geom2 geometry)
|
|---|
| 4279 | RETURNS boolean
|
|---|
| 4280 | AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Intersects($1,$2)'
|
|---|
| 4281 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4282 |
|
|---|
| 4283 | -- Availability: 1.2.2
|
|---|
| 4284 | CREATE OR REPLACE FUNCTION ST_Crosses(geom1 geometry, geom2 geometry)
|
|---|
| 4285 | RETURNS boolean
|
|---|
| 4286 | AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Crosses($1,$2)'
|
|---|
| 4287 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4288 |
|
|---|
| 4289 | -- Availability: 1.2.2
|
|---|
| 4290 | CREATE OR REPLACE FUNCTION ST_Contains(geom1 geometry, geom2 geometry)
|
|---|
| 4291 | RETURNS boolean
|
|---|
| 4292 | AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_Contains($1,$2)'
|
|---|
| 4293 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4294 |
|
|---|
| 4295 | -- Availability: 1.2.2
|
|---|
| 4296 | CREATE OR REPLACE FUNCTION ST_CoveredBy(geom1 geometry, geom2 geometry)
|
|---|
| 4297 | RETURNS boolean
|
|---|
| 4298 | AS 'SELECT $1 OPERATOR(@extschema@.@) $2 AND @extschema@._ST_CoveredBy($1,$2)'
|
|---|
| 4299 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4300 |
|
|---|
| 4301 | -- Availability: 1.2.2
|
|---|
| 4302 | CREATE OR REPLACE FUNCTION ST_Covers(geom1 geometry, geom2 geometry)
|
|---|
| 4303 | RETURNS boolean
|
|---|
| 4304 | AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_Covers($1,$2)'
|
|---|
| 4305 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4306 |
|
|---|
| 4307 | -- Availability: 1.4.0
|
|---|
| 4308 | CREATE OR REPLACE FUNCTION ST_ContainsProperly(geom1 geometry, geom2 geometry)
|
|---|
| 4309 | RETURNS boolean
|
|---|
| 4310 | AS 'SELECT $1 OPERATOR(@extschema@.~) $2 AND @extschema@._ST_ContainsProperly($1,$2)'
|
|---|
| 4311 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4312 |
|
|---|
| 4313 | -- Availability: 1.2.2
|
|---|
| 4314 | CREATE OR REPLACE FUNCTION ST_Within(geom1 geometry, geom2 geometry)
|
|---|
| 4315 | RETURNS boolean
|
|---|
| 4316 | AS 'SELECT $2 OPERATOR(@extschema@.~) $1 AND @extschema@._ST_Contains($2,$1)'
|
|---|
| 4317 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4318 |
|
|---|
| 4319 | -- Availability: 1.2.2
|
|---|
| 4320 | CREATE OR REPLACE FUNCTION ST_Overlaps(geom1 geometry, geom2 geometry)
|
|---|
| 4321 | RETURNS boolean
|
|---|
| 4322 | AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_Overlaps($1,$2)'
|
|---|
| 4323 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4324 |
|
|---|
| 4325 | CREATE OR REPLACE FUNCTION ST_DFullyWithin(geom1 geometry, geom2 geometry, float8)
|
|---|
| 4326 | RETURNS boolean
|
|---|
| 4327 | AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_DFullyWithin(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2), $3)'
|
|---|
| 4328 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4329 |
|
|---|
| 4330 | CREATE OR REPLACE FUNCTION ST_3DDWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4331 | RETURNS boolean
|
|---|
| 4332 | AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_3DDWithin($1, $2, $3)'
|
|---|
| 4333 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4334 |
|
|---|
| 4335 | CREATE OR REPLACE FUNCTION ST_3DDFullyWithin(geom1 geometry, geom2 geometry,float8)
|
|---|
| 4336 | RETURNS boolean
|
|---|
| 4337 | AS 'SELECT $1 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @extschema@.ST_Expand($1,$3) AND @extschema@._ST_3DDFullyWithin($1, $2, $3)'
|
|---|
| 4338 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4339 |
|
|---|
| 4340 | CREATE OR REPLACE FUNCTION ST_3DIntersects(geom1 geometry, geom2 geometry)
|
|---|
| 4341 | RETURNS boolean
|
|---|
| 4342 | AS 'SELECT $1 OPERATOR(@extschema@.&&) $2 AND @extschema@._ST_3DIntersects($1, $2)'
|
|---|
| 4343 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4344 |
|
|---|
| 4345 | CREATE OR REPLACE FUNCTION ST_OrderingEquals(GeometryA geometry, GeometryB geometry)
|
|---|
| 4346 | RETURNS boolean
|
|---|
| 4347 | AS 'SELECT $1 OPERATOR(@extschema@.~=) $2 AND @extschema@._ST_OrderingEquals($1, $2)'
|
|---|
| 4348 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4349 |
|
|---|
| 4350 | -- Availability: 1.2.1
|
|---|
| 4351 | CREATE OR REPLACE FUNCTION ST_Equals(geom1 geometry, geom2 geometry)
|
|---|
| 4352 | RETURNS boolean
|
|---|
| 4353 | AS 'SELECT $1 OPERATOR(@extschema@.~=) $2 AND @extschema@._ST_Equals($1,$2)'
|
|---|
| 4354 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4355 |
|
|---|
| 4356 | #endif
|
|---|
| 4357 |
|
|---|
| 4358 | -----------------------------------------------------------------------------
|
|---|
| 4359 |
|
|---|
| 4360 | -- PostGIS equivalent function: IsValid(geometry)
|
|---|
| 4361 | -- TODO: change null returns to true
|
|---|
| 4362 | CREATE OR REPLACE FUNCTION ST_IsValid(geometry)
|
|---|
| 4363 | RETURNS boolean
|
|---|
| 4364 | AS 'MODULE_PATHNAME', 'isvalid'
|
|---|
| 4365 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4366 | _COST_HIGH;
|
|---|
| 4367 |
|
|---|
| 4368 | -- Availability: 2.3.0
|
|---|
| 4369 | CREATE OR REPLACE FUNCTION ST_MinimumClearance(geometry)
|
|---|
| 4370 | RETURNS float8
|
|---|
| 4371 | AS 'MODULE_PATHNAME', 'ST_MinimumClearance'
|
|---|
| 4372 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4373 | _COST_HIGH;
|
|---|
| 4374 |
|
|---|
| 4375 | -- Availability: 2.3.0
|
|---|
| 4376 | CREATE OR REPLACE FUNCTION ST_MinimumClearanceLine(geometry)
|
|---|
| 4377 | RETURNS geometry
|
|---|
| 4378 | AS 'MODULE_PATHNAME', 'ST_MinimumClearanceLine'
|
|---|
| 4379 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4380 | _COST_HIGH;
|
|---|
| 4381 |
|
|---|
| 4382 | -- PostGIS equivalent function: Centroid(geometry)
|
|---|
| 4383 | CREATE OR REPLACE FUNCTION ST_Centroid(geometry)
|
|---|
| 4384 | RETURNS geometry
|
|---|
| 4385 | AS 'MODULE_PATHNAME', 'centroid'
|
|---|
| 4386 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4387 | _COST_MEDIUM;
|
|---|
| 4388 |
|
|---|
| 4389 | -- Availability: 2.3.0
|
|---|
| 4390 | CREATE OR REPLACE FUNCTION ST_GeometricMedian(g geometry, tolerance float8 DEFAULT NULL, max_iter int DEFAULT 10000, fail_if_not_converged boolean DEFAULT false)
|
|---|
| 4391 | RETURNS geometry
|
|---|
| 4392 | AS 'MODULE_PATHNAME', 'ST_GeometricMedian'
|
|---|
| 4393 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4394 | _COST_HIGH;
|
|---|
| 4395 |
|
|---|
| 4396 | -- PostGIS equivalent function: IsRing(geometry)
|
|---|
| 4397 | CREATE OR REPLACE FUNCTION ST_IsRing(geometry)
|
|---|
| 4398 | RETURNS boolean
|
|---|
| 4399 | AS 'MODULE_PATHNAME', 'isring'
|
|---|
| 4400 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4401 | _COST_MEDIUM;
|
|---|
| 4402 |
|
|---|
| 4403 | -- PostGIS equivalent function: PointOnSurface(geometry)
|
|---|
| 4404 | CREATE OR REPLACE FUNCTION ST_PointOnSurface(geometry)
|
|---|
| 4405 | RETURNS geometry
|
|---|
| 4406 | AS 'MODULE_PATHNAME', 'pointonsurface'
|
|---|
| 4407 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4408 | _COST_MEDIUM;
|
|---|
| 4409 |
|
|---|
| 4410 | -- PostGIS equivalent function: IsSimple(geometry)
|
|---|
| 4411 | CREATE OR REPLACE FUNCTION ST_IsSimple(geometry)
|
|---|
| 4412 | RETURNS boolean
|
|---|
| 4413 | AS 'MODULE_PATHNAME', 'issimple'
|
|---|
| 4414 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4415 | _COST_MEDIUM;
|
|---|
| 4416 |
|
|---|
| 4417 | -- Availability: 2.0.0
|
|---|
| 4418 | CREATE OR REPLACE FUNCTION ST_IsCollection(geometry)
|
|---|
| 4419 | RETURNS boolean
|
|---|
| 4420 | AS 'MODULE_PATHNAME', 'ST_IsCollection'
|
|---|
| 4421 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4422 | _COST_MEDIUM;
|
|---|
| 4423 |
|
|---|
| 4424 | -- Deprecation in 1.2.3
|
|---|
| 4425 | -- TODO: drop in 2.0.0 !
|
|---|
| 4426 | CREATE OR REPLACE FUNCTION Equals(geom1 geometry, geom2 geometry)
|
|---|
| 4427 | RETURNS boolean
|
|---|
| 4428 | AS 'MODULE_PATHNAME','ST_Equals'
|
|---|
| 4429 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4430 | _COST_MEDIUM;
|
|---|
| 4431 |
|
|---|
| 4432 | -----------------------------------------------------------------------
|
|---|
| 4433 | -- GML & KML INPUT
|
|---|
| 4434 | -----------------------------------------------------------------------
|
|---|
| 4435 | CREATE OR REPLACE FUNCTION _ST_GeomFromGML(text, int4)
|
|---|
| 4436 | RETURNS geometry
|
|---|
| 4437 | AS 'MODULE_PATHNAME','geom_from_gml'
|
|---|
| 4438 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4439 | _COST_MEDIUM;
|
|---|
| 4440 |
|
|---|
| 4441 | -- Availability: 2.0.0
|
|---|
| 4442 | CREATE OR REPLACE FUNCTION ST_GeomFromGML(text, int4)
|
|---|
| 4443 | RETURNS geometry
|
|---|
| 4444 | AS 'MODULE_PATHNAME','geom_from_gml'
|
|---|
| 4445 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4446 | _COST_MEDIUM;
|
|---|
| 4447 |
|
|---|
| 4448 | -- Availability: 1.5.0
|
|---|
| 4449 | CREATE OR REPLACE FUNCTION ST_GeomFromGML(text)
|
|---|
| 4450 | RETURNS geometry
|
|---|
| 4451 | AS 'SELECT @extschema@._ST_GeomFromGML($1, 0)'
|
|---|
| 4452 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4453 |
|
|---|
| 4454 | -- Availability: 1.5.0
|
|---|
| 4455 | CREATE OR REPLACE FUNCTION ST_GMLToSQL(text)
|
|---|
| 4456 | RETURNS geometry
|
|---|
| 4457 | AS 'SELECT @extschema@._ST_GeomFromGML($1, 0)'
|
|---|
| 4458 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4459 |
|
|---|
| 4460 | -- Availability: 2.0.0
|
|---|
| 4461 | CREATE OR REPLACE FUNCTION ST_GMLToSQL(text, int4)
|
|---|
| 4462 | RETURNS geometry
|
|---|
| 4463 | AS 'MODULE_PATHNAME','geom_from_gml'
|
|---|
| 4464 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4465 | _COST_MEDIUM;
|
|---|
| 4466 |
|
|---|
| 4467 | -- Availability: 1.5.0
|
|---|
| 4468 | CREATE OR REPLACE FUNCTION ST_GeomFromKML(text)
|
|---|
| 4469 | RETURNS geometry
|
|---|
| 4470 | AS 'MODULE_PATHNAME','geom_from_kml'
|
|---|
| 4471 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4472 | _COST_MEDIUM;
|
|---|
| 4473 |
|
|---|
| 4474 | -----------------------------------------------------------------------
|
|---|
| 4475 | -- GEOJSON INPUT
|
|---|
| 4476 | -----------------------------------------------------------------------
|
|---|
| 4477 | -- Availability: 2.0.0
|
|---|
| 4478 | CREATE OR REPLACE FUNCTION ST_GeomFromGeoJson(text)
|
|---|
| 4479 | RETURNS geometry
|
|---|
| 4480 | AS 'MODULE_PATHNAME','geom_from_geojson'
|
|---|
| 4481 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4482 | _COST_MEDIUM;
|
|---|
| 4483 |
|
|---|
| 4484 | -- Availability: 2.5.0
|
|---|
| 4485 | CREATE OR REPLACE FUNCTION ST_GeomFromGeoJson(json)
|
|---|
| 4486 | RETURNS geometry
|
|---|
| 4487 | AS 'SELECT @extschema@.ST_GeomFromGeoJson($1::text)'
|
|---|
| 4488 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4489 | _COST_MEDIUM;
|
|---|
| 4490 |
|
|---|
| 4491 | #if POSTGIS_PGSQL_VERSION >= 94
|
|---|
| 4492 | -- Availability: 2.5.0
|
|---|
| 4493 | CREATE OR REPLACE FUNCTION ST_GeomFromGeoJson(jsonb)
|
|---|
| 4494 | RETURNS geometry
|
|---|
| 4495 | AS 'SELECT @extschema@.ST_GeomFromGeoJson($1::text)'
|
|---|
| 4496 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4497 | _COST_MEDIUM;
|
|---|
| 4498 | #endif
|
|---|
| 4499 |
|
|---|
| 4500 | -- Availability: 2.0.0
|
|---|
| 4501 | CREATE OR REPLACE FUNCTION postgis_libjson_version()
|
|---|
| 4502 | RETURNS text
|
|---|
| 4503 | AS 'MODULE_PATHNAME','postgis_libjson_version'
|
|---|
| 4504 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4505 |
|
|---|
| 4506 | ----------------------------------------------------------------------
|
|---|
| 4507 | -- ENCODED POLYLINE INPUT
|
|---|
| 4508 | -----------------------------------------------------------------------
|
|---|
| 4509 | -- Availability: 2.2.0
|
|---|
| 4510 | -- ST_LineFromEncodedPolyline(polyline text, precision int4)
|
|---|
| 4511 | CREATE OR REPLACE FUNCTION ST_LineFromEncodedPolyline(txtin text, nprecision int4 DEFAULT 5)
|
|---|
| 4512 | RETURNS geometry
|
|---|
| 4513 | AS 'MODULE_PATHNAME','line_from_encoded_polyline'
|
|---|
| 4514 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4515 | _COST_MEDIUM;
|
|---|
| 4516 |
|
|---|
| 4517 | ------------------------------------------------------------------------
|
|---|
| 4518 |
|
|---|
| 4519 | ----------------------------------------------------------------------
|
|---|
| 4520 | -- ENCODED POLYLINE OUTPUT
|
|---|
| 4521 | -----------------------------------------------------------------------
|
|---|
| 4522 | -- Availability: 2.2.0
|
|---|
| 4523 | -- ST_AsEncodedPolyline(geom geometry, precision int4)
|
|---|
| 4524 | CREATE OR REPLACE FUNCTION ST_AsEncodedPolyline(geom geometry, nprecision int4 DEFAULT 5)
|
|---|
| 4525 | RETURNS TEXT
|
|---|
| 4526 | AS 'MODULE_PATHNAME','LWGEOM_asEncodedPolyline'
|
|---|
| 4527 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4528 | _COST_LOW;
|
|---|
| 4529 |
|
|---|
| 4530 | ------------------------------------------------------------------------
|
|---|
| 4531 |
|
|---|
| 4532 | -----------------------------------------------------------------------
|
|---|
| 4533 | -- SVG OUTPUT
|
|---|
| 4534 | -----------------------------------------------------------------------
|
|---|
| 4535 | -- Availability: 1.2.2
|
|---|
| 4536 | -- Changed: 2.0.0 changed to use default args and allow calling by named args
|
|---|
| 4537 | CREATE OR REPLACE FUNCTION ST_AsSVG(geom geometry, rel int4 DEFAULT 0, maxdecimaldigits int4 DEFAULT 15)
|
|---|
| 4538 | RETURNS TEXT
|
|---|
| 4539 | AS 'MODULE_PATHNAME','LWGEOM_asSVG'
|
|---|
| 4540 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4541 | _COST_LOW;
|
|---|
| 4542 |
|
|---|
| 4543 | -----------------------------------------------------------------------
|
|---|
| 4544 | -- GML OUTPUT
|
|---|
| 4545 | -----------------------------------------------------------------------
|
|---|
| 4546 | -- _ST_AsGML(version, geom, precision, option, prefix, id)
|
|---|
| 4547 | CREATE OR REPLACE FUNCTION _ST_AsGML(int4, geometry, int4, int4, text, text)
|
|---|
| 4548 | RETURNS TEXT
|
|---|
| 4549 | AS 'MODULE_PATHNAME','LWGEOM_asGML'
|
|---|
| 4550 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4551 | _COST_MEDIUM;
|
|---|
| 4552 |
|
|---|
| 4553 | -- ST_AsGML(version, geom) / precision=15
|
|---|
| 4554 | -- Availability: 1.3.2
|
|---|
| 4555 | -- ST_AsGML(version, geom, precision)
|
|---|
| 4556 | -- Availability: 1.3.2
|
|---|
| 4557 |
|
|---|
| 4558 | -- ST_AsGML (geom, precision, option) / version=2
|
|---|
| 4559 | -- Availability: 1.4.0
|
|---|
| 4560 | -- Changed: 2.0.0 to have default args
|
|---|
| 4561 | CREATE OR REPLACE FUNCTION ST_AsGML(geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0)
|
|---|
| 4562 | RETURNS TEXT
|
|---|
| 4563 | AS $$ SELECT @extschema@._ST_AsGML(2, $1, $2, $3, null, null); $$
|
|---|
| 4564 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4565 |
|
|---|
| 4566 | -- ST_AsGML(version, geom, precision, option)
|
|---|
| 4567 | -- Availability: 1.4.0
|
|---|
| 4568 | -- ST_AsGML(version, geom, precision, option, prefix)
|
|---|
| 4569 | -- Availability: 2.0.0
|
|---|
| 4570 | -- Changed: 2.0.0 to use default and named args
|
|---|
| 4571 | -- ST_AsGML(version, geom, precision, option, prefix, id)
|
|---|
| 4572 | -- Availability: 2.1.0
|
|---|
| 4573 | CREATE OR REPLACE FUNCTION ST_AsGML(version int4, geom geometry, maxdecimaldigits int4 DEFAULT 15, options int4 DEFAULT 0, nprefix text DEFAULT null, id text DEFAULT null)
|
|---|
| 4574 | RETURNS TEXT
|
|---|
| 4575 | AS $$ SELECT @extschema@._ST_AsGML($1, $2, $3, $4, $5, $6); $$
|
|---|
| 4576 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 4577 |
|
|---|
| 4578 | -----------------------------------------------------------------------
|
|---|
| 4579 | -- KML OUTPUT
|
|---|
| 4580 | -----------------------------------------------------------------------
|
|---|
| 4581 |
|
|---|
| 4582 | -- Availability: 1.2.2
|
|---|
| 4583 | -- Changed: 2.0.0 to use default args and allow named args
|
|---|
| 4584 | CREATE OR REPLACE FUNCTION ST_AsKML(geom geometry, maxdecimaldigits int4 DEFAULT 15, nprefix TEXT default '')
|
|---|
| 4585 | RETURNS TEXT
|
|---|
| 4586 | AS 'MODULE_PATHNAME','LWGEOM_asKML'
|
|---|
| 4587 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4588 | _COST_LOW;
|
|---|
| 4589 |
|
|---|
| 4590 | -----------------------------------------------------------------------
|
|---|
| 4591 | -- GEOJSON OUTPUT
|
|---|
| 4592 | -- Availability: 1.3.4
|
|---|
| 4593 | -----------------------------------------------------------------------
|
|---|
| 4594 |
|
|---|
| 4595 | -- ST_AsGeoJson(geom, precision, options) / version=1
|
|---|
| 4596 | -- Changed: 2.0.0 to use default args and named args
|
|---|
| 4597 | -- Changed: 3.0.0 change default args mode
|
|---|
| 4598 | CREATE OR REPLACE FUNCTION ST_AsGeoJson(geom geometry, maxdecimaldigits int4 DEFAULT 9, options int4 DEFAULT 8)
|
|---|
| 4599 | RETURNS text
|
|---|
| 4600 | AS 'MODULE_PATHNAME','LWGEOM_asGeoJson'
|
|---|
| 4601 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4602 | _COST_LOW;
|
|---|
| 4603 |
|
|---|
| 4604 | -- Availability: 3.0.0
|
|---|
| 4605 | CREATE OR REPLACE FUNCTION ST_AsGeoJson(r record, geom_column text DEFAULT '', maxdecimaldigits int4 DEFAULT 9, pretty_bool bool DEFAULT false)
|
|---|
| 4606 | RETURNS text
|
|---|
| 4607 | AS 'MODULE_PATHNAME','ST_AsGeoJsonRow'
|
|---|
| 4608 | LANGUAGE 'c' STABLE STRICT _PARALLEL
|
|---|
| 4609 | _COST_LOW;
|
|---|
| 4610 |
|
|---|
| 4611 | -- Availability: 3.0.0
|
|---|
| 4612 | CREATE OR REPLACE FUNCTION json(geometry)
|
|---|
| 4613 | RETURNS json
|
|---|
| 4614 | AS 'MODULE_PATHNAME','geometry_to_json'
|
|---|
| 4615 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4616 |
|
|---|
| 4617 | -- Availability: 3.0.0
|
|---|
| 4618 | CREATE OR REPLACE FUNCTION jsonb(geometry)
|
|---|
| 4619 | RETURNS jsonb
|
|---|
| 4620 | AS 'MODULE_PATHNAME','geometry_to_jsonb'
|
|---|
| 4621 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4622 |
|
|---|
| 4623 | -- Availability: 3.0.0
|
|---|
| 4624 | CREATE CAST (geometry AS json) WITH FUNCTION json(geometry);
|
|---|
| 4625 | -- Availability: 3.0.0
|
|---|
| 4626 | CREATE CAST (geometry AS jsonb) WITH FUNCTION jsonb(geometry);
|
|---|
| 4627 |
|
|---|
| 4628 | -----------------------------------------------------------------------
|
|---|
| 4629 | -- Mapbox Vector Tile OUTPUT
|
|---|
| 4630 | -- Availability: 2.4.0
|
|---|
| 4631 | -----------------------------------------------------------------------
|
|---|
| 4632 |
|
|---|
| 4633 | -- Availability: 2.4.0
|
|---|
| 4634 | CREATE OR REPLACE FUNCTION pgis_asmvt_transfn(internal, anyelement)
|
|---|
| 4635 | RETURNS internal
|
|---|
| 4636 | AS 'MODULE_PATHNAME', 'pgis_asmvt_transfn'
|
|---|
| 4637 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4638 |
|
|---|
| 4639 | -- Availability: 2.4.0
|
|---|
| 4640 | CREATE OR REPLACE FUNCTION pgis_asmvt_transfn(internal, anyelement, text)
|
|---|
| 4641 | RETURNS internal
|
|---|
| 4642 | AS 'MODULE_PATHNAME', 'pgis_asmvt_transfn'
|
|---|
| 4643 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4644 |
|
|---|
| 4645 | -- Availability: 2.4.0
|
|---|
| 4646 | CREATE OR REPLACE FUNCTION pgis_asmvt_transfn(internal, anyelement, text, int4)
|
|---|
| 4647 | RETURNS internal
|
|---|
| 4648 | AS 'MODULE_PATHNAME', 'pgis_asmvt_transfn'
|
|---|
| 4649 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4650 |
|
|---|
| 4651 | -- Availability: 2.4.0
|
|---|
| 4652 | CREATE OR REPLACE FUNCTION pgis_asmvt_transfn(internal, anyelement, text, int4, text)
|
|---|
| 4653 | RETURNS internal
|
|---|
| 4654 | AS 'MODULE_PATHNAME', 'pgis_asmvt_transfn'
|
|---|
| 4655 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4656 |
|
|---|
| 4657 | -- Availability: 3.0.0
|
|---|
| 4658 | CREATE OR REPLACE FUNCTION pgis_asmvt_transfn(internal, anyelement, text, int4, text, text)
|
|---|
| 4659 | RETURNS internal
|
|---|
| 4660 | AS 'MODULE_PATHNAME', 'pgis_asmvt_transfn'
|
|---|
| 4661 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4662 |
|
|---|
| 4663 | -- Availability: 2.4.0
|
|---|
| 4664 | CREATE OR REPLACE FUNCTION pgis_asmvt_finalfn(internal)
|
|---|
| 4665 | RETURNS bytea
|
|---|
| 4666 | AS 'MODULE_PATHNAME', 'pgis_asmvt_finalfn'
|
|---|
| 4667 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4668 | _COST_MEDIUM;
|
|---|
| 4669 |
|
|---|
| 4670 | -- Availability: 2.5.0
|
|---|
| 4671 | CREATE OR REPLACE FUNCTION pgis_asmvt_combinefn(internal, internal)
|
|---|
| 4672 | RETURNS internal
|
|---|
| 4673 | AS 'MODULE_PATHNAME', 'pgis_asmvt_combinefn'
|
|---|
| 4674 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4675 | _COST_MEDIUM;
|
|---|
| 4676 |
|
|---|
| 4677 | -- Availability: 2.5.0
|
|---|
| 4678 | CREATE OR REPLACE FUNCTION pgis_asmvt_serialfn(internal)
|
|---|
| 4679 | RETURNS bytea
|
|---|
| 4680 | AS 'MODULE_PATHNAME', 'pgis_asmvt_serialfn'
|
|---|
| 4681 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4682 | _COST_MEDIUM;
|
|---|
| 4683 |
|
|---|
| 4684 | -- Availability: 2.5.0
|
|---|
| 4685 | CREATE OR REPLACE FUNCTION pgis_asmvt_deserialfn(bytea, internal)
|
|---|
| 4686 | RETURNS internal
|
|---|
| 4687 | AS 'MODULE_PATHNAME', 'pgis_asmvt_deserialfn'
|
|---|
| 4688 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4689 | _COST_MEDIUM;
|
|---|
| 4690 |
|
|---|
| 4691 | -- Availability: 2.4.0
|
|---|
| 4692 | -- Changed: 2.5.0
|
|---|
| 4693 | CREATE AGGREGATE ST_AsMVT(anyelement)
|
|---|
| 4694 | (
|
|---|
| 4695 | sfunc = pgis_asmvt_transfn,
|
|---|
| 4696 | stype = internal,
|
|---|
| 4697 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4698 | parallel = safe,
|
|---|
| 4699 | serialfunc = pgis_asmvt_serialfn,
|
|---|
| 4700 | deserialfunc = pgis_asmvt_deserialfn,
|
|---|
| 4701 | combinefunc = pgis_asmvt_combinefn,
|
|---|
| 4702 | #endif
|
|---|
| 4703 | finalfunc = pgis_asmvt_finalfn
|
|---|
| 4704 | );
|
|---|
| 4705 |
|
|---|
| 4706 | -- Availability: 2.4.0
|
|---|
| 4707 | -- Changed: 2.5.0
|
|---|
| 4708 | CREATE AGGREGATE ST_AsMVT(anyelement, text)
|
|---|
| 4709 | (
|
|---|
| 4710 | sfunc = pgis_asmvt_transfn,
|
|---|
| 4711 | stype = internal,
|
|---|
| 4712 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4713 | parallel = safe,
|
|---|
| 4714 | serialfunc = pgis_asmvt_serialfn,
|
|---|
| 4715 | deserialfunc = pgis_asmvt_deserialfn,
|
|---|
| 4716 | combinefunc = pgis_asmvt_combinefn,
|
|---|
| 4717 | #endif
|
|---|
| 4718 | finalfunc = pgis_asmvt_finalfn
|
|---|
| 4719 | );
|
|---|
| 4720 |
|
|---|
| 4721 | -- Availability: 2.4.0
|
|---|
| 4722 | -- Changed: 2.5.0
|
|---|
| 4723 | CREATE AGGREGATE ST_AsMVT(anyelement, text, int4)
|
|---|
| 4724 | (
|
|---|
| 4725 | sfunc = pgis_asmvt_transfn,
|
|---|
| 4726 | stype = internal,
|
|---|
| 4727 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4728 | parallel = safe,
|
|---|
| 4729 | serialfunc = pgis_asmvt_serialfn,
|
|---|
| 4730 | deserialfunc = pgis_asmvt_deserialfn,
|
|---|
| 4731 | combinefunc = pgis_asmvt_combinefn,
|
|---|
| 4732 | #endif
|
|---|
| 4733 | finalfunc = pgis_asmvt_finalfn
|
|---|
| 4734 | );
|
|---|
| 4735 |
|
|---|
| 4736 | -- Availability: 2.4.0
|
|---|
| 4737 | -- Changed: 2.5.0
|
|---|
| 4738 | CREATE AGGREGATE ST_AsMVT(anyelement, text, int4, text)
|
|---|
| 4739 | (
|
|---|
| 4740 | sfunc = pgis_asmvt_transfn,
|
|---|
| 4741 | stype = internal,
|
|---|
| 4742 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4743 | parallel = safe,
|
|---|
| 4744 | serialfunc = pgis_asmvt_serialfn,
|
|---|
| 4745 | deserialfunc = pgis_asmvt_deserialfn,
|
|---|
| 4746 | combinefunc = pgis_asmvt_combinefn,
|
|---|
| 4747 | #endif
|
|---|
| 4748 | finalfunc = pgis_asmvt_finalfn
|
|---|
| 4749 | );
|
|---|
| 4750 |
|
|---|
| 4751 | -- Availability: 3.0.0
|
|---|
| 4752 | -- Changed: 3.0.0
|
|---|
| 4753 | CREATE AGGREGATE ST_AsMVT(anyelement, text, int4, text, text)
|
|---|
| 4754 | (
|
|---|
| 4755 | sfunc = pgis_asmvt_transfn,
|
|---|
| 4756 | stype = internal,
|
|---|
| 4757 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4758 | parallel = safe,
|
|---|
| 4759 | serialfunc = pgis_asmvt_serialfn,
|
|---|
| 4760 | deserialfunc = pgis_asmvt_deserialfn,
|
|---|
| 4761 | combinefunc = pgis_asmvt_combinefn,
|
|---|
| 4762 | #endif
|
|---|
| 4763 | finalfunc = pgis_asmvt_finalfn
|
|---|
| 4764 | );
|
|---|
| 4765 |
|
|---|
| 4766 | -- Availability: 2.4.0
|
|---|
| 4767 | CREATE OR REPLACE FUNCTION ST_AsMVTGeom(geom geometry, bounds box2d, extent int4 default 4096, buffer int4 default 256, clip_geom bool default true)
|
|---|
| 4768 | RETURNS geometry
|
|---|
| 4769 | AS 'MODULE_PATHNAME','ST_AsMVTGeom'
|
|---|
| 4770 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4771 |
|
|---|
| 4772 | -- Availability: 2.4.0
|
|---|
| 4773 | CREATE OR REPLACE FUNCTION postgis_libprotobuf_version()
|
|---|
| 4774 | RETURNS text
|
|---|
| 4775 | AS 'MODULE_PATHNAME','postgis_libprotobuf_version'
|
|---|
| 4776 | LANGUAGE 'c' IMMUTABLE STRICT;
|
|---|
| 4777 |
|
|---|
| 4778 | -----------------------------------------------------------------------
|
|---|
| 4779 | -- GEOBUF OUTPUT
|
|---|
| 4780 | -- Availability: 2.4.0
|
|---|
| 4781 | -----------------------------------------------------------------------
|
|---|
| 4782 |
|
|---|
| 4783 | -- Availability: 2.4.0
|
|---|
| 4784 | CREATE OR REPLACE FUNCTION pgis_asgeobuf_transfn(internal, anyelement)
|
|---|
| 4785 | RETURNS internal
|
|---|
| 4786 | AS 'MODULE_PATHNAME', 'pgis_asgeobuf_transfn'
|
|---|
| 4787 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4788 |
|
|---|
| 4789 | -- Availability: 2.4.0
|
|---|
| 4790 | CREATE OR REPLACE FUNCTION pgis_asgeobuf_transfn(internal, anyelement, text)
|
|---|
| 4791 | RETURNS internal
|
|---|
| 4792 | AS 'MODULE_PATHNAME', 'pgis_asgeobuf_transfn'
|
|---|
| 4793 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 4794 |
|
|---|
| 4795 | -- Availability: 2.4.0
|
|---|
| 4796 | CREATE OR REPLACE FUNCTION pgis_asgeobuf_finalfn(internal)
|
|---|
| 4797 | RETURNS bytea
|
|---|
| 4798 | AS 'MODULE_PATHNAME', 'pgis_asgeobuf_finalfn'
|
|---|
| 4799 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4800 | _COST_MEDIUM;
|
|---|
| 4801 |
|
|---|
| 4802 | -- Availability: 2.4.0
|
|---|
| 4803 | CREATE AGGREGATE ST_AsGeobuf(anyelement)
|
|---|
| 4804 | (
|
|---|
| 4805 | sfunc = pgis_asgeobuf_transfn,
|
|---|
| 4806 | stype = internal,
|
|---|
| 4807 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4808 | parallel = safe,
|
|---|
| 4809 | #endif
|
|---|
| 4810 | finalfunc = pgis_asgeobuf_finalfn
|
|---|
| 4811 | );
|
|---|
| 4812 |
|
|---|
| 4813 | -- Availability: 2.4.0
|
|---|
| 4814 | CREATE AGGREGATE ST_AsGeobuf(anyelement, text)
|
|---|
| 4815 | (
|
|---|
| 4816 | sfunc = pgis_asgeobuf_transfn,
|
|---|
| 4817 | stype = internal,
|
|---|
| 4818 | #if POSTGIS_PGSQL_VERSION >= 96
|
|---|
| 4819 | parallel = safe,
|
|---|
| 4820 | #endif
|
|---|
| 4821 | finalfunc = pgis_asgeobuf_finalfn
|
|---|
| 4822 | );
|
|---|
| 4823 |
|
|---|
| 4824 | ------------------------------------------------------------------------
|
|---|
| 4825 | -- GeoHash (geohash.org)
|
|---|
| 4826 | ------------------------------------------------------------------------
|
|---|
| 4827 |
|
|---|
| 4828 | -- Availability 1.4.0
|
|---|
| 4829 | -- Changed 2.0.0 to use default args and named args
|
|---|
| 4830 | CREATE OR REPLACE FUNCTION ST_GeoHash(geom geometry, maxchars int4 DEFAULT 0)
|
|---|
| 4831 | RETURNS TEXT
|
|---|
| 4832 | AS 'MODULE_PATHNAME', 'ST_GeoHash'
|
|---|
| 4833 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4834 | _COST_MEDIUM;
|
|---|
| 4835 |
|
|---|
| 4836 | -----------------------------------------------------------------------
|
|---|
| 4837 | -- GeoHash input
|
|---|
| 4838 | -- Availability: 2.0.?
|
|---|
| 4839 | -----------------------------------------------------------------------
|
|---|
| 4840 | -- ST_Box2dFromGeoHash(geohash text, precision int4)
|
|---|
| 4841 | CREATE OR REPLACE FUNCTION ST_Box2dFromGeoHash(text, int4 DEFAULT NULL)
|
|---|
| 4842 | RETURNS box2d
|
|---|
| 4843 | AS 'MODULE_PATHNAME','box2d_from_geohash'
|
|---|
| 4844 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4845 | _COST_MEDIUM;
|
|---|
| 4846 |
|
|---|
| 4847 | -- ST_PointFromGeoHash(geohash text, precision int4)
|
|---|
| 4848 | CREATE OR REPLACE FUNCTION ST_PointFromGeoHash(text, int4 DEFAULT NULL)
|
|---|
| 4849 | RETURNS geometry
|
|---|
| 4850 | AS 'MODULE_PATHNAME','point_from_geohash'
|
|---|
| 4851 | LANGUAGE 'c' IMMUTABLE _PARALLEL
|
|---|
| 4852 | _COST_MEDIUM;
|
|---|
| 4853 |
|
|---|
| 4854 | -- ST_GeomFromGeoHash(geohash text, precision int4)
|
|---|
| 4855 | CREATE OR REPLACE FUNCTION ST_GeomFromGeoHash(text, int4 DEFAULT NULL)
|
|---|
| 4856 | RETURNS geometry
|
|---|
| 4857 | AS $$ SELECT CAST(@extschema@.ST_Box2dFromGeoHash($1, $2) AS geometry); $$
|
|---|
| 4858 | LANGUAGE 'sql' IMMUTABLE _PARALLEL
|
|---|
| 4859 | _COST_MEDIUM;
|
|---|
| 4860 |
|
|---|
| 4861 | ------------------------------------------------------------------------
|
|---|
| 4862 | -- OGC defined
|
|---|
| 4863 | ------------------------------------------------------------------------
|
|---|
| 4864 | -- PostGIS equivalent function: NumPoints(geometry)
|
|---|
| 4865 | CREATE OR REPLACE FUNCTION ST_NumPoints(geometry)
|
|---|
| 4866 | RETURNS int4
|
|---|
| 4867 | AS 'MODULE_PATHNAME', 'LWGEOM_numpoints_linestring'
|
|---|
| 4868 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4869 | _COST_LOW;
|
|---|
| 4870 |
|
|---|
| 4871 | -- PostGIS equivalent function: NumGeometries(geometry)
|
|---|
| 4872 | CREATE OR REPLACE FUNCTION ST_NumGeometries(geometry)
|
|---|
| 4873 | RETURNS int4
|
|---|
| 4874 | AS 'MODULE_PATHNAME', 'LWGEOM_numgeometries_collection'
|
|---|
| 4875 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4876 | _COST_LOW;
|
|---|
| 4877 |
|
|---|
| 4878 | -- PostGIS equivalent function: GeometryN(geometry)
|
|---|
| 4879 | CREATE OR REPLACE FUNCTION ST_GeometryN(geometry,integer)
|
|---|
| 4880 | RETURNS geometry
|
|---|
| 4881 | AS 'MODULE_PATHNAME', 'LWGEOM_geometryn_collection'
|
|---|
| 4882 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4883 | _COST_LOW;
|
|---|
| 4884 |
|
|---|
| 4885 | -- PostGIS equivalent function: Dimension(geometry)
|
|---|
| 4886 | CREATE OR REPLACE FUNCTION ST_Dimension(geometry)
|
|---|
| 4887 | RETURNS int4
|
|---|
| 4888 | AS 'MODULE_PATHNAME', 'LWGEOM_dimension'
|
|---|
| 4889 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4890 | _COST_LOW;
|
|---|
| 4891 |
|
|---|
| 4892 | -- PostGIS equivalent function: ExteriorRing(geometry)
|
|---|
| 4893 | CREATE OR REPLACE FUNCTION ST_ExteriorRing(geometry)
|
|---|
| 4894 | RETURNS geometry
|
|---|
| 4895 | AS 'MODULE_PATHNAME','LWGEOM_exteriorring_polygon'
|
|---|
| 4896 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4897 | _COST_LOW;
|
|---|
| 4898 |
|
|---|
| 4899 | -- PostGIS equivalent function: NumInteriorRings(geometry)
|
|---|
| 4900 | CREATE OR REPLACE FUNCTION ST_NumInteriorRings(geometry)
|
|---|
| 4901 | RETURNS integer
|
|---|
| 4902 | AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
|
|---|
| 4903 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4904 | _COST_LOW;
|
|---|
| 4905 |
|
|---|
| 4906 | -- Availability: 1.2.2
|
|---|
| 4907 | CREATE OR REPLACE FUNCTION ST_NumInteriorRing(geometry)
|
|---|
| 4908 | RETURNS integer
|
|---|
| 4909 | AS 'MODULE_PATHNAME','LWGEOM_numinteriorrings_polygon'
|
|---|
| 4910 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4911 | _COST_LOW;
|
|---|
| 4912 |
|
|---|
| 4913 | -- PostGIS equivalent function: InteriorRingN(geometry)
|
|---|
| 4914 | CREATE OR REPLACE FUNCTION ST_InteriorRingN(geometry,integer)
|
|---|
| 4915 | RETURNS geometry
|
|---|
| 4916 | AS 'MODULE_PATHNAME','LWGEOM_interiorringn_polygon'
|
|---|
| 4917 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4918 | _COST_LOW;
|
|---|
| 4919 |
|
|---|
| 4920 | -- Deprecation in 1.2.3 -- this should not be deprecated (2011-01-04 robe)
|
|---|
| 4921 | CREATE OR REPLACE FUNCTION GeometryType(geometry)
|
|---|
| 4922 | RETURNS text
|
|---|
| 4923 | AS 'MODULE_PATHNAME', 'LWGEOM_getTYPE'
|
|---|
| 4924 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4925 | _COST_LOW;
|
|---|
| 4926 |
|
|---|
| 4927 | -- Not quite equivalent to GeometryType
|
|---|
| 4928 | CREATE OR REPLACE FUNCTION ST_GeometryType(geometry)
|
|---|
| 4929 | RETURNS text
|
|---|
| 4930 | AS 'MODULE_PATHNAME', 'geometry_geometrytype'
|
|---|
| 4931 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4932 | _COST_LOW;
|
|---|
| 4933 |
|
|---|
| 4934 | -- PostGIS equivalent function: PointN(geometry,integer)
|
|---|
| 4935 | CREATE OR REPLACE FUNCTION ST_PointN(geometry,integer)
|
|---|
| 4936 | RETURNS geometry
|
|---|
| 4937 | AS 'MODULE_PATHNAME','LWGEOM_pointn_linestring'
|
|---|
| 4938 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4939 | _COST_LOW;
|
|---|
| 4940 |
|
|---|
| 4941 | -- Availability: 2.0.0
|
|---|
| 4942 | CREATE OR REPLACE FUNCTION ST_NumPatches(geometry)
|
|---|
| 4943 | RETURNS int4
|
|---|
| 4944 | AS '
|
|---|
| 4945 | SELECT CASE WHEN @extschema@.ST_GeometryType($1) = ''ST_PolyhedralSurface''
|
|---|
| 4946 | THEN @extschema@.ST_NumGeometries($1)
|
|---|
| 4947 | ELSE NULL END
|
|---|
| 4948 | '
|
|---|
| 4949 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4950 |
|
|---|
| 4951 | -- Availability: 2.0.0
|
|---|
| 4952 | CREATE OR REPLACE FUNCTION ST_PatchN(geometry, integer)
|
|---|
| 4953 | RETURNS geometry
|
|---|
| 4954 | AS '
|
|---|
| 4955 | SELECT CASE WHEN @extschema@.ST_GeometryType($1) = ''ST_PolyhedralSurface''
|
|---|
| 4956 | THEN @extschema@.ST_GeometryN($1, $2)
|
|---|
| 4957 | ELSE NULL END
|
|---|
| 4958 | '
|
|---|
| 4959 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 4960 |
|
|---|
| 4961 | -- PostGIS equivalent function of old StartPoint(geometry))
|
|---|
| 4962 | CREATE OR REPLACE FUNCTION ST_StartPoint(geometry)
|
|---|
| 4963 | RETURNS geometry
|
|---|
| 4964 | AS 'MODULE_PATHNAME', 'LWGEOM_startpoint_linestring'
|
|---|
| 4965 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4966 | _COST_LOW;
|
|---|
| 4967 |
|
|---|
| 4968 | -- PostGIS equivalent function of old EndPoint(geometry)
|
|---|
| 4969 | CREATE OR REPLACE FUNCTION ST_EndPoint(geometry)
|
|---|
| 4970 | RETURNS geometry
|
|---|
| 4971 | AS 'MODULE_PATHNAME', 'LWGEOM_endpoint_linestring'
|
|---|
| 4972 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4973 | _COST_LOW;
|
|---|
| 4974 |
|
|---|
| 4975 | -- PostGIS equivalent function: IsClosed(geometry)
|
|---|
| 4976 | CREATE OR REPLACE FUNCTION ST_IsClosed(geometry)
|
|---|
| 4977 | RETURNS boolean
|
|---|
| 4978 | AS 'MODULE_PATHNAME', 'LWGEOM_isclosed'
|
|---|
| 4979 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4980 | _COST_LOW;
|
|---|
| 4981 |
|
|---|
| 4982 | -- PostGIS equivalent function: IsEmpty(geometry)
|
|---|
| 4983 | CREATE OR REPLACE FUNCTION ST_IsEmpty(geometry)
|
|---|
| 4984 | RETURNS boolean
|
|---|
| 4985 | AS 'MODULE_PATHNAME', 'LWGEOM_isempty'
|
|---|
| 4986 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4987 | _COST_LOW;
|
|---|
| 4988 |
|
|---|
| 4989 | -- Availability: 1.2.2
|
|---|
| 4990 | CREATE OR REPLACE FUNCTION ST_AsBinary(geometry,text)
|
|---|
| 4991 | RETURNS bytea
|
|---|
| 4992 | AS 'MODULE_PATHNAME','LWGEOM_asBinary'
|
|---|
| 4993 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 4994 | _COST_LOW;
|
|---|
| 4995 |
|
|---|
| 4996 | -- PostGIS equivalent of old function: AsBinary(geometry)
|
|---|
| 4997 | CREATE OR REPLACE FUNCTION ST_AsBinary(geometry)
|
|---|
| 4998 | RETURNS bytea
|
|---|
| 4999 | AS 'MODULE_PATHNAME','LWGEOM_asBinary'
|
|---|
| 5000 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5001 | _COST_LOW;
|
|---|
| 5002 |
|
|---|
| 5003 | -- PostGIS equivalent function: AsText(geometry)
|
|---|
| 5004 | CREATE OR REPLACE FUNCTION ST_AsText(geometry)
|
|---|
| 5005 | RETURNS TEXT
|
|---|
| 5006 | AS 'MODULE_PATHNAME','LWGEOM_asText'
|
|---|
| 5007 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5008 | _COST_MEDIUM;
|
|---|
| 5009 |
|
|---|
| 5010 | -- Availability: 2.5.0
|
|---|
| 5011 | -- PostGIS equivalent function: AsText(geometry, int4)
|
|---|
| 5012 | CREATE OR REPLACE FUNCTION ST_AsText(geometry, int4)
|
|---|
| 5013 | RETURNS TEXT
|
|---|
| 5014 | AS 'MODULE_PATHNAME','LWGEOM_asText'
|
|---|
| 5015 | LANGUAGE 'c' IMMUTABLE STRICT
|
|---|
| 5016 | _COST_MEDIUM;
|
|---|
| 5017 |
|
|---|
| 5018 | -- Availability: 1.2.2
|
|---|
| 5019 | CREATE OR REPLACE FUNCTION ST_GeometryFromText(text)
|
|---|
| 5020 | RETURNS geometry
|
|---|
| 5021 | AS 'MODULE_PATHNAME','LWGEOM_from_text'
|
|---|
| 5022 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5023 | _COST_MEDIUM;
|
|---|
| 5024 |
|
|---|
| 5025 | -- Availability: 1.2.2
|
|---|
| 5026 | CREATE OR REPLACE FUNCTION ST_GeometryFromText(text, int4)
|
|---|
| 5027 | RETURNS geometry
|
|---|
| 5028 | AS 'MODULE_PATHNAME','LWGEOM_from_text'
|
|---|
| 5029 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5030 | _COST_MEDIUM;
|
|---|
| 5031 |
|
|---|
| 5032 | -- Availability: 1.2.2
|
|---|
| 5033 | CREATE OR REPLACE FUNCTION ST_GeomFromText(text)
|
|---|
| 5034 | RETURNS geometry
|
|---|
| 5035 | AS 'MODULE_PATHNAME','LWGEOM_from_text'
|
|---|
| 5036 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5037 | _COST_MEDIUM;
|
|---|
| 5038 |
|
|---|
| 5039 | -- PostGIS equivalent function: ST_GeometryFromText(text, int4)
|
|---|
| 5040 | CREATE OR REPLACE FUNCTION ST_GeomFromText(text, int4)
|
|---|
| 5041 | RETURNS geometry
|
|---|
| 5042 | AS 'MODULE_PATHNAME','LWGEOM_from_text'
|
|---|
| 5043 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5044 | _COST_MEDIUM;
|
|---|
| 5045 |
|
|---|
| 5046 | -- PostGIS equivalent function: ST_GeometryFromText(text)
|
|---|
| 5047 | -- SQL/MM alias for ST_GeomFromText
|
|---|
| 5048 | CREATE OR REPLACE FUNCTION ST_WKTToSQL(text)
|
|---|
| 5049 | RETURNS geometry
|
|---|
| 5050 | AS 'MODULE_PATHNAME','LWGEOM_from_text'
|
|---|
| 5051 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5052 | _COST_MEDIUM;
|
|---|
| 5053 |
|
|---|
| 5054 | -- Availability: 1.2.2
|
|---|
| 5055 | CREATE OR REPLACE FUNCTION ST_PointFromText(text)
|
|---|
| 5056 | RETURNS geometry
|
|---|
| 5057 | AS '
|
|---|
| 5058 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''POINT''
|
|---|
| 5059 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5060 | ELSE NULL END
|
|---|
| 5061 | '
|
|---|
| 5062 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5063 |
|
|---|
| 5064 | -- PostGIS equivalent function: PointFromText(text, int4)
|
|---|
| 5065 | -- TODO: improve this ... by not duplicating constructor time.
|
|---|
| 5066 | CREATE OR REPLACE FUNCTION ST_PointFromText(text, int4)
|
|---|
| 5067 | RETURNS geometry
|
|---|
| 5068 | AS '
|
|---|
| 5069 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''POINT''
|
|---|
| 5070 | THEN @extschema@.ST_GeomFromText($1, $2)
|
|---|
| 5071 | ELSE NULL END
|
|---|
| 5072 | '
|
|---|
| 5073 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5074 |
|
|---|
| 5075 | -- Availability: 1.2.2
|
|---|
| 5076 | CREATE OR REPLACE FUNCTION ST_LineFromText(text)
|
|---|
| 5077 | RETURNS geometry
|
|---|
| 5078 | AS '
|
|---|
| 5079 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''LINESTRING''
|
|---|
| 5080 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5081 | ELSE NULL END
|
|---|
| 5082 | '
|
|---|
| 5083 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5084 |
|
|---|
| 5085 | -- PostGIS equivalent function: LineFromText(text, int4)
|
|---|
| 5086 | CREATE OR REPLACE FUNCTION ST_LineFromText(text, int4)
|
|---|
| 5087 | RETURNS geometry
|
|---|
| 5088 | AS '
|
|---|
| 5089 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''LINESTRING''
|
|---|
| 5090 | THEN @extschema@.ST_GeomFromText($1,$2)
|
|---|
| 5091 | ELSE NULL END
|
|---|
| 5092 | '
|
|---|
| 5093 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5094 |
|
|---|
| 5095 | -- Availability: 1.2.2
|
|---|
| 5096 | CREATE OR REPLACE FUNCTION ST_PolyFromText(text)
|
|---|
| 5097 | RETURNS geometry
|
|---|
| 5098 | AS '
|
|---|
| 5099 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''POLYGON''
|
|---|
| 5100 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5101 | ELSE NULL END
|
|---|
| 5102 | '
|
|---|
| 5103 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5104 |
|
|---|
| 5105 | -- PostGIS equivalent function: ST_PolygonFromText(text, int4)
|
|---|
| 5106 | CREATE OR REPLACE FUNCTION ST_PolyFromText(text, int4)
|
|---|
| 5107 | RETURNS geometry
|
|---|
| 5108 | AS '
|
|---|
| 5109 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''POLYGON''
|
|---|
| 5110 | THEN @extschema@.ST_GeomFromText($1, $2)
|
|---|
| 5111 | ELSE NULL END
|
|---|
| 5112 | '
|
|---|
| 5113 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5114 |
|
|---|
| 5115 | -- Availability: 1.2.2
|
|---|
| 5116 | CREATE OR REPLACE FUNCTION ST_PolygonFromText(text, int4)
|
|---|
| 5117 | RETURNS geometry
|
|---|
| 5118 | AS 'SELECT @extschema@.ST_PolyFromText($1, $2)'
|
|---|
| 5119 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5120 |
|
|---|
| 5121 | -- Availability: 1.2.2
|
|---|
| 5122 | CREATE OR REPLACE FUNCTION ST_PolygonFromText(text)
|
|---|
| 5123 | RETURNS geometry
|
|---|
| 5124 | AS 'SELECT @extschema@.ST_PolyFromText($1)'
|
|---|
| 5125 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5126 |
|
|---|
| 5127 | -- PostGIS equivalent function: MLineFromText(text, int4)
|
|---|
| 5128 | CREATE OR REPLACE FUNCTION ST_MLineFromText(text, int4)
|
|---|
| 5129 | RETURNS geometry
|
|---|
| 5130 | AS '
|
|---|
| 5131 | SELECT CASE
|
|---|
| 5132 | WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTILINESTRING''
|
|---|
| 5133 | THEN @extschema@.ST_GeomFromText($1,$2)
|
|---|
| 5134 | ELSE NULL END
|
|---|
| 5135 | '
|
|---|
| 5136 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5137 |
|
|---|
| 5138 | -- Availability: 1.2.2
|
|---|
| 5139 | CREATE OR REPLACE FUNCTION ST_MLineFromText(text)
|
|---|
| 5140 | RETURNS geometry
|
|---|
| 5141 | AS '
|
|---|
| 5142 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTILINESTRING''
|
|---|
| 5143 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5144 | ELSE NULL END
|
|---|
| 5145 | '
|
|---|
| 5146 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5147 |
|
|---|
| 5148 | -- Availability: 1.2.2
|
|---|
| 5149 | CREATE OR REPLACE FUNCTION ST_MultiLineStringFromText(text)
|
|---|
| 5150 | RETURNS geometry
|
|---|
| 5151 | AS 'SELECT @extschema@.ST_MLineFromText($1)'
|
|---|
| 5152 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5153 |
|
|---|
| 5154 | -- Availability: 1.2.2
|
|---|
| 5155 | CREATE OR REPLACE FUNCTION ST_MultiLineStringFromText(text, int4)
|
|---|
| 5156 | RETURNS geometry
|
|---|
| 5157 | AS 'SELECT @extschema@.ST_MLineFromText($1, $2)'
|
|---|
| 5158 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5159 |
|
|---|
| 5160 | -- PostGIS equivalent function: MPointFromText(text, int4)
|
|---|
| 5161 | CREATE OR REPLACE FUNCTION ST_MPointFromText(text, int4)
|
|---|
| 5162 | RETURNS geometry
|
|---|
| 5163 | AS '
|
|---|
| 5164 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTIPOINT''
|
|---|
| 5165 | THEN ST_GeomFromText($1, $2)
|
|---|
| 5166 | ELSE NULL END
|
|---|
| 5167 | '
|
|---|
| 5168 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5169 |
|
|---|
| 5170 | -- Availability: 1.2.2
|
|---|
| 5171 | CREATE OR REPLACE FUNCTION ST_MPointFromText(text)
|
|---|
| 5172 | RETURNS geometry
|
|---|
| 5173 | AS '
|
|---|
| 5174 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTIPOINT''
|
|---|
| 5175 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5176 | ELSE NULL END
|
|---|
| 5177 | '
|
|---|
| 5178 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5179 |
|
|---|
| 5180 | -- Availability: 1.2.2
|
|---|
| 5181 | CREATE OR REPLACE FUNCTION ST_MultiPointFromText(text)
|
|---|
| 5182 | RETURNS geometry
|
|---|
| 5183 | AS 'SELECT @extschema@.ST_MPointFromText($1)'
|
|---|
| 5184 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5185 |
|
|---|
| 5186 | -- PostGIS equivalent function: MPolyFromText(text, int4)
|
|---|
| 5187 | CREATE OR REPLACE FUNCTION ST_MPolyFromText(text, int4)
|
|---|
| 5188 | RETURNS geometry
|
|---|
| 5189 | AS '
|
|---|
| 5190 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''MULTIPOLYGON''
|
|---|
| 5191 | THEN @extschema@.ST_GeomFromText($1,$2)
|
|---|
| 5192 | ELSE NULL END
|
|---|
| 5193 | '
|
|---|
| 5194 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5195 |
|
|---|
| 5196 | --Availability: 1.2.2
|
|---|
| 5197 | CREATE OR REPLACE FUNCTION ST_MPolyFromText(text)
|
|---|
| 5198 | RETURNS geometry
|
|---|
| 5199 | AS '
|
|---|
| 5200 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''MULTIPOLYGON''
|
|---|
| 5201 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5202 | ELSE NULL END
|
|---|
| 5203 | '
|
|---|
| 5204 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5205 |
|
|---|
| 5206 | -- Availability: 1.2.2
|
|---|
| 5207 | CREATE OR REPLACE FUNCTION ST_MultiPolygonFromText(text, int4)
|
|---|
| 5208 | RETURNS geometry
|
|---|
| 5209 | AS 'SELECT @extschema@.ST_MPolyFromText($1, $2)'
|
|---|
| 5210 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5211 |
|
|---|
| 5212 | -- Availability: 1.2.2
|
|---|
| 5213 | CREATE OR REPLACE FUNCTION ST_MultiPolygonFromText(text)
|
|---|
| 5214 | RETURNS geometry
|
|---|
| 5215 | AS 'SELECT @extschema@.ST_MPolyFromText($1)'
|
|---|
| 5216 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5217 |
|
|---|
| 5218 | -- Availability: 1.2.2
|
|---|
| 5219 | CREATE OR REPLACE FUNCTION ST_GeomCollFromText(text, int4)
|
|---|
| 5220 | RETURNS geometry
|
|---|
| 5221 | AS '
|
|---|
| 5222 | SELECT CASE
|
|---|
| 5223 | WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1, $2)) = ''GEOMETRYCOLLECTION''
|
|---|
| 5224 | THEN @extschema@.ST_GeomFromText($1,$2)
|
|---|
| 5225 | ELSE NULL END
|
|---|
| 5226 | '
|
|---|
| 5227 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5228 |
|
|---|
| 5229 | -- Availability: 1.2.2
|
|---|
| 5230 | CREATE OR REPLACE FUNCTION ST_GeomCollFromText(text)
|
|---|
| 5231 | RETURNS geometry
|
|---|
| 5232 | AS '
|
|---|
| 5233 | SELECT CASE
|
|---|
| 5234 | WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromText($1)) = ''GEOMETRYCOLLECTION''
|
|---|
| 5235 | THEN @extschema@.ST_GeomFromText($1)
|
|---|
| 5236 | ELSE NULL END
|
|---|
| 5237 | '
|
|---|
| 5238 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5239 |
|
|---|
| 5240 | -- Availability: 1.2.2
|
|---|
| 5241 | CREATE OR REPLACE FUNCTION ST_GeomFromWKB(bytea)
|
|---|
| 5242 | RETURNS geometry
|
|---|
| 5243 | AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
|
|---|
| 5244 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5245 |
|
|---|
| 5246 | -- PostGIS equivalent function: GeomFromWKB(bytea, int)
|
|---|
| 5247 | CREATE OR REPLACE FUNCTION ST_GeomFromWKB(bytea, int)
|
|---|
| 5248 | RETURNS geometry
|
|---|
| 5249 | AS 'SELECT @extschema@.ST_SetSRID(@extschema@.ST_GeomFromWKB($1), $2)'
|
|---|
| 5250 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5251 |
|
|---|
| 5252 | -- PostGIS equivalent function: PointFromWKB(bytea, int)
|
|---|
| 5253 | CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea, int)
|
|---|
| 5254 | RETURNS geometry
|
|---|
| 5255 | AS '
|
|---|
| 5256 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''POINT''
|
|---|
| 5257 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5258 | ELSE NULL END
|
|---|
| 5259 | '
|
|---|
| 5260 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5261 |
|
|---|
| 5262 | -- Availability: 1.2.2
|
|---|
| 5263 | CREATE OR REPLACE FUNCTION ST_PointFromWKB(bytea)
|
|---|
| 5264 | RETURNS geometry
|
|---|
| 5265 | AS '
|
|---|
| 5266 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POINT''
|
|---|
| 5267 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5268 | ELSE NULL END
|
|---|
| 5269 | '
|
|---|
| 5270 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5271 |
|
|---|
| 5272 | -- PostGIS equivalent function: LineFromWKB(bytea, int)
|
|---|
| 5273 | CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea, int)
|
|---|
| 5274 | RETURNS geometry
|
|---|
| 5275 | AS '
|
|---|
| 5276 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''LINESTRING''
|
|---|
| 5277 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5278 | ELSE NULL END
|
|---|
| 5279 | '
|
|---|
| 5280 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5281 |
|
|---|
| 5282 | -- Availability: 1.2.2
|
|---|
| 5283 | CREATE OR REPLACE FUNCTION ST_LineFromWKB(bytea)
|
|---|
| 5284 | RETURNS geometry
|
|---|
| 5285 | AS '
|
|---|
| 5286 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''LINESTRING''
|
|---|
| 5287 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5288 | ELSE NULL END
|
|---|
| 5289 | '
|
|---|
| 5290 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5291 |
|
|---|
| 5292 | -- Availability: 1.2.2
|
|---|
| 5293 | CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea, int)
|
|---|
| 5294 | RETURNS geometry
|
|---|
| 5295 | AS '
|
|---|
| 5296 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''LINESTRING''
|
|---|
| 5297 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5298 | ELSE NULL END
|
|---|
| 5299 | '
|
|---|
| 5300 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5301 |
|
|---|
| 5302 | -- Availability: 1.2.2
|
|---|
| 5303 | CREATE OR REPLACE FUNCTION ST_LinestringFromWKB(bytea)
|
|---|
| 5304 | RETURNS geometry
|
|---|
| 5305 | AS '
|
|---|
| 5306 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''LINESTRING''
|
|---|
| 5307 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5308 | ELSE NULL END
|
|---|
| 5309 | '
|
|---|
| 5310 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5311 |
|
|---|
| 5312 | -- PostGIS equivalent function: PolyFromWKB(text, int)
|
|---|
| 5313 | CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea, int)
|
|---|
| 5314 | RETURNS geometry
|
|---|
| 5315 | AS '
|
|---|
| 5316 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''POLYGON''
|
|---|
| 5317 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5318 | ELSE NULL END
|
|---|
| 5319 | '
|
|---|
| 5320 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5321 |
|
|---|
| 5322 | -- Availability: 1.2.2
|
|---|
| 5323 | CREATE OR REPLACE FUNCTION ST_PolyFromWKB(bytea)
|
|---|
| 5324 | RETURNS geometry
|
|---|
| 5325 | AS '
|
|---|
| 5326 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POLYGON''
|
|---|
| 5327 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5328 | ELSE NULL END
|
|---|
| 5329 | '
|
|---|
| 5330 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5331 |
|
|---|
| 5332 | -- Availability: 1.2.2
|
|---|
| 5333 | CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea, int)
|
|---|
| 5334 | RETURNS geometry
|
|---|
| 5335 | AS '
|
|---|
| 5336 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1,$2)) = ''POLYGON''
|
|---|
| 5337 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5338 | ELSE NULL END
|
|---|
| 5339 | '
|
|---|
| 5340 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5341 |
|
|---|
| 5342 | -- Availability: 1.2.2
|
|---|
| 5343 | CREATE OR REPLACE FUNCTION ST_PolygonFromWKB(bytea)
|
|---|
| 5344 | RETURNS geometry
|
|---|
| 5345 | AS '
|
|---|
| 5346 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''POLYGON''
|
|---|
| 5347 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5348 | ELSE NULL END
|
|---|
| 5349 | '
|
|---|
| 5350 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5351 |
|
|---|
| 5352 | -- PostGIS equivalent function: MPointFromWKB(text, int)
|
|---|
| 5353 | CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea, int)
|
|---|
| 5354 | RETURNS geometry
|
|---|
| 5355 | AS '
|
|---|
| 5356 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOINT''
|
|---|
| 5357 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5358 | ELSE NULL END
|
|---|
| 5359 | '
|
|---|
| 5360 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5361 |
|
|---|
| 5362 | -- Availability: 1.2.2
|
|---|
| 5363 | CREATE OR REPLACE FUNCTION ST_MPointFromWKB(bytea)
|
|---|
| 5364 | RETURNS geometry
|
|---|
| 5365 | AS '
|
|---|
| 5366 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOINT''
|
|---|
| 5367 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5368 | ELSE NULL END
|
|---|
| 5369 | '
|
|---|
| 5370 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5371 |
|
|---|
| 5372 | -- Availability: 1.2.2
|
|---|
| 5373 | CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea, int)
|
|---|
| 5374 | RETURNS geometry
|
|---|
| 5375 | AS '
|
|---|
| 5376 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1,$2)) = ''MULTIPOINT''
|
|---|
| 5377 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5378 | ELSE NULL END
|
|---|
| 5379 | '
|
|---|
| 5380 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5381 |
|
|---|
| 5382 | -- Availability: 1.2.2
|
|---|
| 5383 | CREATE OR REPLACE FUNCTION ST_MultiPointFromWKB(bytea)
|
|---|
| 5384 | RETURNS geometry
|
|---|
| 5385 | AS '
|
|---|
| 5386 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOINT''
|
|---|
| 5387 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5388 | ELSE NULL END
|
|---|
| 5389 | '
|
|---|
| 5390 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5391 |
|
|---|
| 5392 | -- Availability: 1.2.2
|
|---|
| 5393 | CREATE OR REPLACE FUNCTION ST_MultiLineFromWKB(bytea)
|
|---|
| 5394 | RETURNS geometry
|
|---|
| 5395 | AS '
|
|---|
| 5396 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTILINESTRING''
|
|---|
| 5397 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5398 | ELSE NULL END
|
|---|
| 5399 | '
|
|---|
| 5400 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5401 |
|
|---|
| 5402 | -- PostGIS equivalent function: MLineFromWKB(text, int)
|
|---|
| 5403 | CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea, int)
|
|---|
| 5404 | RETURNS geometry
|
|---|
| 5405 | AS '
|
|---|
| 5406 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTILINESTRING''
|
|---|
| 5407 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5408 | ELSE NULL END
|
|---|
| 5409 | '
|
|---|
| 5410 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5411 |
|
|---|
| 5412 | -- Availability: 1.2.2
|
|---|
| 5413 | CREATE OR REPLACE FUNCTION ST_MLineFromWKB(bytea)
|
|---|
| 5414 | RETURNS geometry
|
|---|
| 5415 | AS '
|
|---|
| 5416 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTILINESTRING''
|
|---|
| 5417 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5418 | ELSE NULL END
|
|---|
| 5419 | '
|
|---|
| 5420 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5421 |
|
|---|
| 5422 | -- Availability: 1.2.2
|
|---|
| 5423 | -- PostGIS equivalent function: MPolyFromWKB(bytea, int)
|
|---|
| 5424 | CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea, int)
|
|---|
| 5425 | RETURNS geometry
|
|---|
| 5426 | AS '
|
|---|
| 5427 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
|
|---|
| 5428 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5429 | ELSE NULL END
|
|---|
| 5430 | '
|
|---|
| 5431 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5432 |
|
|---|
| 5433 | -- Availability: 1.2.2
|
|---|
| 5434 | CREATE OR REPLACE FUNCTION ST_MPolyFromWKB(bytea)
|
|---|
| 5435 | RETURNS geometry
|
|---|
| 5436 | AS '
|
|---|
| 5437 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
|
|---|
| 5438 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5439 | ELSE NULL END
|
|---|
| 5440 | '
|
|---|
| 5441 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5442 |
|
|---|
| 5443 | -- Availability: 1.2.2
|
|---|
| 5444 | CREATE OR REPLACE FUNCTION ST_MultiPolyFromWKB(bytea, int)
|
|---|
| 5445 | RETURNS geometry
|
|---|
| 5446 | AS '
|
|---|
| 5447 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''MULTIPOLYGON''
|
|---|
| 5448 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5449 | ELSE NULL END
|
|---|
| 5450 | '
|
|---|
| 5451 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5452 |
|
|---|
| 5453 | -- Availability: 1.2.2
|
|---|
| 5454 | CREATE OR REPLACE FUNCTION ST_MultiPolyFromWKB(bytea)
|
|---|
| 5455 | RETURNS geometry
|
|---|
| 5456 | AS '
|
|---|
| 5457 | SELECT CASE WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''MULTIPOLYGON''
|
|---|
| 5458 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5459 | ELSE NULL END
|
|---|
| 5460 | '
|
|---|
| 5461 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5462 |
|
|---|
| 5463 | -- Availability: 1.2.2
|
|---|
| 5464 | CREATE OR REPLACE FUNCTION ST_GeomCollFromWKB(bytea, int)
|
|---|
| 5465 | RETURNS geometry
|
|---|
| 5466 | AS '
|
|---|
| 5467 | SELECT CASE
|
|---|
| 5468 | WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1, $2)) = ''GEOMETRYCOLLECTION''
|
|---|
| 5469 | THEN @extschema@.ST_GeomFromWKB($1, $2)
|
|---|
| 5470 | ELSE NULL END
|
|---|
| 5471 | '
|
|---|
| 5472 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5473 |
|
|---|
| 5474 | -- Availability: 1.2.2
|
|---|
| 5475 | CREATE OR REPLACE FUNCTION ST_GeomCollFromWKB(bytea)
|
|---|
| 5476 | RETURNS geometry
|
|---|
| 5477 | AS '
|
|---|
| 5478 | SELECT CASE
|
|---|
| 5479 | WHEN @extschema@.geometrytype(@extschema@.ST_GeomFromWKB($1)) = ''GEOMETRYCOLLECTION''
|
|---|
| 5480 | THEN @extschema@.ST_GeomFromWKB($1)
|
|---|
| 5481 | ELSE NULL END
|
|---|
| 5482 | '
|
|---|
| 5483 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5484 |
|
|---|
| 5485 |
|
|---|
| 5486 | -- Maximum distance between linestrings.
|
|---|
| 5487 | -- Availability: 1.5.0
|
|---|
| 5488 | CREATE OR REPLACE FUNCTION _ST_MaxDistance(geom1 geometry, geom2 geometry)
|
|---|
| 5489 | RETURNS float8
|
|---|
| 5490 | AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance2d_linestring'
|
|---|
| 5491 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5492 | _COST_MEDIUM;
|
|---|
| 5493 |
|
|---|
| 5494 | -- Availability: 1.5.0
|
|---|
| 5495 | CREATE OR REPLACE FUNCTION ST_MaxDistance(geom1 geometry, geom2 geometry)
|
|---|
| 5496 | RETURNS float8
|
|---|
| 5497 | AS 'SELECT @extschema@._ST_MaxDistance(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2))'
|
|---|
| 5498 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5499 |
|
|---|
| 5500 | CREATE OR REPLACE FUNCTION ST_ClosestPoint(geom1 geometry, geom2 geometry)
|
|---|
| 5501 | RETURNS geometry
|
|---|
| 5502 | AS 'MODULE_PATHNAME', 'LWGEOM_closestpoint'
|
|---|
| 5503 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5504 | _COST_MEDIUM;
|
|---|
| 5505 |
|
|---|
| 5506 | CREATE OR REPLACE FUNCTION ST_ShortestLine(geom1 geometry, geom2 geometry)
|
|---|
| 5507 | RETURNS geometry
|
|---|
| 5508 | AS 'MODULE_PATHNAME', 'LWGEOM_shortestline2d'
|
|---|
| 5509 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5510 | _COST_MEDIUM;
|
|---|
| 5511 |
|
|---|
| 5512 | CREATE OR REPLACE FUNCTION _ST_LongestLine(geom1 geometry, geom2 geometry)
|
|---|
| 5513 | RETURNS geometry
|
|---|
| 5514 | AS 'MODULE_PATHNAME', 'LWGEOM_longestline2d'
|
|---|
| 5515 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5516 | _COST_MEDIUM;
|
|---|
| 5517 |
|
|---|
| 5518 | CREATE OR REPLACE FUNCTION ST_LongestLine(geom1 geometry, geom2 geometry)
|
|---|
| 5519 | RETURNS geometry
|
|---|
| 5520 | AS 'SELECT @extschema@._ST_LongestLine(@extschema@.ST_ConvexHull($1), @extschema@.ST_ConvexHull($2))'
|
|---|
| 5521 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5522 |
|
|---|
| 5523 | -- Availability: 2.2.0
|
|---|
| 5524 | CREATE OR REPLACE FUNCTION ST_SwapOrdinates(geom geometry, ords cstring)
|
|---|
| 5525 | RETURNS geometry
|
|---|
| 5526 | AS 'MODULE_PATHNAME', 'ST_SwapOrdinates'
|
|---|
| 5527 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5528 | _COST_LOW;
|
|---|
| 5529 |
|
|---|
| 5530 | -- NOTE: same as ST_SwapOrdinates(geometry, 'xy')
|
|---|
| 5531 | -- but slightly faster in that it doesn't need to parse ordinate
|
|---|
| 5532 | -- spec strings
|
|---|
| 5533 | CREATE OR REPLACE FUNCTION ST_FlipCoordinates(geometry)
|
|---|
| 5534 | RETURNS geometry
|
|---|
| 5535 | AS 'MODULE_PATHNAME', 'ST_FlipCoordinates'
|
|---|
| 5536 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5537 | _COST_MEDIUM;
|
|---|
| 5538 |
|
|---|
| 5539 | --
|
|---|
| 5540 | -- SFSQL 1.1
|
|---|
| 5541 | --
|
|---|
| 5542 | -- BdPolyFromText(multiLineStringTaggedText String, SRID Integer): Polygon
|
|---|
| 5543 | --
|
|---|
| 5544 | -- Construct a Polygon given an arbitrary
|
|---|
| 5545 | -- collection of closed linestrings as a
|
|---|
| 5546 | -- MultiLineString text representation.
|
|---|
| 5547 | --
|
|---|
| 5548 | -- This is a PLPGSQL function rather then an SQL function
|
|---|
| 5549 | -- To avoid double call of BuildArea (one to get GeometryType
|
|---|
| 5550 | -- and another to actual return, in a CASE WHEN construct).
|
|---|
| 5551 | -- Also, we profit from plpgsql to RAISE exceptions.
|
|---|
| 5552 | --
|
|---|
| 5553 |
|
|---|
| 5554 | -- Availability: 1.2.2
|
|---|
| 5555 | CREATE OR REPLACE FUNCTION ST_BdPolyFromText(text, integer)
|
|---|
| 5556 | RETURNS geometry
|
|---|
| 5557 | AS $$
|
|---|
| 5558 | DECLARE
|
|---|
| 5559 | geomtext alias for $1;
|
|---|
| 5560 | srid alias for $2;
|
|---|
| 5561 | mline @extschema@.geometry;
|
|---|
| 5562 | geom @extschema@.geometry;
|
|---|
| 5563 | BEGIN
|
|---|
| 5564 | mline := @extschema@.ST_MultiLineStringFromText(geomtext, srid);
|
|---|
| 5565 |
|
|---|
| 5566 | IF mline IS NULL
|
|---|
| 5567 | THEN
|
|---|
| 5568 | RAISE EXCEPTION 'Input is not a MultiLinestring';
|
|---|
| 5569 | END IF;
|
|---|
| 5570 |
|
|---|
| 5571 | geom := @extschema@.ST_BuildArea(mline);
|
|---|
| 5572 |
|
|---|
| 5573 | IF @extschema@.GeometryType(geom) != 'POLYGON'
|
|---|
| 5574 | THEN
|
|---|
| 5575 | RAISE EXCEPTION 'Input returns more then a single polygon, try using BdMPolyFromText instead';
|
|---|
| 5576 | END IF;
|
|---|
| 5577 |
|
|---|
| 5578 | RETURN geom;
|
|---|
| 5579 | END;
|
|---|
| 5580 | $$
|
|---|
| 5581 | LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5582 |
|
|---|
| 5583 | --
|
|---|
| 5584 | -- SFSQL 1.1
|
|---|
| 5585 | --
|
|---|
| 5586 | -- BdMPolyFromText(multiLineStringTaggedText String, SRID Integer): MultiPolygon
|
|---|
| 5587 | --
|
|---|
| 5588 | -- Construct a MultiPolygon given an arbitrary
|
|---|
| 5589 | -- collection of closed linestrings as a
|
|---|
| 5590 | -- MultiLineString text representation.
|
|---|
| 5591 | --
|
|---|
| 5592 | -- This is a PLPGSQL function rather then an SQL function
|
|---|
| 5593 | -- To raise an exception in case of invalid input.
|
|---|
| 5594 | --
|
|---|
| 5595 |
|
|---|
| 5596 | -- Availability: 1.2.2
|
|---|
| 5597 | CREATE OR REPLACE FUNCTION ST_BdMPolyFromText(text, integer)
|
|---|
| 5598 | RETURNS geometry
|
|---|
| 5599 | AS $$
|
|---|
| 5600 | DECLARE
|
|---|
| 5601 | geomtext alias for $1;
|
|---|
| 5602 | srid alias for $2;
|
|---|
| 5603 | mline @extschema@.geometry;
|
|---|
| 5604 | geom @extschema@.geometry;
|
|---|
| 5605 | BEGIN
|
|---|
| 5606 | mline := @extschema@.ST_MultiLineStringFromText(geomtext, srid);
|
|---|
| 5607 |
|
|---|
| 5608 | IF mline IS NULL
|
|---|
| 5609 | THEN
|
|---|
| 5610 | RAISE EXCEPTION 'Input is not a MultiLinestring';
|
|---|
| 5611 | END IF;
|
|---|
| 5612 |
|
|---|
| 5613 | geom := @extschema@.ST_Multi(@extschema@.ST_BuildArea(mline));
|
|---|
| 5614 |
|
|---|
| 5615 | RETURN geom;
|
|---|
| 5616 | END;
|
|---|
| 5617 | $$
|
|---|
| 5618 | LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5619 |
|
|---|
| 5620 | /* Should we include the .sql directly here ? */
|
|---|
| 5621 | #include "long_xact.sql.in"
|
|---|
| 5622 | #include "geography.sql.in"
|
|---|
| 5623 |
|
|---|
| 5624 | -- Availability: 2.2.0
|
|---|
| 5625 | CREATE OR REPLACE FUNCTION ST_DistanceSphere(geom1 geometry, geom2 geometry)
|
|---|
| 5626 | RETURNS FLOAT8 AS
|
|---|
| 5627 | 'select @extschema@.ST_distance( @extschema@.geography($1), @extschema@.geography($2),false)'
|
|---|
| 5628 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5629 |
|
|---|
| 5630 | ---------------------------------------------------------------
|
|---|
| 5631 | -- GEOMETRY_COLUMNS view support functions
|
|---|
| 5632 | ---------------------------------------------------------------
|
|---|
| 5633 | -- New helper function so we can keep list of valid geometry types in one place --
|
|---|
| 5634 | -- Maps old names to pramsey beautiful names but can take old name or new name as input
|
|---|
| 5635 | -- By default returns new name but can be overridden to return old name for old constraint like support
|
|---|
| 5636 | CREATE OR REPLACE FUNCTION postgis_type_name(geomname varchar, coord_dimension integer, use_new_name boolean DEFAULT true)
|
|---|
| 5637 | RETURNS varchar
|
|---|
| 5638 | AS
|
|---|
| 5639 | $$
|
|---|
| 5640 | SELECT CASE WHEN $3 THEN new_name ELSE old_name END As geomname
|
|---|
| 5641 | FROM
|
|---|
| 5642 | ( VALUES
|
|---|
| 5643 | ('GEOMETRY', 'Geometry', 2),
|
|---|
| 5644 | ('GEOMETRY', 'GeometryZ', 3),
|
|---|
| 5645 | ('GEOMETRYM', 'GeometryM', 3),
|
|---|
| 5646 | ('GEOMETRY', 'GeometryZM', 4),
|
|---|
| 5647 |
|
|---|
| 5648 | ('GEOMETRYCOLLECTION', 'GeometryCollection', 2),
|
|---|
| 5649 | ('GEOMETRYCOLLECTION', 'GeometryCollectionZ', 3),
|
|---|
| 5650 | ('GEOMETRYCOLLECTIONM', 'GeometryCollectionM', 3),
|
|---|
| 5651 | ('GEOMETRYCOLLECTION', 'GeometryCollectionZM', 4),
|
|---|
| 5652 |
|
|---|
| 5653 | ('POINT', 'Point', 2),
|
|---|
| 5654 | ('POINT', 'PointZ', 3),
|
|---|
| 5655 | ('POINTM','PointM', 3),
|
|---|
| 5656 | ('POINT', 'PointZM', 4),
|
|---|
| 5657 |
|
|---|
| 5658 | ('MULTIPOINT','MultiPoint', 2),
|
|---|
| 5659 | ('MULTIPOINT','MultiPointZ', 3),
|
|---|
| 5660 | ('MULTIPOINTM','MultiPointM', 3),
|
|---|
| 5661 | ('MULTIPOINT','MultiPointZM', 4),
|
|---|
| 5662 |
|
|---|
| 5663 | ('POLYGON', 'Polygon', 2),
|
|---|
| 5664 | ('POLYGON', 'PolygonZ', 3),
|
|---|
| 5665 | ('POLYGONM', 'PolygonM', 3),
|
|---|
| 5666 | ('POLYGON', 'PolygonZM', 4),
|
|---|
| 5667 |
|
|---|
| 5668 | ('MULTIPOLYGON', 'MultiPolygon', 2),
|
|---|
| 5669 | ('MULTIPOLYGON', 'MultiPolygonZ', 3),
|
|---|
| 5670 | ('MULTIPOLYGONM', 'MultiPolygonM', 3),
|
|---|
| 5671 | ('MULTIPOLYGON', 'MultiPolygonZM', 4),
|
|---|
| 5672 |
|
|---|
| 5673 | ('MULTILINESTRING', 'MultiLineString', 2),
|
|---|
| 5674 | ('MULTILINESTRING', 'MultiLineStringZ', 3),
|
|---|
| 5675 | ('MULTILINESTRINGM', 'MultiLineStringM', 3),
|
|---|
| 5676 | ('MULTILINESTRING', 'MultiLineStringZM', 4),
|
|---|
| 5677 |
|
|---|
| 5678 | ('LINESTRING', 'LineString', 2),
|
|---|
| 5679 | ('LINESTRING', 'LineStringZ', 3),
|
|---|
| 5680 | ('LINESTRINGM', 'LineStringM', 3),
|
|---|
| 5681 | ('LINESTRING', 'LineStringZM', 4),
|
|---|
| 5682 |
|
|---|
| 5683 | ('CIRCULARSTRING', 'CircularString', 2),
|
|---|
| 5684 | ('CIRCULARSTRING', 'CircularStringZ', 3),
|
|---|
| 5685 | ('CIRCULARSTRINGM', 'CircularStringM' ,3),
|
|---|
| 5686 | ('CIRCULARSTRING', 'CircularStringZM', 4),
|
|---|
| 5687 |
|
|---|
| 5688 | ('COMPOUNDCURVE', 'CompoundCurve', 2),
|
|---|
| 5689 | ('COMPOUNDCURVE', 'CompoundCurveZ', 3),
|
|---|
| 5690 | ('COMPOUNDCURVEM', 'CompoundCurveM', 3),
|
|---|
| 5691 | ('COMPOUNDCURVE', 'CompoundCurveZM', 4),
|
|---|
| 5692 |
|
|---|
| 5693 | ('CURVEPOLYGON', 'CurvePolygon', 2),
|
|---|
| 5694 | ('CURVEPOLYGON', 'CurvePolygonZ', 3),
|
|---|
| 5695 | ('CURVEPOLYGONM', 'CurvePolygonM', 3),
|
|---|
| 5696 | ('CURVEPOLYGON', 'CurvePolygonZM', 4),
|
|---|
| 5697 |
|
|---|
| 5698 | ('MULTICURVE', 'MultiCurve', 2),
|
|---|
| 5699 | ('MULTICURVE', 'MultiCurveZ', 3),
|
|---|
| 5700 | ('MULTICURVEM', 'MultiCurveM', 3),
|
|---|
| 5701 | ('MULTICURVE', 'MultiCurveZM', 4),
|
|---|
| 5702 |
|
|---|
| 5703 | ('MULTISURFACE', 'MultiSurface', 2),
|
|---|
| 5704 | ('MULTISURFACE', 'MultiSurfaceZ', 3),
|
|---|
| 5705 | ('MULTISURFACEM', 'MultiSurfaceM', 3),
|
|---|
| 5706 | ('MULTISURFACE', 'MultiSurfaceZM', 4),
|
|---|
| 5707 |
|
|---|
| 5708 | ('POLYHEDRALSURFACE', 'PolyhedralSurface', 2),
|
|---|
| 5709 | ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZ', 3),
|
|---|
| 5710 | ('POLYHEDRALSURFACEM', 'PolyhedralSurfaceM', 3),
|
|---|
| 5711 | ('POLYHEDRALSURFACE', 'PolyhedralSurfaceZM', 4),
|
|---|
| 5712 |
|
|---|
| 5713 | ('TRIANGLE', 'Triangle', 2),
|
|---|
| 5714 | ('TRIANGLE', 'TriangleZ', 3),
|
|---|
| 5715 | ('TRIANGLEM', 'TriangleM', 3),
|
|---|
| 5716 | ('TRIANGLE', 'TriangleZM', 4),
|
|---|
| 5717 |
|
|---|
| 5718 | ('TIN', 'Tin', 2),
|
|---|
| 5719 | ('TIN', 'TinZ', 3),
|
|---|
| 5720 | ('TINM', 'TinM', 3),
|
|---|
| 5721 | ('TIN', 'TinZM', 4) )
|
|---|
| 5722 | As g(old_name, new_name, coord_dimension)
|
|---|
| 5723 | WHERE (upper(old_name) = upper($1) OR upper(new_name) = upper($1))
|
|---|
| 5724 | AND coord_dimension = $2;
|
|---|
| 5725 | $$
|
|---|
| 5726 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL _COST_HIGH;
|
|---|
| 5727 |
|
|---|
| 5728 | -- Availability: 2.0.0
|
|---|
| 5729 | -- TODO: Can't deprecate this because UpdateGeometrySRID still uses them
|
|---|
| 5730 | CREATE OR REPLACE FUNCTION postgis_constraint_srid(geomschema text, geomtable text, geomcolumn text) RETURNS integer AS
|
|---|
| 5731 | $$
|
|---|
| 5732 | SELECT replace(replace(split_part(s.consrc, ' = ', 2), ')', ''), '(', '')::integer
|
|---|
| 5733 | FROM pg_class c, pg_namespace n, pg_attribute a
|
|---|
| 5734 | , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5735 | FROM pg_constraint) AS s
|
|---|
| 5736 | WHERE n.nspname = $1
|
|---|
| 5737 | AND c.relname = $2
|
|---|
| 5738 | AND a.attname = $3
|
|---|
| 5739 | AND a.attrelid = c.oid
|
|---|
| 5740 | AND s.connamespace = n.oid
|
|---|
| 5741 | AND s.conrelid = c.oid
|
|---|
| 5742 | AND a.attnum = ANY (s.conkey)
|
|---|
| 5743 | AND s.consrc LIKE '%srid(% = %';
|
|---|
| 5744 | $$
|
|---|
| 5745 | LANGUAGE 'sql' STABLE STRICT _PARALLEL _COST_MEDIUM;
|
|---|
| 5746 |
|
|---|
| 5747 | -- Availability: 2.0.0
|
|---|
| 5748 | -- TODO: Can't deprecate this because UpdateGeometrySRID still uses them
|
|---|
| 5749 | CREATE OR REPLACE FUNCTION postgis_constraint_dims(geomschema text, geomtable text, geomcolumn text) RETURNS integer AS
|
|---|
| 5750 | $$
|
|---|
| 5751 | SELECT replace(split_part(s.consrc, ' = ', 2), ')', '')::integer
|
|---|
| 5752 | FROM pg_class c, pg_namespace n, pg_attribute a
|
|---|
| 5753 | , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5754 | FROM pg_constraint) AS s
|
|---|
| 5755 | WHERE n.nspname = $1
|
|---|
| 5756 | AND c.relname = $2
|
|---|
| 5757 | AND a.attname = $3
|
|---|
| 5758 | AND a.attrelid = c.oid
|
|---|
| 5759 | AND s.connamespace = n.oid
|
|---|
| 5760 | AND s.conrelid = c.oid
|
|---|
| 5761 | AND a.attnum = ANY (s.conkey)
|
|---|
| 5762 | AND s.consrc LIKE '%ndims(% = %';
|
|---|
| 5763 | $$
|
|---|
| 5764 | LANGUAGE 'sql' STABLE STRICT _PARALLEL _COST_MEDIUM;
|
|---|
| 5765 |
|
|---|
| 5766 | -- support function to pull out geometry type from constraint check
|
|---|
| 5767 | -- will return pretty name instead of ugly name
|
|---|
| 5768 | -- Availability: 2.0.0
|
|---|
| 5769 | -- TODO: Can't deprecate this because UpdateGeometrySRID still uses them
|
|---|
| 5770 | CREATE OR REPLACE FUNCTION postgis_constraint_type(geomschema text, geomtable text, geomcolumn text) RETURNS varchar AS
|
|---|
| 5771 | $$
|
|---|
| 5772 | SELECT replace(split_part(s.consrc, '''', 2), ')', '')::varchar
|
|---|
| 5773 | FROM pg_class c, pg_namespace n, pg_attribute a
|
|---|
| 5774 | , (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5775 | FROM pg_constraint) AS s
|
|---|
| 5776 | WHERE n.nspname = $1
|
|---|
| 5777 | AND c.relname = $2
|
|---|
| 5778 | AND a.attname = $3
|
|---|
| 5779 | AND a.attrelid = c.oid
|
|---|
| 5780 | AND s.connamespace = n.oid
|
|---|
| 5781 | AND s.conrelid = c.oid
|
|---|
| 5782 | AND a.attnum = ANY (s.conkey)
|
|---|
| 5783 | AND s.consrc LIKE '%geometrytype(% = %';
|
|---|
| 5784 | $$
|
|---|
| 5785 | LANGUAGE 'sql' STABLE STRICT _PARALLEL _COST_MEDIUM;
|
|---|
| 5786 |
|
|---|
| 5787 | -- Availability: 2.0.0
|
|---|
| 5788 | -- Changed: 2.1.8 significant performance improvement for constraint based columns
|
|---|
| 5789 | -- Changed: 2.2.0 get rid of schema, table, column cast to improve performance
|
|---|
| 5790 | -- Changed: 2.4.0 List also Parent partitioned tables
|
|---|
| 5791 | -- Changed: 2.5.2 replace use of pg_constraint.consrc with pg_get_constraintdef, consrc removed pg12
|
|---|
| 5792 |
|
|---|
| 5793 | CREATE OR REPLACE VIEW geometry_columns AS
|
|---|
| 5794 | SELECT current_database()::character varying(256) AS f_table_catalog,
|
|---|
| 5795 | n.nspname AS f_table_schema,
|
|---|
| 5796 | c.relname AS f_table_name,
|
|---|
| 5797 | a.attname AS f_geometry_column,
|
|---|
| 5798 | COALESCE(postgis_typmod_dims(a.atttypmod), sn.ndims, 2) AS coord_dimension,
|
|---|
| 5799 | COALESCE(NULLIF(postgis_typmod_srid(a.atttypmod), 0), sr.srid, 0) AS srid,
|
|---|
| 5800 | replace(replace(COALESCE(NULLIF(upper(postgis_typmod_type(a.atttypmod)), 'GEOMETRY'::text), st.type, 'GEOMETRY'::text), 'ZM'::text, ''::text), 'Z'::text, ''::text)::character varying(30) AS type
|
|---|
| 5801 | FROM pg_class c
|
|---|
| 5802 | JOIN pg_attribute a ON a.attrelid = c.oid AND NOT a.attisdropped
|
|---|
| 5803 | JOIN pg_namespace n ON c.relnamespace = n.oid
|
|---|
| 5804 | JOIN pg_type t ON a.atttypid = t.oid
|
|---|
| 5805 | LEFT JOIN ( SELECT s.connamespace,
|
|---|
| 5806 | s.conrelid,
|
|---|
| 5807 | s.conkey, replace(split_part(s.consrc, ''''::text, 2), ')'::text, ''::text) As type
|
|---|
| 5808 | FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5809 | FROM pg_constraint) AS s
|
|---|
| 5810 | WHERE s.consrc ~~* '%geometrytype(% = %'::text
|
|---|
| 5811 |
|
|---|
| 5812 | ) st ON st.connamespace = n.oid AND st.conrelid = c.oid AND (a.attnum = ANY (st.conkey))
|
|---|
| 5813 | LEFT JOIN ( SELECT s.connamespace,
|
|---|
| 5814 | s.conrelid,
|
|---|
| 5815 | s.conkey, replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text)::integer As ndims
|
|---|
| 5816 | FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5817 | FROM pg_constraint) AS s
|
|---|
| 5818 | WHERE s.consrc ~~* '%ndims(% = %'::text
|
|---|
| 5819 |
|
|---|
| 5820 | ) sn ON sn.connamespace = n.oid AND sn.conrelid = c.oid AND (a.attnum = ANY (sn.conkey))
|
|---|
| 5821 | LEFT JOIN ( SELECT s.connamespace,
|
|---|
| 5822 | s.conrelid,
|
|---|
| 5823 | s.conkey, replace(replace(split_part(s.consrc, ' = '::text, 2), ')'::text, ''::text), '('::text, ''::text)::integer As srid
|
|---|
| 5824 | FROM (SELECT connamespace, conrelid, conkey, pg_get_constraintdef(oid) As consrc
|
|---|
| 5825 | FROM pg_constraint) AS s
|
|---|
| 5826 | WHERE s.consrc ~~* '%srid(% = %'::text
|
|---|
| 5827 |
|
|---|
| 5828 | ) sr ON sr.connamespace = n.oid AND sr.conrelid = c.oid AND (a.attnum = ANY (sr.conkey))
|
|---|
| 5829 | WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char", 'p'::"char"]))
|
|---|
| 5830 | AND NOT c.relname = 'raster_columns'::name AND t.typname = 'geometry'::name
|
|---|
| 5831 | AND NOT pg_is_other_temp_schema(c.relnamespace) AND has_table_privilege(c.oid, 'SELECT'::text);
|
|---|
| 5832 |
|
|---|
| 5833 | -- TODO: support RETURNING and raise a WARNING
|
|---|
| 5834 | CREATE OR REPLACE RULE geometry_columns_insert AS
|
|---|
| 5835 | ON INSERT TO geometry_columns
|
|---|
| 5836 | DO INSTEAD NOTHING;
|
|---|
| 5837 |
|
|---|
| 5838 | -- TODO: raise a WARNING
|
|---|
| 5839 | CREATE OR REPLACE RULE geometry_columns_update AS
|
|---|
| 5840 | ON UPDATE TO geometry_columns
|
|---|
| 5841 | DO INSTEAD NOTHING;
|
|---|
| 5842 |
|
|---|
| 5843 | -- TODO: raise a WARNING
|
|---|
| 5844 | CREATE OR REPLACE RULE geometry_columns_delete AS
|
|---|
| 5845 | ON DELETE TO geometry_columns
|
|---|
| 5846 | DO INSTEAD NOTHING;
|
|---|
| 5847 |
|
|---|
| 5848 | ---------------------------------------------------------------
|
|---|
| 5849 | -- 3D-functions
|
|---|
| 5850 | ---------------------------------------------------------------
|
|---|
| 5851 |
|
|---|
| 5852 | CREATE OR REPLACE FUNCTION ST_3DDistance(geom1 geometry, geom2 geometry)
|
|---|
| 5853 | RETURNS float8
|
|---|
| 5854 | AS 'MODULE_PATHNAME', 'ST_3DDistance'
|
|---|
| 5855 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5856 | _COST_MEDIUM;
|
|---|
| 5857 |
|
|---|
| 5858 | CREATE OR REPLACE FUNCTION ST_3DMaxDistance(geom1 geometry, geom2 geometry)
|
|---|
| 5859 | RETURNS float8
|
|---|
| 5860 | AS 'MODULE_PATHNAME', 'LWGEOM_maxdistance3d'
|
|---|
| 5861 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5862 | _COST_MEDIUM;
|
|---|
| 5863 |
|
|---|
| 5864 | CREATE OR REPLACE FUNCTION ST_3DClosestPoint(geom1 geometry, geom2 geometry)
|
|---|
| 5865 | RETURNS geometry
|
|---|
| 5866 | AS 'MODULE_PATHNAME', 'LWGEOM_closestpoint3d'
|
|---|
| 5867 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5868 | _COST_MEDIUM;
|
|---|
| 5869 |
|
|---|
| 5870 | CREATE OR REPLACE FUNCTION ST_3DShortestLine(geom1 geometry, geom2 geometry)
|
|---|
| 5871 | RETURNS geometry
|
|---|
| 5872 | AS 'MODULE_PATHNAME', 'LWGEOM_shortestline3d'
|
|---|
| 5873 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5874 | _COST_MEDIUM;
|
|---|
| 5875 |
|
|---|
| 5876 | CREATE OR REPLACE FUNCTION ST_3DLongestLine(geom1 geometry, geom2 geometry)
|
|---|
| 5877 | RETURNS geometry
|
|---|
| 5878 | AS 'MODULE_PATHNAME', 'LWGEOM_longestline3d'
|
|---|
| 5879 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5880 | _COST_MEDIUM;
|
|---|
| 5881 |
|
|---|
| 5882 | ---------------------------------------------------------------
|
|---|
| 5883 | -- SQL-MM
|
|---|
| 5884 | ---------------------------------------------------------------
|
|---|
| 5885 | -- PostGIS equivalent function: ST_ndims(geometry)
|
|---|
| 5886 | CREATE OR REPLACE FUNCTION ST_CoordDim(Geometry geometry)
|
|---|
| 5887 | RETURNS smallint
|
|---|
| 5888 | AS 'MODULE_PATHNAME', 'LWGEOM_ndims'
|
|---|
| 5889 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5890 | _COST_LOW;
|
|---|
| 5891 |
|
|---|
| 5892 | --
|
|---|
| 5893 | -- SQL-MM
|
|---|
| 5894 | --
|
|---|
| 5895 | -- ST_CurveToLine(Geometry geometry, Tolerance float8, ToleranceType integer, Flags integer)
|
|---|
| 5896 | --
|
|---|
| 5897 | -- Converts a given geometry to a linear geometry. Each curveed
|
|---|
| 5898 | -- geometry or segment is converted into a linear approximation using
|
|---|
| 5899 | -- the given tolerance.
|
|---|
| 5900 | --
|
|---|
| 5901 | -- Semantic of tolerance depends on the `toltype` argument, which can be:
|
|---|
| 5902 | -- 0: Tolerance is number of segments per quadrant
|
|---|
| 5903 | -- 1: Tolerance is max distance between curve and line
|
|---|
| 5904 | -- 2: Tolerance is max angle between radii defining line vertices
|
|---|
| 5905 | --
|
|---|
| 5906 | -- Supported flags:
|
|---|
| 5907 | -- 1: Symmetric output (result in same vertices when inverting the curve)
|
|---|
| 5908 | --
|
|---|
| 5909 | -- Availability: 2.4.0
|
|---|
| 5910 | --
|
|---|
| 5911 | CREATE OR REPLACE FUNCTION ST_CurveToLine(geom geometry, tol float8 DEFAULT 32, toltype integer DEFAULT 0, flags integer DEFAULT 0)
|
|---|
| 5912 | RETURNS geometry
|
|---|
| 5913 | AS 'MODULE_PATHNAME', 'ST_CurveToLine'
|
|---|
| 5914 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5915 | _COST_HIGH;
|
|---|
| 5916 |
|
|---|
| 5917 | CREATE OR REPLACE FUNCTION ST_HasArc(Geometry geometry)
|
|---|
| 5918 | RETURNS boolean
|
|---|
| 5919 | AS 'MODULE_PATHNAME', 'LWGEOM_has_arc'
|
|---|
| 5920 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5921 | _COST_LOW;
|
|---|
| 5922 |
|
|---|
| 5923 | CREATE OR REPLACE FUNCTION ST_LineToCurve(Geometry geometry)
|
|---|
| 5924 | RETURNS geometry
|
|---|
| 5925 | AS 'MODULE_PATHNAME', 'LWGEOM_line_desegmentize'
|
|---|
| 5926 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5927 | _COST_HIGH;
|
|---|
| 5928 |
|
|---|
| 5929 | -------------------------------------------------------------------------------
|
|---|
| 5930 | -- SQL/MM - SQL Functions on type ST_Point
|
|---|
| 5931 | -------------------------------------------------------------------------------
|
|---|
| 5932 |
|
|---|
| 5933 | -- PostGIS equivalent function: ST_MakePoint(XCoordinate float8,YCoordinate float8)
|
|---|
| 5934 | CREATE OR REPLACE FUNCTION ST_Point(float8, float8)
|
|---|
| 5935 | RETURNS geometry
|
|---|
| 5936 | AS 'MODULE_PATHNAME', 'LWGEOM_makepoint'
|
|---|
| 5937 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL _COST_LOW;
|
|---|
| 5938 |
|
|---|
| 5939 | -- PostGIS equivalent function: ST_MakePolygon(Geometry geometry)
|
|---|
| 5940 | CREATE OR REPLACE FUNCTION ST_Polygon(geometry, int)
|
|---|
| 5941 | RETURNS geometry
|
|---|
| 5942 | AS $$
|
|---|
| 5943 | SELECT @extschema@.ST_SetSRID(@extschema@.ST_MakePolygon($1), $2)
|
|---|
| 5944 | $$
|
|---|
| 5945 | LANGUAGE 'sql' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 5946 |
|
|---|
| 5947 | -- PostGIS equivalent function: GeomFromWKB(WKB bytea))
|
|---|
| 5948 | -- Note: Defaults to an SRID=-1, not 0 as per SQL/MM specs.
|
|---|
| 5949 | CREATE OR REPLACE FUNCTION ST_WKBToSQL(WKB bytea)
|
|---|
| 5950 | RETURNS geometry
|
|---|
| 5951 | AS 'MODULE_PATHNAME','LWGEOM_from_WKB'
|
|---|
| 5952 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5953 | _COST_LOW;
|
|---|
| 5954 |
|
|---|
| 5955 | ---
|
|---|
| 5956 | -- Linear referencing functions
|
|---|
| 5957 | ---
|
|---|
| 5958 | -- Availability: 2.0.0
|
|---|
| 5959 | CREATE OR REPLACE FUNCTION ST_LocateBetween(Geometry geometry, FromMeasure float8, ToMeasure float8, LeftRightOffset float8 default 0.0)
|
|---|
| 5960 | RETURNS geometry
|
|---|
| 5961 | AS 'MODULE_PATHNAME', 'ST_LocateBetween'
|
|---|
| 5962 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5963 | _COST_MEDIUM;
|
|---|
| 5964 |
|
|---|
| 5965 | -- Availability: 2.0.0
|
|---|
| 5966 | CREATE OR REPLACE FUNCTION ST_LocateAlong(Geometry geometry, Measure float8, LeftRightOffset float8 default 0.0)
|
|---|
| 5967 | RETURNS geometry
|
|---|
| 5968 | AS 'MODULE_PATHNAME', 'ST_LocateAlong'
|
|---|
| 5969 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5970 | _COST_MEDIUM;
|
|---|
| 5971 |
|
|---|
| 5972 | -- Only accepts LINESTRING as parameters.
|
|---|
| 5973 | -- Availability: 1.4.0
|
|---|
| 5974 | CREATE OR REPLACE FUNCTION ST_LocateBetweenElevations(Geometry geometry, FromElevation float8, ToElevation float8)
|
|---|
| 5975 | RETURNS geometry
|
|---|
| 5976 | AS 'MODULE_PATHNAME', 'ST_LocateBetweenElevations'
|
|---|
| 5977 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5978 | _COST_MEDIUM;
|
|---|
| 5979 |
|
|---|
| 5980 | -- Availability: 2.0.0
|
|---|
| 5981 | CREATE OR REPLACE FUNCTION ST_InterpolatePoint(Line geometry, Point geometry)
|
|---|
| 5982 | RETURNS float8
|
|---|
| 5983 | AS 'MODULE_PATHNAME', 'ST_InterpolatePoint'
|
|---|
| 5984 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL
|
|---|
| 5985 | _COST_MEDIUM;
|
|---|
| 5986 |
|
|---|
| 5987 | -- moved to separate file cause its invovled
|
|---|
| 5988 | #include "postgis_brin.sql.in"
|
|---|
| 5989 |
|
|---|
| 5990 | ---------------------------------------------------------------
|
|---|
| 5991 | -- USER CONTRIBUTED
|
|---|
| 5992 | ---------------------------------------------------------------
|
|---|
| 5993 |
|
|---|
| 5994 | -- ST_ConcaveHull and Helper functions starts here --
|
|---|
| 5995 | -----------------------------------------------------------------------
|
|---|
| 5996 | -- Contributed by Regina Obe and Leo Hsu
|
|---|
| 5997 | -- Availability: 2.0.0
|
|---|
| 5998 | -- Changed: 2.5.0
|
|---|
| 5999 | -----------------------------------------------------------------------
|
|---|
| 6000 | CREATE OR REPLACE FUNCTION _st_concavehull(param_inputgeom geometry)
|
|---|
| 6001 | RETURNS geometry AS
|
|---|
| 6002 | $$
|
|---|
| 6003 | DECLARE
|
|---|
| 6004 | vexhull @extschema@.geometry;
|
|---|
| 6005 | var_resultgeom @extschema@.geometry;
|
|---|
| 6006 | var_inputgeom @extschema@.geometry;
|
|---|
| 6007 | vexring @extschema@.geometry;
|
|---|
| 6008 | cavering @extschema@.geometry;
|
|---|
| 6009 | cavept @extschema@.geometry[];
|
|---|
| 6010 | seglength double precision;
|
|---|
| 6011 | var_tempgeom @extschema@.geometry;
|
|---|
| 6012 | scale_factor float := 1;
|
|---|
| 6013 | i integer;
|
|---|
| 6014 | BEGIN
|
|---|
| 6015 | -- First compute the ConvexHull of the geometry
|
|---|
| 6016 | vexhull := @extschema@.ST_ConvexHull(param_inputgeom);
|
|---|
| 6017 | var_inputgeom := param_inputgeom;
|
|---|
| 6018 | --A point really has no concave hull
|
|---|
| 6019 | IF @extschema@.ST_GeometryType(vexhull) = 'ST_Point' OR @extschema@.ST_GeometryType(vexHull) = 'ST_LineString' THEN
|
|---|
| 6020 | RETURN vexhull;
|
|---|
| 6021 | END IF;
|
|---|
| 6022 |
|
|---|
| 6023 | -- convert the hull perimeter to a linestring so we can manipulate individual points
|
|---|
| 6024 | vexring := CASE WHEN @extschema@.ST_GeometryType(vexhull) = 'ST_LineString' THEN vexhull ELSE @extschema@.ST_ExteriorRing(vexhull) END;
|
|---|
| 6025 | IF abs(@extschema@.ST_X(@extschema@.ST_PointN(vexring,1))) < 1 THEN --scale the geometry to prevent stupid precision errors - not sure it works so make low for now
|
|---|
| 6026 | scale_factor := 100;
|
|---|
| 6027 | vexring := @extschema@.ST_Scale(vexring, scale_factor,scale_factor);
|
|---|
| 6028 | var_inputgeom := @extschema@.ST_Scale(var_inputgeom, scale_factor, scale_factor);
|
|---|
| 6029 | --RAISE NOTICE 'Scaling';
|
|---|
| 6030 | END IF;
|
|---|
| 6031 | seglength := @extschema@.ST_Length(vexring)/least(@extschema@.ST_NPoints(vexring)*2,1000) ;
|
|---|
| 6032 |
|
|---|
| 6033 | vexring := @extschema@.ST_Segmentize(vexring, seglength);
|
|---|
| 6034 | -- find the point on the original geom that is closest to each point of the convex hull and make a new linestring out of it.
|
|---|
| 6035 | cavering := @extschema@.ST_Collect(
|
|---|
| 6036 | ARRAY(
|
|---|
| 6037 |
|
|---|
| 6038 | SELECT
|
|---|
| 6039 | @extschema@.ST_ClosestPoint(var_inputgeom, pt ) As the_geom
|
|---|
| 6040 | FROM (
|
|---|
| 6041 | SELECT @extschema@.ST_PointN(vexring, n ) As pt, n
|
|---|
| 6042 | FROM
|
|---|
| 6043 | generate_series(1, @extschema@.ST_NPoints(vexring) ) As n
|
|---|
| 6044 | ) As pt
|
|---|
| 6045 |
|
|---|
| 6046 | )
|
|---|
| 6047 | )
|
|---|
| 6048 | ;
|
|---|
| 6049 |
|
|---|
| 6050 | var_resultgeom := @extschema@.ST_MakeLine(geom)
|
|---|
| 6051 | FROM @extschema@.ST_Dump(cavering) As foo;
|
|---|
| 6052 |
|
|---|
| 6053 | IF @extschema@.ST_IsSimple(var_resultgeom) THEN
|
|---|
| 6054 | var_resultgeom := @extschema@.ST_MakePolygon(var_resultgeom);
|
|---|
| 6055 | --RAISE NOTICE 'is Simple: %', var_resultgeom;
|
|---|
| 6056 | ELSE /** will not result in a valid polygon -- just return convex hull **/
|
|---|
| 6057 | --RAISE NOTICE 'is not Simple: %', var_resultgeom;
|
|---|
| 6058 | var_resultgeom := @extschema@.ST_ConvexHull(var_resultgeom);
|
|---|
| 6059 | END IF;
|
|---|
| 6060 |
|
|---|
| 6061 | IF scale_factor > 1 THEN -- scale the result back
|
|---|
| 6062 | var_resultgeom := @extschema@.ST_Scale(var_resultgeom, 1/scale_factor, 1/scale_factor);
|
|---|
| 6063 | END IF;
|
|---|
| 6064 |
|
|---|
| 6065 | -- make sure result covers original (#3638)
|
|---|
| 6066 | -- Using ST_UnaryUnion since SFCGAL doesn't replace with its own implementation
|
|---|
| 6067 | -- and SFCGAL one chokes for some reason
|
|---|
| 6068 | var_resultgeom := @extschema@.ST_UnaryUnion(@extschema@.ST_Collect(param_inputgeom, var_resultgeom) );
|
|---|
| 6069 | RETURN var_resultgeom;
|
|---|
| 6070 |
|
|---|
| 6071 | END;
|
|---|
| 6072 | $$
|
|---|
| 6073 | LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL _COST_HIGH;
|
|---|
| 6074 |
|
|---|
| 6075 | -- Availability: 2.0.0
|
|---|
| 6076 | -- Changed: 2.5.0
|
|---|
| 6077 | CREATE OR REPLACE FUNCTION ST_ConcaveHull(param_geom geometry, param_pctconvex float, param_allow_holes boolean DEFAULT false) RETURNS geometry AS
|
|---|
| 6078 | $$
|
|---|
| 6079 | DECLARE
|
|---|
| 6080 | var_convhull @extschema@.geometry := @extschema@.ST_ForceSFS(@extschema@.ST_ConvexHull(param_geom));
|
|---|
| 6081 | var_param_geom @extschema@.geometry := @extschema@.ST_ForceSFS(param_geom);
|
|---|
| 6082 | var_initarea float := @extschema@.ST_Area(var_convhull);
|
|---|
| 6083 | var_newarea float := var_initarea;
|
|---|
| 6084 | var_div integer := 6; /** this is the 1/var_div is the percent increase we will allow per geometry to keep speed decent **/
|
|---|
| 6085 | var_tempgeom @extschema@.geometry;
|
|---|
| 6086 | var_tempgeom2 @extschema@.geometry;
|
|---|
| 6087 | var_cent @extschema@.geometry;
|
|---|
| 6088 | var_geoms @extschema@.geometry[4]; /** We will cut the current geometry into 4 triangular quadrants along the centroid/extent **/
|
|---|
| 6089 | var_enline @extschema@.geometry;
|
|---|
| 6090 | var_resultgeom @extschema@.geometry;
|
|---|
| 6091 | var_atempgeoms @extschema@.geometry[];
|
|---|
| 6092 | var_buf float := 1; /** tolerance so that geometries that are right on the extent don't get accidentally clipped off **/
|
|---|
| 6093 | BEGIN
|
|---|
| 6094 | -- We start with convex hull as our base
|
|---|
| 6095 | var_resultgeom := var_convhull;
|
|---|
| 6096 |
|
|---|
| 6097 | IF param_pctconvex = 1 THEN
|
|---|
| 6098 | -- this is the same as asking for the convex hull
|
|---|
| 6099 | return var_resultgeom;
|
|---|
| 6100 | ELSIF @extschema@.ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN -- it is as concave as it is going to get
|
|---|
| 6101 | IF param_allow_holes THEN -- leave the holes
|
|---|
| 6102 | RETURN var_param_geom;
|
|---|
| 6103 | ELSE -- remove the holes
|
|---|
| 6104 | var_resultgeom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_param_geom));
|
|---|
| 6105 | RETURN var_resultgeom;
|
|---|
| 6106 | END IF;
|
|---|
| 6107 | END IF;
|
|---|
| 6108 | IF @extschema@.ST_Dimension(var_resultgeom) > 1 AND param_pctconvex BETWEEN 0 and 0.98 THEN
|
|---|
| 6109 | -- get linestring that forms envelope of geometry
|
|---|
| 6110 | var_enline := @extschema@.ST_Boundary(@extschema@.ST_Envelope(var_param_geom));
|
|---|
| 6111 | var_buf := @extschema@.ST_Length(var_enline)/1000.0;
|
|---|
| 6112 | IF @extschema@.ST_GeometryType(var_param_geom) = 'ST_MultiPoint' AND @extschema@.ST_NumGeometries(var_param_geom) BETWEEN 4 and 200 THEN
|
|---|
| 6113 | -- we make polygons out of points since they are easier to cave in.
|
|---|
| 6114 | -- Note we limit to between 4 and 200 points because this process is slow and gets quadratically slow
|
|---|
| 6115 | var_buf := sqrt(@extschema@.ST_Area(var_convhull)*0.8/(@extschema@.ST_NumGeometries(var_param_geom)*@extschema@.ST_NumGeometries(var_param_geom)));
|
|---|
| 6116 | var_atempgeoms := ARRAY(SELECT geom FROM @extschema@.ST_DumpPoints(var_param_geom));
|
|---|
| 6117 | -- 5 and 10 and just fudge factors
|
|---|
| 6118 | var_tempgeom := @extschema@.ST_Union(ARRAY(SELECT geom
|
|---|
| 6119 | FROM (
|
|---|
| 6120 | -- fuse near neighbors together
|
|---|
| 6121 | SELECT DISTINCT ON (i) i, @extschema@.ST_Distance(var_atempgeoms[i],var_atempgeoms[j]), @extschema@.ST_Buffer(@extschema@.ST_MakeLine(var_atempgeoms[i], var_atempgeoms[j]) , var_buf*5, 'quad_segs=3') As geom
|
|---|
| 6122 | FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
|
|---|
| 6123 | INNER JOIN generate_series(1,array_upper(var_atempgeoms, 1)) As j
|
|---|
| 6124 | ON (
|
|---|
| 6125 | NOT @extschema@.ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
|
|---|
| 6126 | AND @extschema@.ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
|
|---|
| 6127 | )
|
|---|
| 6128 | UNION ALL
|
|---|
| 6129 | -- catch the ones with no near neighbors
|
|---|
| 6130 | SELECT i, 0, @extschema@.ST_Buffer(var_atempgeoms[i] , var_buf*10, 'quad_segs=3') As geom
|
|---|
| 6131 | FROM generate_series(1,array_upper(var_atempgeoms, 1)) As i
|
|---|
| 6132 | LEFT JOIN generate_series(ceiling(array_upper(var_atempgeoms,1)/2)::integer,array_upper(var_atempgeoms, 1)) As j
|
|---|
| 6133 | ON (
|
|---|
| 6134 | NOT @extschema@.ST_Intersects(var_atempgeoms[i],var_atempgeoms[j])
|
|---|
| 6135 | AND @extschema@.ST_DWithin(var_atempgeoms[i],var_atempgeoms[j], var_buf*10)
|
|---|
| 6136 | )
|
|---|
| 6137 | WHERE j IS NULL
|
|---|
| 6138 | ORDER BY 1, 2
|
|---|
| 6139 | ) As foo ) );
|
|---|
| 6140 | IF @extschema@.ST_IsValid(var_tempgeom) AND @extschema@.ST_GeometryType(var_tempgeom) = 'ST_Polygon' THEN
|
|---|
| 6141 | var_tempgeom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_tempgeom, var_convhull));
|
|---|
| 6142 | IF param_allow_holes THEN
|
|---|
| 6143 | var_param_geom := var_tempgeom;
|
|---|
| 6144 | ELSIF @extschema@.ST_GeometryType(var_tempgeom) = 'ST_Polygon' THEN
|
|---|
| 6145 | var_param_geom := @extschema@.ST_ForceSFS(@extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_tempgeom)));
|
|---|
| 6146 | ELSE
|
|---|
| 6147 | var_param_geom := @extschema@.ST_ForceSFS(@extschema@.ST_ConvexHull(var_param_geom));
|
|---|
| 6148 | END IF;
|
|---|
| 6149 | -- make sure result covers original (#3638)
|
|---|
| 6150 | var_param_geom := @extschema@.ST_Union(param_geom, var_param_geom);
|
|---|
| 6151 | return var_param_geom;
|
|---|
| 6152 | ELSIF @extschema@.ST_IsValid(var_tempgeom) THEN
|
|---|
| 6153 | var_param_geom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_tempgeom, var_convhull));
|
|---|
| 6154 | END IF;
|
|---|
| 6155 | END IF;
|
|---|
| 6156 |
|
|---|
| 6157 | IF @extschema@.ST_GeometryType(var_param_geom) = 'ST_Polygon' THEN
|
|---|
| 6158 | IF NOT param_allow_holes THEN
|
|---|
| 6159 | var_param_geom := @extschema@.ST_ForceSFS(@extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_param_geom)));
|
|---|
| 6160 | END IF;
|
|---|
| 6161 | -- make sure result covers original (#3638)
|
|---|
| 6162 | --var_param_geom := @extschema@.ST_Union(param_geom, var_param_geom);
|
|---|
| 6163 | return var_param_geom;
|
|---|
| 6164 | END IF;
|
|---|
| 6165 | var_cent := @extschema@.ST_Centroid(var_param_geom);
|
|---|
| 6166 | IF (@extschema@.ST_XMax(var_enline) - @extschema@.ST_XMin(var_enline) ) > var_buf AND (@extschema@.ST_YMax(var_enline) - @extschema@.ST_YMin(var_enline) ) > var_buf THEN
|
|---|
| 6167 | IF @extschema@.ST_Dwithin(@extschema@.ST_Centroid(var_convhull) , @extschema@.ST_Centroid(@extschema@.ST_Envelope(var_param_geom)), var_buf/2) THEN
|
|---|
| 6168 | -- If the geometric dimension is > 1 and the object is symettric (cutting at centroid will not work -- offset a bit)
|
|---|
| 6169 | var_cent := @extschema@.ST_Translate(var_cent, (@extschema@.ST_XMax(var_enline) - @extschema@.ST_XMin(var_enline))/1000, (@extschema@.ST_YMAX(var_enline) - @extschema@.ST_YMin(var_enline))/1000);
|
|---|
| 6170 | ELSE
|
|---|
| 6171 | -- uses closest point on geometry to centroid. I can't explain why we are doing this
|
|---|
| 6172 | var_cent := @extschema@.ST_ClosestPoint(var_param_geom,var_cent);
|
|---|
| 6173 | END IF;
|
|---|
| 6174 | IF @extschema@.ST_DWithin(var_cent, var_enline,var_buf) THEN
|
|---|
| 6175 | var_cent := @extschema@.ST_centroid(@extschema@.ST_Envelope(var_param_geom));
|
|---|
| 6176 | END IF;
|
|---|
| 6177 | -- break envelope into 4 triangles about the centroid of the geometry and returned the clipped geometry in each quadrant
|
|---|
| 6178 | FOR i in 1 .. 4 LOOP
|
|---|
| 6179 | var_geoms[i] := @extschema@.ST_MakePolygon(@extschema@.ST_MakeLine(ARRAY[@extschema@.ST_PointN(var_enline,i), @extschema@.ST_PointN(var_enline,i+1), var_cent, @extschema@.ST_PointN(var_enline,i)]));
|
|---|
| 6180 | var_geoms[i] := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_param_geom, @extschema@.ST_Buffer(var_geoms[i],var_buf)));
|
|---|
| 6181 | IF @extschema@.ST_IsValid(var_geoms[i]) THEN
|
|---|
| 6182 |
|
|---|
| 6183 | ELSE
|
|---|
| 6184 | var_geoms[i] := @extschema@.ST_BuildArea(@extschema@.ST_MakeLine(ARRAY[@extschema@.ST_PointN(var_enline,i), @extschema@.ST_PointN(var_enline,i+1), var_cent, @extschema@.ST_PointN(var_enline,i)]));
|
|---|
| 6185 | END IF;
|
|---|
| 6186 | END LOOP;
|
|---|
| 6187 | var_tempgeom := @extschema@.ST_Union(ARRAY[@extschema@.ST_ConvexHull(var_geoms[1]), @extschema@.ST_ConvexHull(var_geoms[2]) , @extschema@.ST_ConvexHull(var_geoms[3]), @extschema@.ST_ConvexHull(var_geoms[4])]);
|
|---|
| 6188 | --RAISE NOTICE 'Curr vex % ', @extschema@.ST_AsText(var_tempgeom);
|
|---|
| 6189 | IF @extschema@.ST_Area(var_tempgeom) <= var_newarea AND @extschema@.ST_IsValid(var_tempgeom) THEN --AND @extschema@.ST_GeometryType(var_tempgeom) ILIKE '%Polygon'
|
|---|
| 6190 |
|
|---|
| 6191 | var_tempgeom := @extschema@.ST_Buffer(@extschema@.ST_ConcaveHull(var_geoms[1],least(param_pctconvex + param_pctconvex/var_div),true),var_buf, 'quad_segs=2');
|
|---|
| 6192 | FOR i IN 1 .. 4 LOOP
|
|---|
| 6193 | var_geoms[i] := @extschema@.ST_Buffer(@extschema@.ST_ConcaveHull(var_geoms[i],least(param_pctconvex + param_pctconvex/var_div),true), var_buf, 'quad_segs=2');
|
|---|
| 6194 | IF @extschema@.ST_IsValid(var_geoms[i]) Then
|
|---|
| 6195 | var_tempgeom := @extschema@.ST_Union(var_tempgeom, var_geoms[i]);
|
|---|
| 6196 | ELSE
|
|---|
| 6197 | RAISE NOTICE 'Not valid % %', i, @extschema@.ST_AsText(var_tempgeom);
|
|---|
| 6198 | var_tempgeom := @extschema@.ST_Union(var_tempgeom, @extschema@.ST_ConvexHull(var_geoms[i]));
|
|---|
| 6199 | END IF;
|
|---|
| 6200 | END LOOP;
|
|---|
| 6201 |
|
|---|
| 6202 | --RAISE NOTICE 'Curr concave % ', @extschema@.ST_AsText(var_tempgeom);
|
|---|
| 6203 | IF @extschema@.ST_IsValid(var_tempgeom) THEN
|
|---|
| 6204 | var_resultgeom := var_tempgeom;
|
|---|
| 6205 | END IF;
|
|---|
| 6206 | var_newarea := @extschema@.ST_Area(var_resultgeom);
|
|---|
| 6207 | ELSIF @extschema@.ST_IsValid(var_tempgeom) THEN
|
|---|
| 6208 | var_resultgeom := var_tempgeom;
|
|---|
| 6209 | END IF;
|
|---|
| 6210 |
|
|---|
| 6211 | IF @extschema@.ST_NumGeometries(var_resultgeom) > 1 THEN
|
|---|
| 6212 | var_tempgeom := @extschema@._ST_ConcaveHull(var_resultgeom);
|
|---|
| 6213 | IF @extschema@.ST_IsValid(var_tempgeom) AND @extschema@.ST_GeometryType(var_tempgeom) ILIKE 'ST_Polygon' THEN
|
|---|
| 6214 | var_resultgeom := var_tempgeom;
|
|---|
| 6215 | ELSE
|
|---|
| 6216 | var_resultgeom := @extschema@.ST_Buffer(var_tempgeom,var_buf, 'quad_segs=2');
|
|---|
| 6217 | END IF;
|
|---|
| 6218 | END IF;
|
|---|
| 6219 | IF param_allow_holes = false THEN
|
|---|
| 6220 | -- only keep exterior ring since we do not want holes
|
|---|
| 6221 | var_resultgeom := @extschema@.ST_MakePolygon(@extschema@.ST_ExteriorRing(var_resultgeom));
|
|---|
| 6222 | END IF;
|
|---|
| 6223 | ELSE
|
|---|
| 6224 | var_resultgeom := @extschema@.ST_Buffer(var_resultgeom,var_buf);
|
|---|
| 6225 | END IF;
|
|---|
| 6226 | var_resultgeom := @extschema@.ST_ForceSFS(@extschema@.ST_Intersection(var_resultgeom, @extschema@.ST_ConvexHull(var_param_geom)));
|
|---|
| 6227 | ELSE
|
|---|
| 6228 | -- dimensions are too small to cut
|
|---|
| 6229 | var_resultgeom := @extschema@._ST_ConcaveHull(var_param_geom);
|
|---|
| 6230 | END IF;
|
|---|
| 6231 |
|
|---|
| 6232 | RETURN var_resultgeom;
|
|---|
| 6233 | END;
|
|---|
| 6234 | $$
|
|---|
| 6235 | LANGUAGE 'plpgsql' IMMUTABLE STRICT _PARALLEL _COST_HIGH;
|
|---|
| 6236 | -- ST_ConcaveHull and Helper functions end here --
|
|---|
| 6237 |
|
|---|
| 6238 | -----------------------------------------------------------------------
|
|---|
| 6239 | -- X3D OUTPUT
|
|---|
| 6240 | -----------------------------------------------------------------------
|
|---|
| 6241 | -- _ST_AsX3D(version, geom, precision, option, attribs)
|
|---|
| 6242 | CREATE OR REPLACE FUNCTION _ST_AsX3D(int4, geometry, int4, int4, text)
|
|---|
| 6243 | RETURNS TEXT
|
|---|
| 6244 | AS 'MODULE_PATHNAME','LWGEOM_asX3D'
|
|---|
| 6245 | LANGUAGE 'c' IMMUTABLE _PARALLEL;
|
|---|
| 6246 |
|
|---|
| 6247 | -- ST_AsX3D(geom, precision, options)
|
|---|
| 6248 | CREATE OR REPLACE FUNCTION ST_AsX3D(geom geometry, maxdecimaldigits integer DEFAULT 15, options integer DEFAULT 0)
|
|---|
| 6249 | RETURNS TEXT
|
|---|
| 6250 | AS $$SELECT @extschema@._ST_AsX3D(3,$1,$2,$3,'');$$
|
|---|
| 6251 | LANGUAGE 'sql' IMMUTABLE _PARALLEL;
|
|---|
| 6252 |
|
|---|
| 6253 | -----------------------------------------------------------------------
|
|---|
| 6254 | -- ST_Angle
|
|---|
| 6255 | -----------------------------------------------------------------------
|
|---|
| 6256 | -- Availability: 2.3.0
|
|---|
| 6257 | -- has to be here because need ST_StartPoint
|
|---|
| 6258 | CREATE OR REPLACE FUNCTION ST_Angle(line1 geometry, line2 geometry)
|
|---|
| 6259 | RETURNS float8 AS 'SELECT ST_Angle(St_StartPoint($1), ST_EndPoint($1), St_StartPoint($2), ST_EndPoint($2))'
|
|---|
| 6260 | LANGUAGE 'sql' IMMUTABLE STRICT;
|
|---|
| 6261 |
|
|---|
| 6262 | -- make views and spatial_ref_sys public viewable --
|
|---|
| 6263 | GRANT SELECT ON TABLE geography_columns TO public;
|
|---|
| 6264 | GRANT SELECT ON TABLE geometry_columns TO public;
|
|---|
| 6265 | GRANT SELECT ON TABLE spatial_ref_sys TO public;
|
|---|
| 6266 |
|
|---|
| 6267 | -- Availability: 3.0.0
|
|---|
| 6268 | CREATE OR REPLACE FUNCTION ST_3DLineInterpolatePoint(geometry, float8)
|
|---|
| 6269 | RETURNS geometry
|
|---|
| 6270 | AS 'MODULE_PATHNAME', 'ST_3DLineInterpolatePoint'
|
|---|
| 6271 | LANGUAGE 'c' IMMUTABLE STRICT _PARALLEL;
|
|---|
| 6272 |
|
|---|
| 6273 |
|
|---|
| 6274 | -- moved to separate file cause its invovled
|
|---|
| 6275 | #include "postgis_spgist.sql.in"
|
|---|
| 6276 |
|
|---|
| 6277 | COMMIT;
|
|---|