ST_MapAlgebra (expression version) — Version mit Ausdrücken - Gibt für einen oder zwei Ausgangsraster, Bandindizes und einer oder mehreren vom Anwender vorgegebenen SQL-Ausdrücken, einen Raster mit einem Band zurück.
raster ST_MapAlgebra(
raster rast, integer nband, text pixeltype, text expression, double precision nodataval=NULL)
;
raster ST_MapAlgebra(
raster rast, text pixeltype, text expression, double precision nodataval=NULL)
;
raster ST_MapAlgebra(
raster rast1, integer nband1, raster rast2, integer nband2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL)
;
raster ST_MapAlgebra(
raster rast1, raster rast2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL)
;
Version mit Ausdrücken - Gibt für einen oder zwei Ausgangsraster, Bandindizes und einer oder mehreren vom Anwender vorgegebenen SQL-Ausdrücken, einen Raster mit einem Band zurück.
Verfügbarkeit: 2.1.0
Erstellt ein neues Rasterband indem eine gültige algebraische PostgreSQL Operation (expression
) auf den Ausgangsraster (rast
) angewendet wird. Wenn nband
nicht angegeben 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
Erlaubte Schlüsselwörter für expression
[rast]
- Zellwert der Pixel von Interesse
[rast.val]
- Zellwert der Pixel von Interesse
[rast.x]
- Rasterspalte (von 1 wegzählend) der Pixel von Interesse
[rast.y]
- Rasterszeile (von 1 wegzählend) der Pixel von Interesse
Erstellt einen neuen Raster mit einem Band, indem eine gültige algebraische PostgreSQL Operation auf die beiden, durch den Ausdruck expression
bestimmten Ausgangsrasterbänder rast1
und rast2
) angewendet wird. Wenn band1
oder band2
nicht angegeben ist, wird Band 1 angenommen. Der Zielraster wird an dem Gitter des ersten Raster ausgerichtet (Größe, Versatz und Eckpunkte der Pixel). Die Ausdehnung des Zielrasters wird durch den Parameter extenttype
bestimmt.
expression
Ein algebraischer PostgreSQL Ausdruck, der zwei Raster und in PostgreSQL definierte Funktionen/Operatoren einbezieht, die den Pixelwert für sich schneidende Pixel festlegt. z.B. (([rast1] + [rast2])/2.0)::integer
pixeltype
Der resultierende Pixeltyp des Zielraster muss entweder aus ST_BandPixelType sein, weggelassen oder auf NULL gesetzt werden. Wenn er nicht übergeben wird oder auf NULL gesetzt ist, wird er standardmäßig auf den Pixeltyp des ersten Raster gesetzt.
extenttype
Bestimmt die Ausdehnung des resultierenden Raster
INTERSECTION
- Die Ausdehnung des neuen Raster entspricht der Schnittmenge der beiden Raster. Die Standardeinstellung.
UNION
- Die Ausdehnung des neuen Raster entspricht der Vereinigungsmenge der beiden Raster.
FIRST
- Die Ausdehnung des neuen Raster entspricht jener des ersten Raster.
SECOND
- Die Ausdehnung des neuen Raster entspricht jender des zweiten Raster.
nodata1expr
Ein algebraischer Ausdruck der nur rast2
oder eine Konstante einbezieht. Dieser bestimmt was zurückgegeben wird, wenn die Pixel von rast1
NODATA Werte sind und die räumlich übereinstimmenden Pixel von rast2 Werte aufweisen.
nodata2expr
Ein algebraischer Ausdruck der nur rast1
oder eine Konstante einbezieht. Dieser bestimmt was zurückgegeben wird, wenn die Pixel von rast2
NODATA Werte haben und die räumlich übereinstimmenden Pixel von rast1 Werte aufweisen.
nodatanodataval
Eine numerische Konstante die ausgegeben wird, wenn die übereinstimmenden Pixel der beiden Raster "rast1" und "rast2" nur NODATA Werte enthalten.
Zugelassene Schlüsselwörter in expression
, nodata1expr
und nodata2expr
[rast1]
- Zellwert der Pixel von Interesse von rast1
[rast1.val]
- Zellwert der Pixel von Interesse von rast1
[rast1.x]
- Rasterspalte (von 1 wegzählend) der Pixel von Interesse von rast1
[rast1.y]
- Rasterzeile (von 1 wegzählend) der Pixel von Interesse von rast1
[rast2]
- Zellwert der Pixel von Interesse von rast2
[rast2.val]
- Zellwert der Pixel von Interesse von rast2
[rast2.x]
- Rasterspalte (von 1 wegzählend) der Pixel von Interesse von rast2
[rast2.y]
- Rasterzeile (von 1 wegzählend) der Pixel von Interesse von rast2
WITH foo AS ( SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) AS rast ) SELECT ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])') FROM foo;
WITH foo AS ( SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast UNION ALL SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1, 0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast ) SELECT ST_MapAlgebra( t1.rast, 2, t2.rast, 1, '([rast2] + [rast1.val]) / 2' ) AS rast FROM foo t1 CROSS JOIN foo t2 WHERE t1.rid = 1 AND t2.rid = 2;
rastbandarg, ST_Union, ST_MapAlgebra (callback function version)