Name

ST_MapAlgebra (expression version) — Version avec expression - Retourne un raster à une bande à partir d'un ou deux rasters d'entrée, d'index de bandes et d'une ou plusieurs expressions SQL spécifiées par l'utilisateur.

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

Description

Version avec expression - Retourne un raster à une bande à partir d'un ou deux rasters d'entrée, d'index de bandes et d'une ou plusieurs expressions SQL spécifiées par l'utilisateur.

Disponibilité : 2.1.0

Description : Variantes 1 et 2 (un raster)

Crée un nouveau raster à une bande formé en appliquant une opération algébrique PostgreSQL valide définie par expression sur le raster d'entrée (rast). Si nband n'est pas fourni, la bande 1 est utilisée. Le nouveau raster aura la même géoréférence, la même largeur et la même hauteur que le raster original mais n'aura qu'une seule bande.

Si pixeltype est fourni, le nouveau raster aura une bande de ce type de pixel. Si pixeltype est NULL, la nouvelle bande raster aura le même type de pixel que la bande d'entrée de rast.

  • Mots clés possibles pour expression

    1. [rast] - Valeur du pixel d'intérêt

    2. [rast.val] - Valeur du pixel d'intérêt

    3. [rast.x] - colonne du pixel d'intérêt (démarrant à 1)

    4. [rast.y] - ligne du pixel d'intérêt (démarrant à 1)

Description : Variantes 3 et 4 (deux rasters)

Crée un nouveau raster à une bande formé en appliquant une opération algébrique PostgreSQL valide aux deux bandes définies par expression sur les deux bandes d'entrée rast1 (et optionnellement rast2). Si aucune bande band1, band2 n'est spécifiée, la bande 1 est utilisée. Le raster résultant sera aligné (échelle, obliquité et coins) sur la grille définie par le premier raster. Le raster résultant aura l'étendue définie par le paramètre extenttype.

expression

Une expression algébrique PostgreSQL impliquant les deux rasters et les fonctions/opérateurs définis par PostgreSQL qui définiront la valeur du pixel lorsque les pixels intersectent, par exemple (([rast1] + [rast2])/2.0)::integer

pixeltype

Le type de pixel résultant du raster de sortie. Doit être l'un de ceux listés dans ST_BandPixelType, omis ou NULL. S'il n'est pas fourni ou NULL, le type de pixel du premier raster sera utilisé par défaut.

extenttype

Contrôle l'étendue du raster de sortie

  1. INTERSECTION - L'étendue du nouveau raster est l'intersection des deux rasters. Il s'agit de la valeur par défaut.

  2. UNION - L'étendue du nouveau raster est l'union des deux rasters.

  3. FIRST - L'étendue du nouveau raster est la même que celle du premier raster.

  4. SECOND - L'étendue du nouveau raster est la même que celle du second raster.

nodata1expr

Une expression algébrique impliquant uniquement rast2, ou une constante qui définit la valeur à retourner lorsque les pixels de rast1 sont des valeurs nodata et que les pixels correspondants dans rast2 ont des valeurs.

nodata2expr

Une expression algébrique impliquant uniquement rast1, ou une constante qui définit la valeur à retourner lorsque les pixels de rast2 sont des valeurs nodata et que les pixels correspondants dans rast1 ont des valeurs.

nodatanodataval

Constante numérique à retourner lorsque les pixels de rast1 et de rast2 sont tous deux des valeurs nodata.

  • Mots clés possibles dans expression, nodata1expr et nodata2expr

    1. [rast1] - Valeur du pixel d'intérêt sur rast1

    2. [rast1.val] - Valeur du pixel d'intérêt de rast1

    3. [rast1.x] - Colonne du pixel d'intérêt de rast1 (démarrant à 1)

    4. [rast1.y] - Ligne du pixel d'intérêt de rast1 (démarrant à 1)

    5. [rast2] - Valeur du pixel d'intérêt sur rast2

    6. [rast2.val] - Valeur du pixel d'intérêt de rast2

    7. [rast2.x] - Colonne du pixel d'intérêt de rast2 (démarrant à 1)

    8. [rast2.y] - Ligne du pixel d'intérêt de rast2 (démarrant à 1)

Exemples : Variantes 1 et 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;
                    

Exemples : Variantes 3 et 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;