ST_AddBand — Returnerar ett raster med det eller de nya banden av given typ som lagts till med givet initialvärde på den givna indexplatsen. Om inget index anges läggs bandet till i slutet.
(1) raster ST_AddBand(raster rast, addbandarg[] addbandargset);
(2) raster ST_AddBand(raster rast, integer index, text pixeltype, double precision initialvalue=0, double precision nodataval=NULL);
(3) raster ST_AddBand(raster rast, text pixeltype, double precision initialvalue=0, double precision nodataval=NULL);
(4) raster ST_AddBand(raster torast, raster fromrast, integer fromband=1, integer torastindex=at_end);
(5) raster ST_AddBand(raster torast, raster[] fromrasts, integer fromband=1, integer torastindex=at_end);
(6) raster ST_AddBand(raster rast, integer index, text outdbfile, integer[] outdbindex, double precision nodataval=NULL);
(7) raster ST_AddBand(raster rast, text outdbfile, integer[] outdbindex, integer index=at_end, double precision nodataval=NULL);
Returnerar ett raster med ett nytt band tillagt i given position (index), av given typ, med givet initialt värde och med givet nodatavärde. Om inget index anges läggs bandet till i slutet. Om inget fromband anges antas band 1. Pixel type är en strängrepresentation av en av de pixeltyper som anges i ST_BandPixelType. Om ett befintligt index anges ökas alla efterföljande band >= det indexet med 1. Om ett startvärde som är större än pixeltypens max anges, sätts startvärdet till det högsta värde som pixeltypen tillåter.
För den variant som tar en array av addbandarg (Variant 1) är indexvärdet för ett specifikt addbandarg relativt till rastret vid den tidpunkt då det band som beskrivs av det addbandarg läggs till i rastret. Se exemplet Multiple New Bands nedan.
För den variant som tar en array av raster (variant 5), om torast är NULL, ackumuleras fromband-bandet för varje raster i arrayen till ett nytt raster.
För de varianter som tar utdbfile (variant 6 och 7) måste värdet innehålla den fullständiga sökvägen till rasterfilen. Filen måste också vara tillgänglig för postgres-serverprocessen.
Förbättrad: 2.1.0-stöd för addbandarg har lagts till.
Förbättrad: 2.1.0 stöd för nya out-db band tillagt.
Ett nytt band.
Det här exemplet lägger till ytterligare ett 8-bitars heltalsband utan tecken med pixlar initierade till 200.
UPDATE dummy_rast
SET rast = ST_AddBand(rast, '8BUI'::text, 200)
WHERE rid = 1;
Skapa ett tomt raster på 100×100 enheter med övre vänstra hörnet vid 0. Lägg till två band (band 1 är en boolesk bitväxel med 0/1 och band 2 tillåter värdena 0–15). Använder addbandargs.
Mata ut metadata för rasterbanden för att kontrollera att de är korrekta.
INSERT INTO dummy_rast(rid, rast)
VALUES(10, ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 1, -1, 0, 0, 0),
ARRAY[
ROW(1, '1BB'::text, 0, NULL),
ROW(2, '4BUI'::text, 0, NULL)
]::addbandarg[]
)
);
SELECT (bmd).*
FROM (SELECT ST_BandMetaData(rast, generate_series(1, 2)) As bmd
FROM dummy_rast WHERE rid = 10) AS foo;
pixeltype | nodatavalue | isoutdb | path -----------+----------------+-------------+---------+------ 1BB | | f | 4BUI | | f |
Det här exemplet matar ut metadata för rastret.
SELECT (rmd).width, (rmd).height, (rmd).numbands
FROM (SELECT ST_MetaData(rast) As rmd
FROM dummy_rast WHERE rid = 10) AS foo;
width | height | numbands -------+--------+---------- 100 | 100 | 2
Flera nya band.
SELECT
*
FROM ST_BandMetaData(ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0),
ARRAY[
ROW(NULL, '8BUI', 255, 0),
ROW(NULL, '16BUI', 1, 2),
ROW(2, '32BUI', 100, 12),
ROW(2, '32BF', 3.14, -1)
]::addbandarg[]
),
ARRAY[]::integer[]
);
bandnum | pixeltype | nodatavalue | isoutdb | path | outdbbandnum | filesize | filetimestamp
---------+-----------+-------------+---------+------+--------------+----------+---------------
1 | 8BUI | 0 | f | null | null | null | null
2 | 32BF | -1 | f | null | null | null | null
3 | 32BUI | 12 | f | null | null | null | null
4 | 16BUI | 2 | f | null | null | null | null
Aggregera det första bandet i en tabell med liknande raster till ett enda raster. Med lika många band som test_types och lika många rader (nya raster) som möss. Observera att satsen ORDER BY test_type förlitar sig på stöd för ORDER BY i aggregat. Det resulterande rastret får ett band för varje test_type i alfabetisk ordning efter test_type. För musälskare: Inga möss kom till skada i denna övning.
SELECT
mouse,
ST_AddBand(NULL, array_agg(rast ORDER BY test_type), 1) As rast
FROM mice_studies
GROUP BY mouse;
Nytt out-db-band.
SELECT
*
FROM ST_BandMetaData(ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0),
'/home/raster/mytestraster.tif'::text, NULL::int[]
),
ARRAY[]::integer[]
);
bandnum | pixeltype | nodatavalue | isoutdb | path
---------+-----------+-------------+---------+------
1 | 8BUI | | t | /home/raster/mytestraster.tif
2 | 8BUI | | t | /home/raster/mytestraster.tif
3 | 8BUI | | t | /home/raster/mytestraster.tif