제목

ST_ColorMap — 소스 래스터 및 설정한 밴드로부터 8BUI 밴드(grayscale, RGB, RGBA)를 4개까지 가지는 새 래스터를 생성합니다. 밴드를 따로 설정하지 않으면 밴드 1로 가정합니다.

요약

raster ST_ColorMap(raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE);

raster ST_ColorMap(raster rast, text colormap, text method=INTERPOLATE);

Description

rastnband 위치의 밴드에 colormap 을 적용해서 8BUI 밴드 4개까지로 구성된 새 래스터를 출력합니다. colormap 안에 정의된 색상 구성 요소의 개수가 새 래스터의 8BUI 밴드 개수를 결정합니다.

nband 를 설정하지 않을 경우, 밴드 1로 가정합니다.

미리 정의된 컬러맵의 키워드, 또는 값 및 색상 구성 요소를 정의하는 라인 집합이 colormap 이 될 수 있습니다.

유효한 미리 정의된 colormap 키워드:

  • grayscale 또는 greyscale - 8BUI 밴드 래스터의 회색조(shades of gray)를 설정

  • pseudocolor - 8BUI(RGBA) 밴드 4개의 래스터에 대해 파랑에서 녹색으로, 녹색에서 빨강으로 변하는 색상을 설정

  • fire - 8BUI(RGBA) 밴드 4개의 래스터에 대해 검정에서 빨강으로, 빨강에서 연한 노랑으로 변하는 색상을 설정

  • bluered - 8BUI(RGBA) 밴드 4개의 래스터에 대해 파랑에서 연한 하양으로, 연한 하양에서 빨강으로 변하는 색상을 설정

사용자 지정 컬러맵을 설정하려면 사용자가 colormap 에 (한 줄에 하나씩 작성한) 항목들의 집합을 입력할 수 있습니다. 각 항목은 일반적으로 다음 5개의 값으로 구성됩니다. 픽셀 값과 해당 픽셀의 빨강, 녹색, 파랑, 알파 구성 요소(RGBA)입니다(색상 구성 요소는 0부터 255 사이의 값입니다). 픽셀 값 대신 해당 래스터 밴드의 최소/최대값이 0/100%인 백분율 값을 쓸 수도 있습니다. 각 값을 쉼표, 탭, 쌍점, 그리고/또는 공백으로 구분할 수 있습니다. 픽셀 값이 NODATA 값일 경우, nv, null 또는 nodata 로 설정할 수 있습니다. 다음은 그 예시입니다.

Code
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의 색상 강조(color-relief) 모드 gdaldem 의 문법과 유사합니다.

유효한 method 키워드:

  • INTERPOLATE - 입력한 픽셀 값들 사이의 색상을 부드럽게 섞여들게 하기 위해 선형 보간법을 이용합니다.

  • EXACT - 컬러맵에 존재하는 픽셀 값과만 엄격히 매칭시킵니다. 컬러맵 항목과 일치하지 않는 값을 가진 픽셀은 0 0 0 0(RGBA)으로 설정할 것입니다.

  • NEAREST - 픽셀 값과 가장 가까운 값을 가진 컬러맵 항목을 이용합니다.

[참고]

컬러맵에 대해서는 ColorBrewer 를 참조하면 좋습니다.

[주의]

그 결과 새 래스터의 밴드들은 NODATA 값을 가지지 않을 것입니다. NODATA 값이 필요하다면 ST_SetBandNoDataValue 를 이용해서 NODATA 값을 설정하십시오.

2.1.0 버전부터 사용할 수 있습니다.

예시

This example builds a raster from rotated buffered lines and compares the original values with predefined and custom color maps.

Code
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
                    
Figure
Geometry figure for visual-rt-st-colormap-01