Name

ST_MapAlgebra (expression version) — Expression version - Returnerar ett enbandsraster med ett eller två indataraster, bandindex och ett eller flera användarspecifika SQL-uttryck.

Synopsis

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);

Beskrivning

Expression version - Returnerar ett enbandsraster med ett eller två indataraster, bandindex och ett eller flera användarspecifika SQL-uttryck.

Tillgänglighet: 2.1.0

Beskrivning: Varianter 1 och 2 (ett raster)

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

    1. [rast] - Pixelvärdet för den intressanta pixeln

    2. [rast.val] - Pixelvärdet för den intressanta pixeln

    3. [rast.x] - 1-baserad pixelkolumn för den intressanta pixeln

    4. [rast.y] - 1-baserad pixelrad för den intressanta pixeln

Beskrivning: Varianter 3 och 4 (två raster)

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

  1. INTERSECTION - Det nya rastrets utsträckning är skärningspunkten mellan de två rastren. Detta är standardinställningen.

  2. UNION - Utbredningen av det nya rastret är en sammanslagning av de två rastren.

  3. FIRST - Utbredningen av det nya rastret är densamma som för det första rastret.

  4. 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

    1. [rast1] - Pixelvärdet för den intressanta pixeln från rast1

    2. [rast1.val] - Pixelvärdet för den intressanta pixeln från rast1

    3. [rast1.x] - 1-baserad pixelkolumn för den intressanta pixeln från rast1

    4. [rast1.y] - 1-baserad pixelrad för den intressanta pixeln från rast1

    5. [rast2] - Pixelvärdet för den intressanta pixeln från rast2

    6. [rast2.val] - Pixelvärdet för den intressanta pixeln från rast2

    7. [rast2.x] - 1-baserad pixelkolumn för den intressanta pixeln från rast2

    8. [rast2.y] - 1-baserad pixelrad för den intressanta pixeln från rast2

Exempel: Varianterna 1 och 2

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;
                    

Exempel: Variant 3 och 4

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;