ST_MapAlgebraExpr — Version mit 1 Rasterband: Erzeugt ein neues Rasterband, dass über eine gültige, algebraische PostgreSQL Operation für ein Rasterband mit gegebenen Pixeltyp erstellt wird. Wenn kein Band bestimmt ist, wird Band 1 angenommen.
raster ST_MapAlgebraExpr(
raster rast, integer band, text pixeltype, text expression, double precision nodataval=NULL)
;
raster ST_MapAlgebraExpr(
raster rast, text pixeltype, text expression, double precision nodataval=NULL)
;
ST_MapAlgebraExpr Seit der Version 2.1.0 überholt. Benutzen Sie stattdessen bitte ST_MapAlgebra (expression version) . |
Erstellt ein neues Rasterband indem eine gültige algebraische PostgreSQL Operation (expression
) auf den Ausgangsraster (rast
) angewendet wird. Wenn kein band
festgelegt ist, wird Band 1 angenommen. Der Zielraster hat die selbe Georeferenzierung, Breite und Höhe wie der ursprüngliche Raster, hat aber nur ein Band.
Wenn pixeltype
angegeben ist, dann hat das Band des neuen Rasters diesen Pixeltyp. Wenn für den Pixeltyp NULL übergeben wird, dann hat das neue Rasterband denselben Pixeltyp wie das gegebene Band von rast
Im Ausdruck können Sie folgende Terme verwenden: [rast]
für den Zellwert des ursprünglichen Bandes, [rast.x]
für den von 1 wegzählenden Index der Rasterspalten, [rast.y]
für den von 1 wegzählenden Index der Rasterzeilen.
Verfügbarkeit: 2.0.0
Erzeugt einen Einzelbandraster, der sich durch die Anwendung der Funktion "modulo 2" auf das ursprüngliche Rasterband ergibt.
ALTER TABLE dummy_rast ADD COLUMN map_rast raster; UPDATE dummy_rast SET map_rast = ST_MapAlgebraExpr(rast,NULL,'mod([rast]::numeric,2)') WHERE rid = 2; SELECT ST_Value(rast,1,i,j) As origval, ST_Value(map_rast, 1, i, j) As mapval FROM dummy_rast CROSS JOIN generate_series(1, 3) AS i CROSS JOIN generate_series(1,3) AS j WHERE rid = 2; origval | mapval ---------+-------- 253 | 1 254 | 0 253 | 1 253 | 1 254 | 0 254 | 0 250 | 0 254 | 0 254 | 0
Erzeugt einen neuen Einzelbandraster mit dem Pixeltyp 2BUI. Der ursprüngliche Raster wird dabei neu klassifiziert und mit einem NODATA Wert von 0 versehen.
ALTER TABLE dummy_rast ADD COLUMN map_rast2 raster; UPDATE dummy_rast SET map_rast2 = ST_MapAlgebraExpr(rast,'2BUI'::text,'CASE WHEN [rast] BETWEEN 100 and 250 THEN 1 WHEN [rast] = 252 THEN 2 WHEN [rast] BETWEEN 253 and 254 THEN 3 ELSE 0 END'::text, '0') WHERE rid = 2; SELECT DISTINCT ST_Value(rast,1,i,j) As origval, ST_Value(map_rast2, 1, i, j) As mapval FROM dummy_rast CROSS JOIN generate_series(1, 5) AS i CROSS JOIN generate_series(1,5) AS j WHERE rid = 2; origval | mapval ---------+-------- 249 | 1 250 | 1 251 | 252 | 2 253 | 3 254 | 3 SELECT ST_BandPixelType(map_rast2) As b1pixtyp FROM dummy_rast WHERE rid = 2; b1pixtyp ---------- 2BUI
|
|
Erzeugt einen neuen Raster mit 3 Bändern und demselben Pixeltyp als unser ursprünglicher Raster mit 3 Bändern. Das erste Band wird über einen Map Algebra Ausdruck geändert, die verbleibenden 2 Bänder sind unverändert.
SELECT ST_AddBand( ST_AddBand( ST_AddBand( ST_MakeEmptyRaster(rast_view), ST_MapAlgebraExpr(rast_view,1,NULL,'tan([rast])*[rast]') ), ST_Band(rast_view,2) ), ST_Band(rast_view, 3) ) As rast_view_ma FROM wind WHERE rid=167;