]> granicus.if.org Git - postgis/commitdiff
Added regression tests for ST_Within(raster, raster). Ticket is #1923.
authorBborie Park <bkpark at ucdavis.edu>
Mon, 23 Jul 2012 17:50:23 +0000 (17:50 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Mon, 23 Jul 2012 17:50:23 +0000 (17:50 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@10099 b70326c6-7e19-0410-871a-916f4a2858ee

raster/test/regress/Makefile.in
raster/test/regress/rt_within.sql [new file with mode: 0644]
raster/test/regress/rt_within_expected [new file with mode: 0644]

index c6fbadde66010956edec445f6fc076f1f0d2bde0..225cefd6039fecd208db3ce9b6faab9429a8cf07 100644 (file)
@@ -128,6 +128,7 @@ TEST_SREL = \
        rt_overlaps \
        rt_touches \
        rt_contains \
+       rt_within \
        rt_samealignment
        
 TEST_BUGS = \
diff --git a/raster/test/regress/rt_within.sql b/raster/test/regress/rt_within.sql
new file mode 100644 (file)
index 0000000..500a44f
--- /dev/null
@@ -0,0 +1,199 @@
+SET client_min_messages TO warning;
+
+DROP TABLE IF EXISTS raster_within_rast;
+CREATE TABLE raster_within_rast (
+       rid integer,
+       rast raster
+);
+CREATE OR REPLACE FUNCTION make_test_raster(
+       rid integer,
+       width integer DEFAULT 2, height integer DEFAULT 2,
+       ul_x double precision DEFAULT 0, ul_y double precision DEFAULT 0,
+       skew_x double precision DEFAULT 0, skew_y double precision DEFAULT 0
+)
+       RETURNS void
+       AS $$
+       DECLARE
+               x int;
+               y int;
+               rast raster;
+       BEGIN
+               rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, 1, skew_x, skew_y, 0);
+               rast := ST_AddBand(rast, 1, '8BUI', 1, 0);
+
+
+               INSERT INTO raster_within_rast VALUES (rid, rast);
+
+               RETURN;
+       END;
+       $$ LANGUAGE 'plpgsql';
+SELECT make_test_raster(0, 2, 2, -1, -1);
+SELECT make_test_raster(1, 2, 2);
+SELECT make_test_raster(2, 3, 3);
+DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision);
+
+INSERT INTO raster_within_rast VALUES (10, (
+       SELECT
+               ST_SetValue(rast, 1, 1, 1, 0)
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (11, (
+       SELECT
+               ST_SetValue(rast, 1, 2, 1, 0)
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (12, (
+       SELECT
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_SetValue(rast, 1, 1, 1, 0),
+                               1, 2, 1, 0
+                       ),
+                       1, 1, 2, 0
+               )
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (13, (
+       SELECT
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_SetValue(
+                                       ST_SetValue(rast, 1, 1, 1, 0),
+                                       1, 2, 1, 0
+                               ),
+                               1, 1, 2, 0
+                       ),
+                       1, 2, 2, 0
+               )
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (14, (
+       SELECT
+               ST_SetUpperLeft(rast, 2, 0)
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (15, (
+       SELECT
+               ST_SetScale(
+                       ST_SetUpperLeft(rast, 0.1, 0.1),
+                       0.4, 0.4
+               )
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+INSERT INTO raster_within_rast VALUES (16, (
+       SELECT
+               ST_SetScale(
+                       ST_SetUpperLeft(rast, -0.1, 0.1),
+                       0.4, 0.4
+               )
+       FROM raster_within_rast
+       WHERE rid = 1
+));
+
+INSERT INTO raster_within_rast VALUES (20, (
+       SELECT
+               ST_SetUpperLeft(rast, -2, -2)
+       FROM raster_within_rast
+       WHERE rid = 2
+));
+INSERT INTO raster_within_rast VALUES (21, (
+       SELECT
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_SetValue(rast, 1, 1, 1, 0),
+                               1, 2, 2, 0
+                       ),
+                       1, 3, 3, 0
+               )
+       FROM raster_within_rast
+       WHERE rid = 20
+));
+INSERT INTO raster_within_rast VALUES (22, (
+       SELECT
+               ST_SetValue(
+                       ST_SetValue(
+                               rast, 1, 3, 2, 0
+                       ),
+                       1, 2, 3, 0
+               )
+       FROM raster_within_rast
+       WHERE rid = 21
+));
+INSERT INTO raster_within_rast VALUES (23, (
+       SELECT
+               ST_SetValue(
+                       ST_SetValue(
+                               rast, 1, 3, 1, 0
+                       ),
+                       1, 1, 3, 0
+               )
+       FROM raster_within_rast
+       WHERE rid = 22
+));
+
+INSERT INTO raster_within_rast VALUES (30, (
+       SELECT
+               ST_SetSkew(rast, -0.5, 0.5)
+       FROM raster_within_rast
+       WHERE rid = 2
+));
+INSERT INTO raster_within_rast VALUES (31, (
+       SELECT
+               ST_SetSkew(rast, -1, 1)
+       FROM raster_within_rast
+       WHERE rid = 2
+));
+INSERT INTO raster_within_rast VALUES (32, (
+       SELECT
+               ST_SetSkew(rast, 1, -1)
+       FROM raster_within_rast
+       WHERE rid = 2
+));
+
+SELECT
+       '1.1',
+       r1.rid,
+       r2.rid,
+       ST_Within(r1.rast, NULL, r2.rast, NULL)
+FROM raster_within_rast r1
+JOIN raster_within_rast r2
+       ON r1.rid != r2.rid
+WHERE r1.rid = 0;
+
+SELECT
+       '1.2',
+       r1.rid,
+       r2.rid,
+       ST_Within(r1.rast, 1, r2.rast, 1)
+FROM raster_within_rast r1
+JOIN raster_within_rast r2
+       ON r1.rid != r2.rid
+WHERE r1.rid = 0;
+
+SELECT
+       '1.3',
+       r1.rid,
+       r2.rid,
+       ST_Within(r1.rast, NULL, r2.rast, NULL)
+FROM raster_within_rast r1
+JOIN raster_within_rast r2
+       ON r1.rid != r2.rid
+WHERE r2.rid = 0;
+
+SELECT
+       '1.4',
+       r1.rid,
+       r2.rid,
+       ST_Within(r1.rast, 1, r2.rast, 1)
+FROM raster_within_rast r1
+JOIN raster_within_rast r2
+       ON r1.rid != r2.rid
+WHERE r2.rid = 0;
+
+DROP TABLE IF EXISTS raster_within_rast;
diff --git a/raster/test/regress/rt_within_expected b/raster/test/regress/rt_within_expected
new file mode 100644 (file)
index 0000000..40290f4
--- /dev/null
@@ -0,0 +1,64 @@
+1.1|0|1|f
+1.1|0|2|f
+1.1|0|10|f
+1.1|0|11|f
+1.1|0|12|f
+1.1|0|13|f
+1.1|0|14|f
+1.1|0|15|f
+1.1|0|16|f
+1.1|0|20|t
+1.1|0|21|t
+1.1|0|22|t
+1.1|0|23|t
+1.1|0|30|f
+1.1|0|31|f
+1.1|0|32|f
+1.2|0|1|f
+1.2|0|2|f
+1.2|0|10|f
+1.2|0|11|f
+1.2|0|12|f
+1.2|0|13|f
+1.2|0|14|f
+1.2|0|15|f
+1.2|0|16|f
+1.2|0|20|t
+1.2|0|21|f
+1.2|0|22|f
+1.2|0|23|f
+1.2|0|30|f
+1.2|0|31|f
+1.2|0|32|f
+1.3|1|0|f
+1.3|2|0|f
+1.3|10|0|f
+1.3|11|0|f
+1.3|12|0|f
+1.3|13|0|f
+1.3|14|0|f
+1.3|15|0|t
+1.3|16|0|t
+1.3|20|0|f
+1.3|21|0|f
+1.3|22|0|f
+1.3|23|0|f
+1.3|30|0|f
+1.3|31|0|f
+1.3|32|0|f
+1.4|1|0|f
+1.4|2|0|f
+1.4|10|0|f
+1.4|11|0|f
+1.4|12|0|f
+1.4|13|0|f
+1.4|14|0|f
+1.4|15|0|t
+1.4|16|0|t
+1.4|20|0|f
+1.4|21|0|f
+1.4|22|0|f
+1.4|23|0|f
+1.4|30|0|f
+1.4|31|0|f
+1.4|32|0|f