From: Bborie Park Date: Mon, 16 May 2011 19:34:01 +0000 (+0000) Subject: Added ST_MinMax function X-Git-Tag: 2.0.0alpha1~1660 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=028ad6126a5a3c9f7334841b8a6555863c518a2c;p=postgis Added ST_MinMax function - 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 --- diff --git a/raster/rt_pg/rtpostgis.sql.in.c b/raster/rt_pg/rtpostgis.sql.in.c index f2dc5a031..2191ee85d 100644 --- a/raster/rt_pg/rtpostgis.sql.in.c +++ b/raster/rt_pg/rtpostgis.sql.in.c @@ -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 ----------------------------------------------------------------------- diff --git a/raster/test/regress/Makefile.in b/raster/test/regress/Makefile.in index c163103fd..2712ff370 100644 --- a/raster/test/regress/Makefile.in +++ b/raster/test/regress/Makefile.in @@ -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 index 000000000..887d19f1a --- /dev/null +++ b/raster/test/regress/rt_minmax.sql @@ -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 index 000000000..ef01ccd34 --- /dev/null +++ b/raster/test/regress/rt_minmax_expected @@ -0,0 +1,4 @@ +-10|3.14159 +(-10,3.14159) +-10 +3.14159|3.14159