ST_ColorMap — 元のラスターと指定したバンドから 4個までの 8BUI バンド (grayscale, RGB, RGBA) からなる新しいラスターを生成します。
raster ST_ColorMap(raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE);
raster ST_ColorMap(raster rast, text colormap, text method=INTERPOLATE);
rastのnbandで示されるバンドにcolormapを適用し、4個までの 8BUI バンドからなる新しいラスターを返します。新しいラスターの 8BUI バンドの数はcolormapで定義された色要素の数で決まります。
nbandが指定されていない場合には、1番と仮定します。
colormapは事前定義された色マップまたは値を定義する行の集合と色要素のキーワードです。
妥当な事前定義されたcolormapキーワードは次の通りです。
grayscaleまたはgreyscale 1個の 8BUI バンドからなるラスターで、グレーの陰影です。
pseudocolor 4個の 8BUI バンド (RGBA) からなるラスターで、青から緑、赤に移るものです。
fire 4個の 8BUI バンド (RGBA) からなるラスターで、黒から赤、淡黄色に移るものです。
bluered 4個の 8BUI バンド (RGBA) からなるラスターで、青からペールホワイト、赤に移るものです。
カスタムカラーマップを指定するためにエントリ (1行 1エントリ) の集合をcolormapに渡すことができます。それぞれのエントリは一般的に、ピクセル値、ピクセル値と対応する赤、緑、青、アルファ要素(0から 255の間の色要素) からなる 5個の値を持ちます。ピクセル値の替わりに百分率値を使うことができ、0%がラスターバンドでの最小値、100%が最大値になります。値はコンマ('.')、タブ、コロン(':')、空白で区切られます。NODATA 値に対しては、ピクセル値をnv, null, nodataのいずれかに設定できます。例を次に示します。
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
colormapの構文は、GDAL ツールのgdaldemの起伏モードに似ています。
methodの妥当なキーワードは次の通りです。
INTERPOLATE 与えられたピクセル値の間での滑らかな色合成のための線形補間に使います。
EXACT カラーマップで見つかったピクセル値だけを厳格に一致させます。カラーマップエントリに一致しないピクセルに対しては 0 0 0 0 (RGBA) が設定されます。
NEAREST ピクセル値に最も近い値にあうカラーマップエントリを使います。
|
|
|
カラーマップの偉大な参考情報はColorBrewerにあります。 |
|
|
|
新しいラスターの結果バンドには NODATA 値が入りません。NODATA 値が必要な場合には、 ST_SetBandNoDataValueを使って NODATA 値をセットします。 |
Availability: 2.1.0
この例ではラインにバッファーを施したうえで回転させたラスターを構築し、元の値に対して定義済みのカラーマップを適用した場合と任意に定義したカラーマップを適用した場合との比較を行います。
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