-- GiST index OPERATOR support functions
------------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION st_overleft(raster, raster)
+CREATE OR REPLACE FUNCTION raster_overleft(raster, raster)
RETURNS bool
AS 'select $1::geometry &< $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_overright(raster, raster)
+CREATE OR REPLACE FUNCTION raster_overright(raster, raster)
RETURNS bool
AS 'select $1::geometry &> $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_left(raster, raster)
+CREATE OR REPLACE FUNCTION raster_left(raster, raster)
RETURNS bool
AS 'select $1::geometry << $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_right(raster, raster)
+CREATE OR REPLACE FUNCTION raster_right(raster, raster)
RETURNS bool
AS 'select $1::geometry >> $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_overabove(raster, raster)
+CREATE OR REPLACE FUNCTION raster_overabove(raster, raster)
RETURNS bool
AS 'select $1::geometry |&> $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_overbelow(raster, raster)
+CREATE OR REPLACE FUNCTION raster_overbelow(raster, raster)
RETURNS bool
AS 'select $1::geometry &<| $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_above(raster, raster)
+CREATE OR REPLACE FUNCTION raster_above(raster, raster)
RETURNS bool
AS 'select $1::geometry |>> $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_below(raster, raster)
+CREATE OR REPLACE FUNCTION raster_below(raster, raster)
RETURNS bool
AS 'select $1::geometry <<| $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_same(raster, raster)
+CREATE OR REPLACE FUNCTION raster_same(raster, raster)
RETURNS bool
AS 'select $1::geometry ~= $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_contained(raster, raster)
+CREATE OR REPLACE FUNCTION raster_contained(raster, raster)
RETURNS bool
AS 'select $1::geometry @ $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_contain(raster, raster)
+CREATE OR REPLACE FUNCTION raster_contain(raster, raster)
RETURNS bool
AS 'select $1::geometry ~ $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
-CREATE OR REPLACE FUNCTION st_overlap(raster, raster)
+CREATE OR REPLACE FUNCTION raster_overlap(raster, raster)
RETURNS bool
AS 'select $1::geometry && $2::geometry'
LANGUAGE 'SQL' IMMUTABLE STRICT;
------------------------------------------------------------------------------
CREATE OPERATOR << (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_left,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_left,
COMMUTATOR = '>>',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR &< (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_overleft,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_overleft,
COMMUTATOR = '&>',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR <<| (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_below,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_below,
COMMUTATOR = '|>>',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR &<| (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_overbelow,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_overbelow,
COMMUTATOR = '|&>',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR && (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_overlap,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_overlap,
COMMUTATOR = '&&',
RESTRICT = contsel, JOIN = contjoinsel
);
CREATE OPERATOR &> (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_overright,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_overright,
COMMUTATOR = '&<',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR >> (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_right,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_right,
COMMUTATOR = '<<',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR |&> (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_overabove,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_overabove,
COMMUTATOR = '&<|',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR |>> (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_above,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_above,
COMMUTATOR = '<<|',
RESTRICT = positionsel, JOIN = positionjoinsel
);
CREATE OPERATOR ~= (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_same,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_same,
COMMUTATOR = '~=',
RESTRICT = eqsel, JOIN = eqjoinsel
);
CREATE OPERATOR @ (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_contained,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_contained,
COMMUTATOR = '~',
RESTRICT = contsel, JOIN = contjoinsel
);
CREATE OPERATOR ~ (
- LEFTARG = raster, RIGHTARG = raster, PROCEDURE = st_contain,
+ LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_contain,
COMMUTATOR = '@',
RESTRICT = contsel, JOIN = contjoinsel
);
-- Drop obsolete functions
-- (which fully obsolete, changed to take default args, or outp params changed) --
+-- GIST operator functions
+/* commented out for Regina's consideration
+DROP OPERATOR IF EXISTS << (raster, raster);
+DROP FUNCTION IF EXISTS st_left(raster, raster);
+DROP OPERATOR IF EXISTS &< (raster, raster);
+DROP FUNCTION IF EXISTS st_overleft(raster, raster);
+DROP OPERATOR IF EXISTS <<| (raster, raster);
+DROP FUNCTION IF EXISTS st_below(raster, raster);
+DROP OPERATOR IF EXISTS &<| (raster, raster);
+DROP FUNCTION IF EXISTS st_overbelow(raster, raster);
+DROP OPERATOR IF EXISTS && (raster, raster);
+DROP FUNCTION IF EXISTS st_overlap(raster, raster);
+DROP OPERATOR IF EXISTS &> (raster, raster);
+DROP FUNCTION IF EXISTS st_overright(raster, raster);
+DROP OPERATOR IF EXISTS >> (raster, raster);
+DROP FUNCTION IF EXISTS st_right(raster, raster);
+DROP OPERATOR IF EXISTS |&> (raster, raster);
+DROP FUNCTION IF EXISTS st_overabove(raster, raster);
+DROP OPERATOR IF EXISTS |>> (raster, raster);
+DROP FUNCTION IF EXISTS st_above(raster, raster);
+DROP OPERATOR IF EXISTS ~= (raster, raster);
+DROP FUNCTION IF EXISTS st_same(raster, raster);
+DROP OPERATOR IF EXISTS @ (raster, raster);
+DROP FUNCTION IF EXISTS st_contained(raster, raster);
+DROP OPERATOR IF EXISTS ~ (raster, raster);
+DROP FUNCTION IF EXISTS st_contain(raster, raster);
+*/
+
-- drop box2d
DROP CAST IF EXISTS (raster AS box2d);
DROP FUNCTION IF EXISTS box2d(raster);
-----------------------------------------------------------------------
-----------------------------------------------------------------------
--- st_above
+-- raster_above
-----------------------------------------------------------------------
-SELECT 'st_above(X, query(1,1))' as op,
+SELECT 'raster_above(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_above(a.tile, b.tile);
+ AND raster_above(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test |>> above
-st_above(X, query(1,1))|30|0|9|7|9|BOX(-100 40,100 100)
+raster_above(X, query(1,1))|30|0|9|7|9|BOX(-100 40,100 100)
X |>> query(1,1)|30|0|9|7|9|BOX(-100 40,100 100)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_below
+-- raster_below
-----------------------------------------------------------------------
-SELECT 'st_below(X, query(1,1))' as op,
+SELECT 'raster_below(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_below(a.tile, b.tile);
+ AND raster_below(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test <<| operator (below)
-st_below(X, query(1,1))|30|0|9|0|2|BOX(-100 -100,100 -40)
+raster_below(X, query(1,1))|30|0|9|0|2|BOX(-100 -100,100 -40)
X <<| query(1,1)|30|0|9|0|2|BOX(-100 -100,100 -40)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_contain
+-- raster_contain
-----------------------------------------------------------------------
-SELECT 'st_contain(query(1,1), X)' as op,
+SELECT 'raster_contain(query(1,1), X)' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_contain(b.tile, a.tile);
+ AND raster_contain(b.tile, a.tile);
-----------------------------------------------------------------------
-- Test ~ operator (contains)
-st_contain(query(1,1), X)|4|4|5|4|5|BOX(-20 -20,20 20)
+raster_contain(query(1,1), X)|4|4|5|4|5|BOX(-20 -20,20 20)
query(1,1) ~ X|4|4|5|4|5|BOX(-20 -20,20 20)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_contained
+-- raster_contained
-----------------------------------------------------------------------
-SELECT 'st_contained(X, query(1,1))' as op,
+SELECT 'raster_contained(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_contained(a.tile, b.tile);
+ AND raster_contained(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test @ operator (contained by)
-st_contained(X, query(1,1))|4|4|5|4|5|BOX(-20 -20,20 20)
+raster_contained(X, query(1,1))|4|4|5|4|5|BOX(-20 -20,20 20)
X @ query(1,1)|4|4|5|4|5|BOX(-20 -20,20 20)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_left
+-- raster_left
-----------------------------------------------------------------------
-SELECT 'st_left(X, query(1,1))' as op,
+SELECT 'raster_left(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_left(a.tile, b.tile);
+ AND raster_left(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test << operator (left)
-st_left(X, query(1,1))|30|0|2|0|9|BOX(-100 -100,-40 100)
+raster_left(X, query(1,1))|30|0|2|0|9|BOX(-100 -100,-40 100)
X << query(1,1)|30|0|2|0|9|BOX(-100 -100,-40 100)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_overabove
+-- raster_overabove
-----------------------------------------------------------------------
-SELECT 'st_overabove(X, query(1,1))' as op,
+SELECT 'raster_overabove(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_overabove(a.tile, b.tile);
+ AND raster_overabove(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test |&> operator (overabove)
-st_overabove(X, query(1,1))|60|0|9|4|9|BOX(-100 -20,100 100)
+raster_overabove(X, query(1,1))|60|0|9|4|9|BOX(-100 -20,100 100)
X |&> query(1,1)|60|0|9|4|9|BOX(-100 -20,100 100)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_overbelow
+-- raster_overbelow
-----------------------------------------------------------------------
-SELECT 'st_overbelow(X, query(1,1))' as op,
+SELECT 'raster_overbelow(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_overbelow(a.tile, b.tile);
+ AND raster_overbelow(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test &<| operator (overbelow)
-st_overbelow(X, query(1,1))|60|0|9|0|5|BOX(-100 -100,100 20)
+raster_overbelow(X, query(1,1))|60|0|9|0|5|BOX(-100 -100,100 20)
X &<| query(1,1)|60|0|9|0|5|BOX(-100 -100,100 20)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_overlap
+-- raster_overlap
-----------------------------------------------------------------------
-SELECT 'st_overlap(X, query(1,1))' as op,
+SELECT 'raster_overlap(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_overlap(a.tile, b.tile);
+ AND raster_overlap(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test && operator (overlap)
-st_overlap(X, query(1,1))|16|3|6|3|6|BOX(-40 -40,40 40)
+raster_overlap(X, query(1,1))|16|3|6|3|6|BOX(-40 -40,40 40)
X && query(1,1)|16|3|6|3|6|BOX(-40 -40,40 40)
-----------------------------------------------------------------------
-----------------------------------------------------------------------
--- st_overleft
+-- raster_overleft
-----------------------------------------------------------------------
-SELECT 'st_overleft(X, query(1,1))' as op,
+SELECT 'raster_overleft(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_overleft(a.tile, b.tile);
+ AND raster_overleft(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test &< operator (overleft)
-st_overleft(X, query(1,1))|60|0|5|0|9|BOX(-100 -100,20 100)
+raster_overleft(X, query(1,1))|60|0|5|0|9|BOX(-100 -100,20 100)
X &< query(1,1)|60|0|5|0|9|BOX(-100 -100,20 100)
-----------------------------------------------------------------------
-----------------------------------------------------------------------
--- st_overright
+-- raster_overright
-----------------------------------------------------------------------
-SELECT 'st_overright(X, query(1,1))' as op,
+SELECT 'raster_overright(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_overright(a.tile, b.tile);
+ AND raster_overright(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test &> operator (overright)
-st_overright(X, query(1,1))|60|4|9|0|9|BOX(-20 -100,100 100)
+raster_overright(X, query(1,1))|60|4|9|0|9|BOX(-20 -100,100 100)
X &> query(1,1)|60|4|9|0|9|BOX(-20 -100,100 100)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_right
+-- raster_right
-----------------------------------------------------------------------
-SELECT 'st_right(X, query(1,1))' as op,
+SELECT 'raster_right(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_right(a.tile, b.tile);
+ AND raster_right(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test >> operator (right)
-st_right(X, query(1,1))|30|7|9|0|9|BOX(40 -100,100 100)
+raster_right(X, query(1,1))|30|7|9|0|9|BOX(40 -100,100 100)
X >> query(1,1)|30|7|9|0|9|BOX(40 -100,100 100)
-----------------------------------------------------------------------
-------------------------------------------------------------------
--- st_same
+-- raster_same
-----------------------------------------------------------------------
-SELECT 'st_same(X, query(1,1))' as op,
+SELECT 'raster_same(X, query(1,1))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_query_test b
WHERE b.x = 1 and b.y = 1
- AND st_same(a.tile, b.tile);
+ AND raster_same(a.tile, b.tile);
-SELECT 'st_same(X, query(7,7))' as op,
+SELECT 'raster_same(X, query(7,7))' as op,
count(a.y),
min(a.x) as xmin,
max(a.x) as xmax,
st_extent(a.tile)
FROM rt_gist_grid_test a, rt_gist_grid_test b
WHERE b.x = 7 and b.y = 7
- AND st_same(a.tile, b.tile);
+ AND raster_same(a.tile, b.tile);
-----------------------------------------------------------------------
-- Test ~= operator (same)
-st_same(X, query(1,1))|0|||||
-st_same(X, query(7,7))|1|7|7|7|7|BOX(40 40,60 60)
+raster_same(X, query(1,1))|0|||||
+raster_same(X, query(7,7))|1|7|7|7|7|BOX(40 40,60 60)
X ~= query(1,1)|0|||||
X ~= tile(7,7)|1|7|7|7|7|BOX(40 40,60 60)