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)
;
rast
의 nband
위치의 밴드에 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 로 설정할 수 있습니다. 다음은 그 예시입니다.
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 버전부터 사용할 수 있습니다.
다음은 예시용 가짜 테이블입니다.
-- setup test raster table -- DROP TABLE IF EXISTS funky_shapes; CREATE TABLE funky_shapes(rast raster); INSERT INTO funky_shapes(rast) WITH ref AS ( SELECT ST_MakeEmptyRaster( 200, 200, 0, 200, 1, -1, 0, 0) AS rast ) SELECT ST_Union(rast) FROM ( SELECT ST_AsRaster( ST_Rotate( ST_Buffer( ST_GeomFromText('LINESTRING(0 2,50 50,150 150,125 50)'), 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 ST_NumBands(rast) As n_orig, ST_NumBands(ST_ColorMap(rast,1, 'greyscale')) As ngrey, ST_NumBands(ST_ColorMap(rast,1, 'pseudocolor')) As npseudo, ST_NumBands(ST_ColorMap(rast,1, 'fire')) As nfire, ST_NumBands(ST_ColorMap(rast,1, 'bluered')) As nbluered, ST_NumBands(ST_ColorMap(rast,1, ' 100% 255 0 0 80% 160 0 0 50% 130 0 0 30% 30 0 0 20% 60 0 0 0% 0 0 0 nv 255 255 255 ')) As nred FROM funky_shapes;
n_orig | ngrey | npseudo | nfire | nbluered | nred --------+-------+---------+-------+----------+------ 1 | 1 | 4 | 4 | 4 | 3
SELECT ST_AsPNG(rast) As orig_png, ST_AsPNG(ST_ColorMap(rast,1,'greyscale')) As grey_png, ST_AsPNG(ST_ColorMap(rast,1, 'pseudocolor')) As pseudo_png, ST_AsPNG(ST_ColorMap(rast,1, 'nfire')) As fire_png, ST_AsPNG(ST_ColorMap(rast,1, 'bluered')) As bluered_png, ST_AsPNG(ST_ColorMap(rast,1, ' 100% 255 0 0 80% 160 0 0 50% 130 0 0 30% 30 0 0 20% 60 0 0 0% 0 0 0 nv 255 255 255 ')) As red_png FROM funky_shapes;
|
|
|
|
|
|