Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_Transform

Última atualização: Sep 01, 2026

A função ST_Transform reprojeta um objeto raster de um sistema de referência espacial (SRS) para outro ao transformar as coordenadas subjacentes e reamostrar os valores dos pixels.

Sintaxe

raster ST_Transform(raster rast,
           integer outSrid,
           cstring processExpr default '',
           cstring storageOption default '')

Parâmetros

Parâmetro

Descrição

rast

Objeto raster source a reprojetar.

outSrid

SRID do sistema de referência espacial de destino. Deve ser um SRID válido na tabela spatial_ref_sys.

processExpr

String JSON que controla a reamostragem de pixels e o tratamento de nodata.

storageOption

String JSON que define o armazenamento do raster de saída.

Campos de processExpr

Campo

Tipo

Padrão

Descrição

resample

Text

Near

Algoritmo de reamostragem. Valores válidos: Near, Average, Cubic, Bilinear.

nodata

Boolean

false

Defina se os valores nodata no raster source são tratados como válidos. Se true, pixels com valores nodata não passam por reamostragem. Se false, esses pixels são reamostrados.

nodataValue

float8 ou float8[]

NULL

Valor(es) nodata a atribuir às bandas do raster de saída. Especifique um único valor para aplicar a todas as bandas ou um array com um valor por banda.

Aviso

Configure nodata e nodataValue com atenção. Caso o raster source não possua pixels com valores nodata, defina nodata como false e omita nodataValue. Caso contrário, podem ocorrer artefatos na imagem.

Campos de storageOption

Campo

Tipo

Padrão

Descrição

chunking

Boolean

Igual ao source

Indica se o raster de saída deve ser armazenado em chunks.

chunkdim

String

Igual ao source

Dimensões dos chunks. Aplica-se apenas quando chunking é true.

chunktable

String

'' (string vazia)

Nome da tabela de chunks para armazenamento permanente. Se estiver vazio ou for NULL, o sistema cria uma tabela de chunks temporária com nome aleatório e a exclui ao final da sessão. Para persistir o raster de saída, especifique um nome de tabela.

compression

String

Igual ao source

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

quality

Integer

Igual ao source

Qualidade da imagem. Válido apenas para o formato JPEG.

interleaving

String

Igual ao source

Tipo 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. Use NDR para little endian e XDR para big endian.

Exemplos

Os exemplos a seguir utilizam um arquivo GeoTIFF carregado em uma tabela source.

CREATE TABLE IF NOT EXISTS datasource_table (id integer, rast raster);
INSERT INTO datasource_table VALUES (
  1,
  ST_ImportFrom('rbt', '$(RAST_DATA_DIR)/512_512_1_bsq_8u_geo.tif', '{}')
);

Persistir a saída em uma tabela de chunks permanente

Especifique um nome para chunktable para salve o raster reprojetado entre sessões.

Sem nodata:

CREATE TABLE rat_transform_result (id integer, rast raster);

INSERT INTO rat_transform_result (id, rast)
SELECT
  10,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

Com um único valor nodata (pixels com valores nodata são reamostrados):

INSERT INTO rat_transform_result (id, rast)
SELECT
  11,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":true,"nodatavalue":255}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

Com valores nodata por banda:

INSERT INTO rat_transform_result (id, rast)
SELECT
  12,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false,"nodatavalue":[255,255,255]}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

Armazenar a saída em uma tabela de chunks temporária

Omita chunktable para gravar a saída em uma tabela temporária com escopo de sessão. O sistema exclui essa tabela ao encerrar a sessão; portanto, utilize este padrão apenas para computações intermediárias.

CREATE TEMP TABLE rat_transform_result_temp (id integer, rast raster);

INSERT INTO rat_transform_result_temp (id, rast)
SELECT
  1,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}'
  )
FROM datasource_table
WHERE id = 1;