ST_ColorMap — Cria um novo raster de até quatro bandas 8BUI (grayscale, RGB, RGBA) do raster fonte e uma banda específica. A banda 1 usada se não especificado.
raster ST_ColorMap(raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE);
raster ST_ColorMap(raster rast, text colormap, text method=INTERPOLATE);
Aplica um colormap à banda na nband do rast resultando em um novo raster englobado com até quatro bandas 8BUI. O número de bandas 8BUI no novo raster é determinado pelo número de cores componentes definidas no colormap.
Se nband não for especificado, a banda 1 é assumida.
colormap pode ser uma palavra-chave de um colormap pré definido ou um conjunto de linhas definindo o valor e a cor dos componentes.
Palavra-chave válida do colormap pré definida:
grayscale ou greyscale para uma banda raster 8BUI de tons de cinza.
pseudocolor para quatro bandas raster 8BUI (RGBA) com cores indo de azul para verde e para vermelho.
fire para quatro bandas raster 8BUI (RGBA) com cores indo de preto para vermelho para amarelo claro.
bluered para quatro bandas raster 8BUI (RGBA) com cores indo de azul para branco para vermelho.
Os usuários podem passar um conjunto de entradas (uma por linha) para colormap para especificar colormaps personalizados. Cada entrada consiste de cinco valores: o valor de pixel e componentes Vermelho, Verde, Azul, Alfa correspondentes (entre 0 e 255). Valores de porcentagem podem ser usados em vez de valores de pixel onde 0% e 100% são os mínimos e os máximos encontrados na banda raster. Os valores podem ser separados por vírgulas (","), tabs, dois pontos (":") e/ou espaços. O valor do pixel pode ser nv, null ou nodata para o valor NODATA. Um exemplo é fornecido abaixo.
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
A sintaxe do colormap é parecida com com a do modo do auxílio de cor do GDAL gdaldem.
Palavras-chave válidas para method:
INTERPOLATE para usar interpolação linear para misturar suavemente as cores entre os valores do pixel
EXACT para combinar estritamente somente aqueles valores de pixel encontrados no colormap. Os pixeis cujos valores não combinarem com uma entrada do colormap serão 0 0 0 0 (RGBA)
NEAREST para usar a entrada do colormap cujos valores são mais próximos ao valor do pixel
|
|
|
Uma ótima referência para o colormap é ColorBrewer. |
|
|
|
As bandas resultantes do novo raster não terá nenhum valor NODATA. Use ST_SetBandNoDataValue se precisar de um valor NODATA. |
Disponibilidade: 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