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