AS $$ SELECT mean FROM _st_summarystats($1, $2, 1, FALSE, 0.1) $$
LANGUAGE 'SQL' IMMUTABLE STRICT;
+-----------------------------------------------------------------------
+-- ST_StdDev and ST_ApproxStdDev
+-----------------------------------------------------------------------
+CREATE OR REPLACE FUNCTION st_stddev(rast raster, nband int, hasnodata boolean, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rast raster, nband int, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, FALSE, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rast raster, hasnodata boolean, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, 1, $2, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rast raster, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, 1, FALSE, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rast raster, nband int, hasnodata boolean, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, $4) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rast raster, nband int, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, FALSE, $3) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rast raster, hasnodata boolean, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, 1, $2, $3) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rast raster, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, 1, FALSE, $2) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rast raster, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, 1, FALSE, 0.1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rastertable text, rastercolumn text, nband int, hasnodata boolean, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, $4, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rastertable text, rastercolumn text, nband int, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, FALSE, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rastertable text, rastercolumn text, hasnodata boolean, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, $3, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_stddev(rastertable text, rastercolumn text, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, FALSE, 1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text, nband int, hasnodata boolean, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, $4, $5) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text, nband int, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, $3, FALSE, $4) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text, hasnodata boolean, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, $3, $4) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text, sample_percent double precision, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, FALSE, $3) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
+CREATE OR REPLACE FUNCTION st_approxstddev(rastertable text, rastercolumn text, OUT stddev double precision)
+ RETURNS double precision
+ AS $$ SELECT stddev FROM _st_summarystats($1, $2, 1, FALSE, 0.1) $$
+ LANGUAGE 'SQL' IMMUTABLE STRICT;
+
-----------------------------------------------------------------------
-- MapAlgebra
-----------------------------------------------------------------------
--- /dev/null
+SELECT * FROM ST_StdDev(
+ 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_StdDev(
+ 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 stddev FROM ST_StdDev(
+ 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 stddev FROM ST_StdDev(
+ 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
+ )
+ , TRUE
+);
+BEGIN;
+CREATE TEMP TABLE test
+ ON COMMIT DROP AS
+ SELECT
+ rast.rast
+ FROM (
+ SELECT 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
+ ) AS rast
+ ) AS rast
+ FULL JOIN (
+ SELECT generate_series(1, 10) AS id
+ ) AS id
+ ON 1 = 1;
+SELECT * FROM ST_StdDev('test', 'rast', 1, FALSE);
+SELECT * FROM ST_StdDev('test', 'rast', 1, TRUE);
+SELECT * FROM ST_StdDev('test', 'rast', 1);
+SELECT * FROM ST_StdDev('test', 'rast');
+ROLLBACK;