ST_ColorMap — Skapar ett nytt raster med upp till fyra 8BUI-band (gråskala, RGB, RGBA) från källrastret och ett angivet band. Band 1 antas om det inte specificeras.
raster ST_ColorMap(raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE);
raster ST_ColorMap(raster rast, text colormap, text method=INTERPOLATE);
Tillämpa en färgkarta på bandet vid nband i rast, vilket resulterar i ett nytt raster som består av upp till fyra 8BUI-band. Antalet 8BUI-band i det nya rastret bestäms av antalet färgkomponenter som definieras i colormap.
Om nband inte anges antas band 1.
colormap kan vara ett nyckelord för en fördefinierad colormap eller en uppsättning linjer som definierar värdet och färgkomponenterna.
Giltigt fördefinierat nyckelord för färgkartor:
gråskala eller gråskala för ett 8BUI-bandraster av nyanser av grått.
pseudofärg för ett raster med fyra 8BUI (RGBA)-band med färger från blått till grönt till rött.
brand för ett raster med fyra 8BUI (RGBA)-band med färger från svart till rött till ljusgult.
bluered för ett raster med fyra 8BUI (RGBA)-band med färger från blått till ljusvitt till rött.
Användare kan skicka en uppsättning poster (en per rad) till colormap för att ange anpassade färgkartor. Varje post består i allmänhet av fem värden: pixelvärdet och motsvarande röd-, grön-, blå- och alfakomponenter (färgkomponenter mellan 0 och 255). Procentvärden kan användas i stället för pixelvärden, där 0% aoch 100% aär de lägsta och högsta värdena i rasterbandet. Värdena kan separeras med kommatecken (','), tabbar, kolon (':') och/eller mellanslag. Pixelvärdet kan sättas till nv, null eller nodata för NODATA-värdet. Ett exempel ges nedan.
5 0 0 0 255
4 100:50 55 255
1 150, 100 150 255
0% 255 255 255 255
nv 0 0 0 0
Syntaxen för colormap liknar den för färgreliefläget i GDAL gdaldem.
Giltiga nyckelord för metod:
INTERPOLATE för att använda linjär interpolation för att mjukt blanda färgerna mellan de angivna pixelvärdena
EXACT för att strikt matcha endast de pixelvärden som finns i färgkartan. Pixlar vars värde inte matchar en post i färgkartan kommer att sättas till 0 0 0 0 0 (RGBA)
NEAREST för att använda den färgkartspost vars värde ligger närmast pixelvärdet
|
|
|
En bra referens för färgkartor är ColorBrewer. |
|
|
|
De resulterande banden av nytt raster kommer inte att ha något NODATA-värde inställt. Använd ST_SetBandNoDataValue för att ställa in ett NODATA-värde om ett sådant behövs. |
Tillgänglighet: 2.1.0
This example builds a raster from rotated buffered lines and compares the original values with predefined and custom color maps.
WITH ref AS (
SELECT ST_MakeEmptyRaster(200, 200, 0, 200, 1, -1, 0, 0) AS rast
), source AS (
SELECT ST_Union(rast) AS rast
FROM (
SELECT
ST_AsRaster(ST_Rotate(ST_Buffer('LINESTRING(0 2,50 50,150 150,125 50)'::geometry,
i*2
),
pi() * i * 0.125, ST_Point(50, 50)
),
ref.rast, '8BUI'::text, i * 5
) AS rast
FROM ref
CROSS JOIN generate_series(1, 10, 3) AS i
) AS shapes
)
SELECT title, ST_AsPNG(rendered) AS image
FROM source
CROSS JOIN LATERAL (VALUES
('original', rast),
('grayscale', ST_ColorMap(rast, 1, 'greyscale')),
('pseudocolor', ST_ColorMap(rast, 1, 'pseudocolor')),
('fire', ST_ColorMap(rast, 1, 'fire')),
('blue-red', ST_ColorMap(rast, 1, 'bluered')),
('custom red', ST_ColorMap(
rast,
1,
E'100% 255 0 0 255\n80% 160 0 0 255\n50% 130 0 0 255\n' ||
E'30% 30 0 0 255\n20% 60 0 0 255\n0% 0 0 0 255\n' ||
E'nv 255 255 255 0'
))
) AS variants(title, rendered);
title | image
------------+--------------------------------
original | PNG image, 224 x 295 pixels
grayscale | PNG image, 224 x 295 pixels
pseudocolor| PNG image, 224 x 295 pixels
fire | PNG image, 224 x 295 pixels
blue-red | PNG image, 224 x 295 pixels
custom red | PNG image, 224 x 295 pixels