ST_ColorMap — Erzeugt aus einem bestimmten Band des Ausgangsrasters einen neuen Raster mit bis zu vier 8BUI-Bändern (Grauwert, RGB, RGBA). Wenn kein Band angegeben ist, wird Band 1 angenommen.
raster ST_ColorMap(
raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE)
;
raster ST_ColorMap(
raster rast, text colormap, text method=INTERPOLATE)
;
Wendet eine colormap
auf das Band nband
von rast
an, wodurch ein neuer Raster aus bis zu vier 8BUI-Bändern erstellt wird. Die Anzahl der 8BUI-Bänder des neuen Raster wird durch die Anzahl der Farbkomponenten bestimmt, die in der colormap
definiert sind.
Wenn nband
nicht angegeben ist, wird Band 1 angenommen.
colormap
kann ein Schlüsselwort, ein vordefiniertes Farbschema, oder Zeilen in denen der Zellwert und die Farbkomponenten festgelegt sind.
Gültige, vordefinierte Schlüsselwörter von colormap
:
grayscale
oder greyscale
für Grauabstufungen in einem 8BUI-Rasterband.
pseudocolor
für vier 8BUI-Rasterbänder (RGBA) mit Farbverläufen von Blau zu Grün zu Rot.
fire
für vier 8BUI-Rasterbänder (RGBA) mit Farbverläufen von Blau zu Rot zu blassem Gelb.
bluered
für vier 8BUI-Rasterbänder (RGBA) mit Farbverläufen von Blau zu blassem Weiß zu Rot.
Anwender können mehrere Einträge (einen pro Zeile) an colormap
übergeben, um bestimmte Farbschemata zu spezifizieren. Üblicherweise besteht jeder Eintrag aus fünf Werten: der Pixelwert und die zugehörigen Rot-, Grün-, Blau- und Alpha-Komponenten (Farbkomponenten zwischen 0 und 255). Anstelle der Pixelwerte können auch Prozentwerte verwendet werden, wobei 0% und 100% die minimalen und maximalen Werte des Rasterbandes sind. Die Werte können durch Beistriche (','), Tabulatoren, Doppelpunkte (':') und/oder durch Leerzeichen getrennt werden. Für die NODATA-Werte kann der Pixelwert mit nv, NULL oder auf NODATA angegeben werden. Ein Beispiel finden Sie unterhalb.
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
Die Syntax von colormap
ist ähnlich wie bei dem Modus "color-relief" bei gdaldem von GDAL.
Gültige Schlüsselwörter für method
:
INTERPOLATE
verwendet eine lineare Interpolation um einen kontinuierlichen Übergang der Farben zwischen den Pixelwerten zu erhalten
EXACT
genaue Entsprechung der Pixelwerte mit der "colormap". Pixel, deren Werte keinen Eintrag in "colormap" haben, werden mit "0 0 0 0" (RGBA) eingefärbt
NEAREST
verwendet die Einträge der "colormap", deren Wert dem Pixelwert am nächsten kommt
Eine großartige Hilfestellung für "colormaps" bietet ColorBrewer |
Bei den resultierenden Bänder des neuen Rasters sind keine NODATA-Werte gesetzt. Verwenden Sie bitte ST_SetBandNoDataValue um einen NODATA-Wert zu setzen, falls dieser benötigt wird. |
Verfügbarkeit: 2.1.0
Eine "Junk"-Tabelle zum Herumspielen
-- 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;
|
|
|
|
|
|