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.
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 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
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
[rast]
- Valeur du pixel d'intérêt
[rast.val]
- Valeur du pixel d'intérêt
[rast.x]
- colonne du pixel d'intérêt (démarrant à 1)
[rast.y]
- ligne du pixel d'intérêt (démarrant à 1)
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
.
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
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.
Contrôle l'étendue du raster de sortie
INTERSECTION
- L'étendue du nouveau raster est l'intersection des deux rasters. Il s'agit de la valeur par défaut.
UNION
- L'étendue du nouveau raster est l'union des deux rasters.
FIRST
- L'étendue du nouveau raster est la même que celle du premier raster.
SECOND
- L'étendue du nouveau raster est la même que celle du second raster.
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.
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.
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
[rast1]
- Valeur du pixel d'intérêt sur rast1
[rast1.val]
- Valeur du pixel d'intérêt de rast1
[rast1.x]
- Colonne du pixel d'intérêt de rast1
(démarrant à 1)
[rast1.y]
- Ligne du pixel d'intérêt de rast1
(démarrant à 1)
[rast2]
- Valeur du pixel d'intérêt sur rast2
[rast2.val]
- Valeur du pixel d'intérêt de rast2
[rast2.x]
- Colonne du pixel d'intérêt de rast2
(démarrant à 1)
[rast2.y]
- Ligne du pixel d'intérêt de rast2
(démarrant à 1)
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;