ST_Reclass — Crée un nouveau raster composé de types de bandes reclassifiés par rapport à l'original. La bande n est la bande à modifier. Si nband n'est pas spécifié, la bande 1 est utilisée. Toutes les autres bandes sont retournées inchangées. Cas d'utilisation : convertir une bande 16BUI en 8BUI et ainsi de suite pour un rendu plus simple en tant que formats visualisables.
raster ST_Reclass(
raster rast, integer nband, text reclassexpr, text pixeltype, double precision nodataval=NULL)
;
raster ST_Reclass(
raster rast, reclassarg[] VARIADIC reclassargset)
;
raster ST_Reclass(
raster rast, text reclassexpr, text pixeltype)
;
Creates a new raster formed by applying a reclassification operation defined by the reclassexpr
on the input raster (rast
). Refer to reclassarg for the description of reclassification expressions. If no band
is specified band 1 is assumed.
The new raster will have the same georeference, width, and height as the original raster. The bands of the new raster have pixel type of pixeltype
. If reclassargset
is specified then each reclassarg
defines the type of the target band. Bands not designated are returned unchanged.
Disponibilité : 2.0.0
Crée un nouveau raster à partir de l'original où la bande 2 est convertie de 8BUI à 4BUI et où toutes les valeurs entre 101 et 254 sont fixées à nodata.
ALTER TABLE dummy_rast ADD COLUMN reclass_rast raster; UPDATE dummy_rast SET reclass_rast = ST_Reclass(rast,2,'0-87:1-10, 88-100:11-15, 101-254:0-0', '4BUI',0) WHERE rid = 2; SELECT i as col, j as row, ST_Value(rast,2,i,j) As origval, ST_Value(reclass_rast, 2, i, j) As reclassval, ST_Value(reclass_rast, 2, i, j, false) As reclassval_include_nodata FROM dummy_rast CROSS JOIN generate_series(1, 3) AS i CROSS JOIN generate_series(1,3) AS j WHERE rid = 2; col | row | origval | reclassval | reclassval_include_nodata -----+-----+---------+------------+--------------------------- 1 | 1 | 78 | 9 | 9 2 | 1 | 98 | 14 | 14 3 | 1 | 122 | | 0 1 | 2 | 96 | 14 | 14 2 | 2 | 118 | | 0 3 | 2 | 180 | | 0 1 | 3 | 99 | 15 | 15 2 | 3 | 112 | | 0 3 | 3 | 169 | | 0
Crée un nouveau raster à partir de l'original où les bandes 1, 2, 3 sont respectivement converties en 1BB, 4BUI, 4BUI et reclassifiées. Cette opération utilise l'argument variadique reclassarg
qui peut prendre en entrée un nombre variable de reclassargs (théoriquement autant de bandes que vous avez)
UPDATE dummy_rast SET reclass_rast = ST_Reclass(rast, ROW(2,'0-87]:1-10, (87-100]:11-15, (101-254]:0-0', '4BUI',NULL)::reclassarg, ROW(1,'0-253]:1, 254:0', '1BB', NULL)::reclassarg, ROW(3,'0-70]:1, (70-86:2, [86-150):3, [150-255:4', '4BUI', NULL)::reclassarg ) WHERE rid = 2; SELECT i as col, j as row,ST_Value(rast,1,i,j) As ov1, ST_Value(reclass_rast, 1, i, j) As rv1, ST_Value(rast,2,i,j) As ov2, ST_Value(reclass_rast, 2, i, j) As rv2, ST_Value(rast,3,i,j) As ov3, ST_Value(reclass_rast, 3, i, j) As rv3 FROM dummy_rast CROSS JOIN generate_series(1, 3) AS i CROSS JOIN generate_series(1,3) AS j WHERE rid = 2; col | row | ov1 | rv1 | ov2 | rv2 | ov3 | rv3 ----+-----+-----+-----+-----+-----+-----+----- 1 | 1 | 253 | 1 | 78 | 9 | 70 | 1 2 | 1 | 254 | 0 | 98 | 14 | 86 | 3 3 | 1 | 253 | 1 | 122 | 0 | 100 | 3 1 | 2 | 253 | 1 | 96 | 14 | 80 | 2 2 | 2 | 254 | 0 | 118 | 0 | 108 | 3 3 | 2 | 254 | 0 | 180 | 0 | 162 | 4 1 | 3 | 250 | 1 | 99 | 15 | 90 | 3 2 | 3 | 254 | 0 | 112 | 0 | 108 | 3 3 | 3 | 254 | 0 | 169 | 0 | 175 | 4
Crée un nouveau raster à 3 bandes (8BUI, 8BUI, 8BUI visualisable) à partir d'un raster qui n'a qu'une seule bande de 32bf
ALTER TABLE wind ADD COLUMN rast_view raster; UPDATE wind set rast_view = ST_AddBand( NULL, ARRAY[ ST_Reclass(rast, 1,'0.1-10]:1-10,9-10]:11,(11-33:0'::text, '8BUI'::text,0), ST_Reclass(rast,1, '11-33):0-255,[0-32:0,(34-1000:0'::text, '8BUI'::text,0), ST_Reclass(rast,1,'0-32]:0,(32-100:100-255'::text, '8BUI'::text,0) ] );
ST_AddBand, ST_Band, ST_BandPixelType, ST_MakeEmptyRaster, reclassarg, ST_Value