]> granicus.if.org Git - postgis/commitdiff
Added ST_MinMax function
authorBborie Park <bkpark at ucdavis.edu>
Mon, 16 May 2011 19:34:01 +0000 (19:34 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Mon, 16 May 2011 19:34:01 +0000 (19:34 +0000)
- added SQL functions for ST_MinMax
- added regression tests

Associated ticket is #902

git-svn-id: http://svn.osgeo.org/postgis/trunk@7151 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rtpostgis.sql.in.c
raster/test/regress/Makefile.in
raster/test/regress/rt_minmax.sql [new file with mode: 0644]
raster/test/regress/rt_minmax_expected [new file with mode: 0644]

index f2dc5a031f3191a5d45a2859dcc5c5f1ce3de814..2191ee85d76c37a274805d55c6df3c946ea50fe3 100644 (file)
@@ -635,6 +635,99 @@ CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text,
        AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, FALSE, 0.1) $$
        LANGUAGE 'SQL' IMMUTABLE STRICT;
 
+-----------------------------------------------------------------------
+-- ST_MinMax and ST_ApproxMinMax
+-----------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION st_minmax(rast raster, nband int, hasnodata boolean, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rast raster, nband int, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, FALSE, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rast raster, hasnodata boolean, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, 1, $2, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rast raster, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, 1, FALSE, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rast raster, nband int, hasnodata boolean, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, $4) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rast raster, nband int, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, FALSE, $3) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rast raster, hasnodata boolean, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, 1, $2, $3) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rast raster, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, 1, FALSE, $2) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rast raster, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, 1, FALSE, 0.1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rastertable text, rastercolumn text, nband int, hasnodata boolean, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, $4, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rastertable text, rastercolumn text, nband int, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, FALSE, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rastertable text, rastercolumn text, hasnodata boolean, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, 1, $3, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_minmax(rastertable text, rastercolumn text, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, 1, FALSE, 1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rastertable text, rastercolumn text, nband int, hasnodata boolean, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, $4, $5) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rastertable text, rastercolumn text, nband int, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, $3, FALSE, $4) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rastertable text, rastercolumn text, hasnodata boolean, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, 1, $3, $4) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rastertable text, rastercolumn text, sample_percent double precision, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, 1, FALSE, $3) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxminmax(rastertable text, rastercolumn text, OUT min double precision, OUT max double precision)
+       RETURNS record
+       AS $$ SELECT min, max FROM _st_summarystats($1, $2, 1, FALSE, 0.1) $$
+       LANGUAGE 'SQL' IMMUTABLE STRICT;
+
 -----------------------------------------------------------------------
 -- MapAlgebra
 -----------------------------------------------------------------------
index c163103fd5f3070d10424a61af967f9ac1e0242b..2712ff370c354f11f3d51ee5b371b71c40b53f4b 100644 (file)
@@ -64,6 +64,7 @@ TEST_BANDPROPS = \
        rt_summarystats.sql \
        rt_mean.sql \
        rt_stddev.sql \
+       rt_minmax.sql \
        $(NULL)
 
 TEST_PIXEL = \
diff --git a/raster/test/regress/rt_minmax.sql b/raster/test/regress/rt_minmax.sql
new file mode 100644 (file)
index 0000000..887d19f
--- /dev/null
@@ -0,0 +1,64 @@
+SELECT min, max FROM ST_MinMax(
+       ST_SetValue(
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,-1)
+                                       , 1, '64BF', 0, 0
+                               )
+                               , 1, 1, 1, -10
+                       )
+                       , 1, 5, 4, 0
+               )
+               , 1, 5, 5, 3.14159
+       )
+       , FALSE
+);
+SELECT ST_MinMax(
+       ST_SetValue(
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,-1)
+                                       , 1, '64BF', 0, 0
+                               )
+                               , 1, 1, 1, -10
+                       )
+                       , 1, 5, 4, 0
+               )
+               , 1, 5, 5, 3.14159
+       )
+       , FALSE
+);
+SELECT min FROM ST_MinMax(
+       ST_SetValue(
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,-1)
+                                       , 1, '64BF', 0, 0
+                               )
+                               , 1, 1, 1, -10
+                       )
+                       , 1, 5, 4, 0
+               )
+               , 1, 5, 5, 3.14159
+       )
+       , FALSE
+);
+SELECT max,max FROM ST_MinMax(
+       ST_SetValue(
+               ST_SetValue(
+                       ST_SetValue(
+                               ST_AddBand(
+                                       ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,-1)
+                                       , 1, '64BF', 0, 0
+                               )
+                               , 1, 1, 1, -10
+                       )
+                       , 1, 5, 4, 0
+               )
+               , 1, 5, 5, 3.14159
+       )
+       , FALSE
+);
diff --git a/raster/test/regress/rt_minmax_expected b/raster/test/regress/rt_minmax_expected
new file mode 100644 (file)
index 0000000..ef01ccd
--- /dev/null
@@ -0,0 +1,4 @@
+-10|3.14159
+(-10,3.14159)
+-10
+3.14159|3.14159