Ticket #1938 (closed enhancement: fixed)
[raster] Refactor ST_AddBand to add multiple new bands in one call
| Reported by: | dustymugs | Owned by: | dustymugs |
|---|---|---|---|
| Priority: | medium | Milestone: | PostGIS 2.1.0 |
| Component: | raster | Version: | trunk |
| Keywords: | history | Cc: |
Description
Currently, the basic ST_AddBand() looks like...
ST_AddBand( rast raster, index int, pixeltype text, initialvalue float8 DEFAULT 0., nodataval float8 DEFAULT NULL ) -> raster
But the problem is that to add multiple new bands, you have to call ST_AddBand many times. And if the raster has huge dimensions (e.g. 1000 x 1000) or many bands, the deserializing and serializing of the raster takes longer and longer as you add more bands.
Instead, ST_AddBand should have the ability to add multiple new bands at once. This will require a new data type...
CREATE TYPE addbandarg AS ( index int, pixeltype text, initialvalue float8, nodataval float8 );
And a new "main" function...
ST_AddBand( rast raster, addbandargset addbandarg[] ) -> raster
The original "main" ST_AddBand() function (first code above) will now call the new "main" function.
Usage example:
SELECT St_Value(rast, 1, 3, 3), St_Value(rast, 2, 3, 3) FROM ( SELECT ST_AddBand( ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0, 0), ARRAY[ ROW(1, '64BF', 1234.567, NULL), ROW(2, '8BUI', 255, NULL) ]::addbandarg[] ) AS rast ) foo;
Change History
Note: See
TracTickets for help on using
tickets.
