Copied from ST_Union

git-svn-id: http://svn.osgeo.org/postgis/trunk@8271 b70326c6-7e19-0410-871a-916f4a2858ee
This commit is contained in:
Pierre Racine 2011-12-01 01:10:24 +00:00
parent 8146bd4b7e
commit 9cd7a3972d

View file

@ -0,0 +1,29 @@
-----------------------------------------------------------------------
-- ST_MultiBandMapAlgebra
-- Return the same map algebra expression to all the band of a raster.
-----------------------------------------------------------------------
CREATE OR REPLACE FUNCTION ST_MultiBandMapAlgebra(rast1 raster,
rast2 raster,
expression text,
extentexpr text)
RETURNS raster AS
$$
DECLARE
numband int;
newrast raster;
pixeltype text;
nodataval float;
BEGIN
numband := ST_NumBands(rast1);
IF numband != ST_NumBands(rast2) THEN
RAISE EXCEPTION 'ST_MultiBandMapAlgebra: Rasters do not have the same number of band';
END IF;
newrast := ST_MakeEmptyRaster(rast1);
FOR b IN 1..numband LOOP
pixeltype := ST_BandPixelType(rast1, b);
nodataval := ST_BandNodataValue(rast1, b);
newrast := ST_AddBand(newrast, NULL, ST_MapAlgebraExpr(rast1, b, rast2, b, expression, pixeltype, extentexpr, nodataval), 1);
END LOOP;
END;
$$
LANGUAGE 'plpgsql';