Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_MapAlgebra

Última atualização: Sep 02, 2026

Mescla vários objetos raster em um único objeto raster ao aplicar expressões algébricas no nível de pixel na Algebra Computing Language.

Sintaxe

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

Parâmetros

Parâmetro

Descrição

rasters

Array de objetos raster source para processamento.

algebraExpr

Array JSON que define as expressões algébricas a aplicar. Cada objeto JSON no array gera uma banda de saída.

storageOption

Objeto JSON que controla o armazenamento do objeto raster de saída.

A função exige apenas que todos os objetos raster source compartilhem a mesma unidade de medida para largura e altura. Ela não valida sistemas de referência espacial ou resoluções. Se seus rasters source usarem unidades diferentes, use ST_Transform , ST_Resize e ST_Clip para normalizá-los antes.

Parâmetro algebraExpr

algebraExpr aceita um array JSON. Cada objeto no array define uma banda de saída.

Palavras-chave de expressão

Use as seguintes palavras-chave para referenciar valores e posições de pixels em uma expressão:

Palavra-chave

Descrição

[r, b]

Valor do pixel na banda b do raster r. Tanto r quanto b são índices baseados em zero (0 a n−1).

x

Índice da coluna do pixel atual, baseado em zero.

y

Índice da linha do pixel atual, baseado em zero.

Campos JSON

Campo

Tipo

Padrão

Descrição

algebraExpr

String

Expressão algébrica a avaliar para cada pixel.

nodata

Booleano

false

Controla o tratamento de pixels com valor nodata. Defina como true para ignorar esses pixels; o valor de saída será definido como nodataValue. Defina como false para incluí-los no cálculo.

nodataValue

float8

0

Valor gravado nos pixels de saída ignorados quando nodata é true.

Operadores e funções compatíveis

Tipo

Operadores / funções

Observações

Aritméticos

+, -, *, /, % (resto), ** (potência)

Bitwise

<<, >>, &, `

`, ^

Lógicos

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

`, !

Funções matemáticas

abs, sqrt, exp, log, ln, sin, cos, tan, sinh, cosh, tanh, arcsin, arccos, arctan, ceil, floor, round

Especifique apenas uma função matemática.

Funções estatísticas

min, max, sum, mean, majority, minority, std, median, range, variety

Especifique duas ou mais funções estatísticas.

Exemplos de algebraExpr

Exemplo 1: Combinação linear de bandas (única banda de saída)

Gera um raster de banda única. A expressão combina a banda 0 de raster[0] com as bandas 0 e 1 de raster[1]:

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

Exemplo 2: Desvio padrão entre bandas

Calcula o desvio padrão de três bandas do mesmo objeto raster:

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

Exemplo 3: Saída multibanda com expressões por banda

Produz um raster de três bandas. Cada objeto JSON controla uma banda de saída — mínimo, máximo e média das três bandas source, respectivamente:

[
    {
        "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
    }
]

Parâmetro storageOption

storageOption aceita um objeto JSON com os campos abaixo. Todos os campos são opcionais e assumem, por padrão, a mesma configuração dos objetos raster source.

Campo

Tipo

Padrão

Descrição

chunking

Booleano

Igual ao source

Indica se a saída deve ser armazenada em chunks.

chunkdim

String

Igual ao source

Dimensões dos chunks. Tem efeito apenas quando chunking é true.

chunktable

String

'' (vazio)

Nome da tabela de chunks. Por padrão, cria-se uma tabela temporária com nome aleatório, válida apenas para a sessão atual. Especifique um nome para tornar o objeto raster de saída permanente.

compression

String

Igual ao source

Formato de compressão. Valores válidos: None, JPEG, Zlib, PNG, LZO, LZ4.

quality

Inteiro

Igual ao source

Qualidade da imagem. Tem efeito apenas quando compression é JPEG.

interleaving

String

Igual ao source

Formato de intercalação. Valores válidos: bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ).

endian

String

Igual ao source

Ordem de bytes. NDR para little-endian; XDR para big-endian.

Exemplo

O exemplo a seguir lê rasters de duas tabelas, aplica uma expressão linear de bandas e grava o resultado em uma tabela 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"
);