Tous les produits
Search
Centre de documentation

ApsaraDB RDS:ST_MapAlgebra

Dernière mise à jour :Sep 02, 2026

Fusionne plusieurs objets raster en un seul objet raster en appliquant des expressions algébriques au niveau des pixels dans le langage Algebra Computing Language.

Syntaxe

raster ST_MapAlgebra(raster[] rasters,
        cstring algebraExpr  DEFAULT NULL,
        cstring storageOption DEFAULT '')

Paramètres

Paramètre Description
rasters Tableau d'objets raster source à traiter.
algebraExpr Tableau JSON qui définit les expressions algébriques à appliquer. Chaque objet JSON du tableau génère une bande de sortie.
storageOption Objet JSON qui contrôle la manière dont l'objet raster de sortie est stocké.
La fonction exige uniquement que tous les objets raster source partagent la même unité de mesure pour la width et la height. Elle ne valide pas les systèmes de référence spatiale ni les résolutions. Si vos rasters source utilisent des unités différentes, utilisez ST_Transform , ST_Resize et ST_Clip pour les normaliser au préalable.

Paramètre algebraExpr

Le paramètre algebraExpr accepte un tableau JSON. Chaque objet du tableau définit une bande de sortie.

Mots-clés d'expression

Utilisez les mots-clés suivants pour faire référence aux valeurs et positions des pixels au sein d'une expression :

Mot-clé Description
[r, b] Valeur du pixel à la bande b du raster r. Les index r et b sont basés sur zéro (de 0 à n−1).
x Index de colonne basé sur zéro du pixel actuel.
y Index de ligne basé sur zéro du pixel actuel.

Champs JSON

Champ Type Valeur par défaut Description
algebraExpr String — Expression algébrique à évaluer pour chaque pixel.
nodata Boolean false Contrôle la gestion des pixels ayant une valeur nodata. Définissez ce paramètre sur true pour ignorer ces pixels ; leur valeur de sortie est alors définie sur nodataValue. Définissez-le sur false pour les inclure dans le calcul.
nodataValue float8 0 Valeur écrite dans les pixels de sortie ignorés lorsque nodata est défini sur true.

Opérateurs et fonctions pris en charge

Type Opérateurs / fonctions Notes
Arithmétique +, -, *, /, % (reste), ** (puissance)
Bitwise <<, >>, &, ` `, ^

Logique <, >, ==, !=, <=, >=, &&, `

`, !

Fonctions mathématiques abs, sqrt, exp, log, ln, sin, cos, tan, sinh, cosh, tanh, arcsin, arccos, arctan, ceil, floor, round Spécifiez une seule fonction mathématique.
Fonctions statistiques min, max, sum, mean, majority, minority, std, median, range, variety Spécifiez deux fonctions statistiques ou plus.

Exemples algebraExpr

Exemple 1 : Combinaison linéaire de bandes (bande de sortie unique)

Génère un raster à bande unique. L'expression combine la bande 0 de raster[0] avec les bandes 0 et 1 de raster[1] :

[
    {
        "expr": "([0,0] + [1,0] * [1,1])",
        "nodata": true,
        "nodataValue": 999
    }
]

Exemple 2 : Écart type entre les bandes

Calcule l'écart type de trois bandes issues du même objet raster :

[
    {
        "expr": "(std([0,0],[0,1],[0,2]))",
        "nodata": true,
        "nodataValue": 999
    }
]

Exemple 3 : Sortie multibande avec expressions par bande

Génère un raster à trois bandes. Chaque objet JSON pilote une bande de sortie — respectivement le minimum, le maximum et la moyenne de trois bandes source :

[
    {
        "expr": "(min([0,0],[0,1],[0,2]))",
        "nodata": true,
        "nodataValue": 999
    },
    {
        "expr": "(max([0,0],[0,1],[0,2]))",
        "nodata": true,
        "nodataValue": 999
    },
    {
        "expr": "(mean([0,0],[0,1],[0,2]))",
        "nodata": true,
        "nodataValue": 999
    }
]

Paramètre storageOption

Le paramètre storageOption accepte un objet JSON contenant les champs suivants. Tous les champs sont facultatifs et leurs valeurs par défaut correspondent aux paramètres des objets raster source.

Champ Type Valeur par défaut Description
chunking Boolean Identique à la source Indique si la sortie doit être stockée sous forme de chunks.
chunkdim String Identique à la source Dimensions des chunks. Prend effet uniquement lorsque chunking est défini sur true.
chunktable String '' (vide) Nom de la table de chunks. Par défaut, une table temporaire portant un nom aléatoire est créée et n'est valide que pour la session en cours. Spécifiez un nom pour rendre l'objet raster de sortie permanent.
compression String Identique à la source Format de compression. Valeurs valides : None, JPEG, Zlib, PNG, LZO, LZ4.
quality Integer Identique à la source Qualité de l'image. Prend effet uniquement lorsque compression est défini sur JPEG.
interleaving String Identique à la source Format d'entrelacement. Valeurs valides : bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ).
endian String Identique à la source Ordre des octets. NDR pour little-endian ; XDR pour big-endian.

Exemple

L'exemple suivant lit des rasters à partir de deux tables, applique une expression linéaire de bande et écrit le résultat dans une table de chunks permanente.

-- Create a permanent chunk table to hold the output raster object.
CREATE TABLE rast_mapalgebra_result(id integer, rast raster);

-- Merge rasters from t1 and t2, then write the result to the permanent chunk table.
-- Expression: band[0] of raster[0] + 0.5 × band[0] of raster[1] − band[1] of raster[1]
WITH foo AS (
  SELECT 1 AS rid, rast AS rast FROM t1 WHERE id = 1
UNION ALL
  SELECT 2 AS rid, rast AS rast FROM t2 WHERE id = 2
)
INSERT INTO rast_mapalgebra_result
SELECT 1, ST_MapAlgebra(
    ARRAY(SELECT rast FROM foo ORDER BY rid),
    '[{"expr":"([0,0] + 0.5 * [1,0] - ([1,1])","nodata": true, "nodataValue":999}]',
    '{"chunktable":"algebra_rbt"}'  -- Store output in the permanent chunk table "algebra_rbt"
);