ST_ColorMap — 根据源光栅和指定波段创建最多四个 8BUI 波段(灰度、RGB、RGBA)的新光栅。如果未指定,则假设为波段 1。
光栅 ST_ColorMap(
光栅 rast,整数 nband=1,文本 colormap=grayscale,文本 method=INTERPOLATE)
;
光栅 ST_ColorMap(
光栅 rast,文本 colormap,文本 method=INTERPOLATE)
;
将 colormap
应用于 rast
的 nband
波段,生成一个由最多四个 8BUI 波段组成的新的光栅。新光栅中 8BUI 波段的数量由 colormap
中定义的颜色分量数量决定。
如果未指定 nband
,则假设为波段 1。
colormap
可以是预定义 colormap 的关键字,也可以是一组定义值和颜色分量的行。
有效的预定义 colormap
关键字
grayscale
或 greyscale
,用于生成一个由灰度阴影组成的 8BUI 波段光栅。
pseudocolor
,用于生成一个由四 8BUI (RGBA) 波段组成的光栅,颜色从蓝色变为绿色再变为红色。
fire
,用于生成一个由四 8BUI (RGBA) 波段组成的光栅,颜色从黑色变为红色再变为浅黄色。
bluered
,用于生成一个由四 8BUI (RGBA) 波段组成的光栅,颜色从蓝色变为浅白色再变为红色。
用户可以将一组条目(每行一个)传递给 colormap
以指定自定义配色方案。每个条目通常包含五个值:像素值和相应的红色、绿色、蓝色、Alpha 分量(0 到 255 之间的颜色分量)。可以在像素值中使用百分比值,其中 0% 和 100% 是栅格波段中找到的最小值和最大值。值可以用逗号 (',')、制表符、冒号 (':') 和/或空格分隔。像素值可以设置为 nv、null 或 nodata,表示 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 值。如果需要,请使用 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;
|
|
|
|
|
|