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 |
|
|
Objeto raster source a reprojetar. |
|
|
SRID do sistema de referência espacial de destino. Deve ser um SRID válido na tabela |
|
|
String JSON que controla a reamostragem de pixels e o tratamento de nodata. |
|
|
String JSON que define o armazenamento do raster de saída. |
Campos de processExpr
|
Campo |
Tipo |
Padrão |
Descrição |
|
|
Text |
|
Algoritmo de reamostragem. Valores válidos: |
|
|
Boolean |
|
Defina se os valores nodata no raster source são tratados como válidos. Se |
|
|
float8 ou float8[] |
|
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. |
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 |
|
|
Boolean |
Igual ao source |
Indica se o raster de saída deve ser armazenado em chunks. |
|
|
String |
Igual ao source |
Dimensões dos chunks. Aplica-se apenas quando |
|
|
String |
|
Nome da tabela de chunks para armazenamento permanente. Se estiver vazio ou for |
|
|
String |
Igual ao source |
Formato de compressão. Valores válidos: |
|
|
Integer |
Igual ao source |
Qualidade da imagem. Válido apenas para o formato JPEG. |
|
|
String |
Igual ao source |
Tipo de intercalação. Valores válidos: |
|
|
String |
Igual ao source |
Ordem de bytes. Use |
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;