ST_MapAlgebra (expression version) — Expression version - Returnerar ett enbandsraster med ett eller två indataraster, bandindex och ett eller flera användarspecifika SQL-uttryck.
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)
;
Expression version - Returnerar ett enbandsraster med ett eller två indataraster, bandindex och ett eller flera användarspecifika SQL-uttryck.
Tillgänglighet: 2.1.0
Skapar ett nytt raster med ett band som bildas genom att tillämpa en giltig PostgreSQL-algebraisk operation som definieras av uttrycket
på inmatningsrastret(rast).
Om nband
inte tillhandahålls antas band 1. Den nya rastern kommer att ha samma georeferens, bredd och höjd som den ursprungliga rastern men kommer bara att ha ett band.
Om pixeltyp
skickas in kommer det nya rastret att ha ett band av den pixeltypen. Om pixeltyp skickas till NULL kommer det nya rasterbandet att ha samma pixeltyp som det ingående rasterbandet
.
Nyckelord som är tillåtna för uttryck
[rast]
- Pixelvärdet för den intressanta pixeln
[rast.val]
- Pixelvärdet för den intressanta pixeln
[rast.x]
- 1-baserad pixelkolumn för den intressanta pixeln
[rast.y]
- 1-baserad pixelrad för den intressanta pixeln
Skapar en ny enbandsraster som bildas genom att tillämpa en giltig PostgreSQL-algebraisk operation på de två banden som definieras av uttrycket
på de två inmatningsrasterbanden rast1
,(rast2)
. Om inget band1
, band2
anges antas band 1. Det resulterande rastret kommer att vara justerat (skala, skevhet och pixelhörn) på det rutnät som definieras av det första rastret. Det resulterande rastret kommer att ha den utsträckning som definieras av parametern extenttype
.
expression
Ett PostgreSQL-algebraiskt uttryck som involverar de två rasterna och PostgreSQL-definierade funktioner / operatorer som definierar pixelvärdet när pixlar korsar varandra. t.ex. (([rast1] + [rast2])/2.0):: heltal
pixeltype
Den resulterande pixeltypen för utdatarastern. Måste vara en som listas i ST_BandPixelType, utelämnas eller sätts till NULL. Om den inte skickas in eller sätts till NULL, kommer den första rastrets pixeltyp att användas som standard.
extenttype
Styr omfattningen av det resulterande rastret
INTERSECTION
- Det nya rastrets utsträckning är skärningspunkten mellan de två rastren. Detta är standardinställningen.
UNION
- Utbredningen av det nya rastret är en sammanslagning av de två rastren.
FIRST
- Utbredningen av det nya rastret är densamma som för det första rastret.
SECOND
- Utbredningen av det nya rastret är densamma som för det andra rastret.
nodata1expr
Ett algebraiskt uttryck som endast omfattar rast2
eller en konstant som definierar vad som ska returneras när pixlar i rast1
har nodatavärden och spatialt motsvarande pixlar i rast2 har värden.
nodata2expr
Ett algebraiskt uttryck som endast omfattar rast1
eller en konstant som definierar vad som ska returneras när pixlar i rast2
har nodatavärden och spatialt motsvarande pixlar i rast1 har värden.
nodatanodataval
En numerisk konstant som returneras när spatialt motsvarande rast1- och rast2-pixlar båda är nodatavärden.
Nyckelord tillåtna i uttryck
, nodata1expr
och nodata2expr
[rast1]
- Pixelvärdet för den intressanta pixeln från rast1
[rast1.val]
- Pixelvärdet för den intressanta pixeln från rast1
[rast1.x]
- 1-baserad pixelkolumn för den intressanta pixeln från rast1
[rast1.y]
- 1-baserad pixelrad för den intressanta pixeln från rast1
[rast2]
- Pixelvärdet för den intressanta pixeln från rast2
[rast2.val]
- Pixelvärdet för den intressanta pixeln från rast2
[rast2.x]
- 1-baserad pixelkolumn för den intressanta pixeln från rast2
[rast2.y]
- 1-baserad pixelrad för den intressanta pixeln från 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;