#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: | master |
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 (3)
comment:1 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 by , 12 years ago
Keywords: | history added |
---|
Note:
See TracTickets
for help on using tickets.
Added in r10130