ST_ReclassExact — 元ラスターから再分類したバンドからなる新しいラスタを生成します。元ラスターのバンド内の値から新たに生成されるラスターのバンド内の値への1対1のマッピングを使います。
raster ST_ReclassExact(raster rast, double precision[] inputvalues, double precision[] outputvalues, integer bandnumber=1, text pixeltype=32BF, double precision nodatavalue=NULL);
inputvalues配列とoutputvalues配列によって定義される再分類処理を適用することで形成される新しいラスタを生成します。入力配列のピクセル値は対応する出力配列の値にマップされます。他のピクセル値は全て nodatavalueにマップされます。
出力ピクセルタイプのデフォルトは浮動小数点数ですが、 pixeltypeパラメータで指定できます。bandnumberを指定しな場合には、1番を仮定します。
新しいラスターは元ラスターと同じジオリファレンス、同じ幅、同じ高さを持ちます。指定されていないバンドは変更されずに返ります。
Availability: 3.6.0
小さいラスターを作ってピクセルに新しい値をマップしていきます。
CREATE TABLE reclassexact (
id integer,
rast raster
);
--
-- Create a raster with just four pixels
-- [1 2]
-- [3 4]
--
INSERT INTO reclassexact (id, rast)
SELECT 1, ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(
2, -- width in pixels
2, -- height in pixels
0, -- upper-left x-coordinate
0, -- upper-left y-coordinate
1, -- pixel size in x-direction
-1, -- pixel size in y-direction (negative for north-up)
0, -- skew in x-direction
0, -- skew in y-direction
4326 -- SRID (e.g., WGS 84)
),
'32BUI'::text, -- pixel type (e.g., '32BF' for float, '8BUI' for unsigned 8-bit int)
0.0, -- initial value for the band (e.g., 0.0 or a no-data value)
-99 -- nodatavalue
),
1, -- band number (usually 1 for single-band rasters)
1, -- x origin for setting values (usually 1)
1, -- y origin for setting values (usually 1)
ARRAY[
ARRAY[1, 2],
ARRAY[3, 4]
]::double precision[][] -- 2D array of values
);
-- Reclass the values to new values
-- and dump the values of the new raster for display
WITH rc AS (
SELECT ST_ReclassExact(
rast, -- input raster
ARRAY[4,3,2,1], -- input map
ARRAY[14,13,12,11], -- output map
1, -- band number to remap
'32BUI' -- output raster pixtype
) AS rast
FROM reclassexact
WHERE id = 1
)
SELECT 'rce-1', (ST_DumpValues(rc.rast)).*
FROM rc;