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 |
|
|
Array de objetos raster source para processamento. |
|
|
Array JSON que define as expressões algébricas a aplicar. Cada objeto JSON no array gera uma banda de saída. |
|
|
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 |
|
|
Valor do pixel na banda |
|
|
Índice da coluna do pixel atual, baseado em zero. |
|
|
Índice da linha do pixel atual, baseado em zero. |
Campos JSON
|
Campo |
Tipo |
Padrão |
Descrição |
|
|
String |
— |
Expressão algébrica a avaliar para cada pixel. |
|
|
Booleano |
|
Controla o tratamento de pixels com valor nodata. Defina como |
|
|
float8 |
|
Valor gravado nos pixels de saída ignorados quando |
Operadores e funções compatíveis
|
Tipo |
Operadores / funções |
Observações |
||
|
Aritméticos |
|
|||
|
Bitwise |
|
`, |
||
|
Lógicos |
|
`, |
||
|
Funções matemáticas |
|
Especifique apenas uma função matemática. |
||
|
Funções estatísticas |
|
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 |
|
|
Booleano |
Igual ao source |
Indica se a saída deve ser armazenada em chunks. |
|
|
String |
Igual ao source |
Dimensões dos chunks. Tem efeito apenas quando |
|
|
String |
|
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. |
|
|
String |
Igual ao source |
Formato de compressão. Valores válidos: |
|
|
Inteiro |
Igual ao source |
Qualidade da imagem. Tem efeito apenas quando |
|
|
String |
Igual ao source |
Formato de intercalação. Valores válidos: |
|
|
String |
Igual ao source |
Ordem de bytes. |
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"
);