Recorta um objeto raster com base em uma bounding box ou geometria e retorna o resultado como um blob binário. Por padrão, todas as bandas são recortadas. Controle o formato de saída e a compressão por meio de storageOption.
Sintaxe
bytea ST_Clip(raster raster_obj, integer pyramidLevel, box extent, BoxType boxType);
bytea ST_Clip(raster raster_obj, integer pyramidLevel, box extent, BoxType boxType, integer destSrid);
record ST_Clip(raster raster_obj,
geometry geom,
integer pyramidLevel default 0,
cstring bands default '',
float8[] nodata default NULL,
cstring clipOption default '',
cstring storageOption default '',
out box outwindow,
out bytea rasterblob)
Parâmetros
|
Parâmetro |
Descrição |
|
|
Objeto raster a recortar. |
|
|
Nível de pirâmide do objeto raster. |
|
|
Bounding box para recorte. Formato: |
|
|
Sistema de coordenadas da bounding box. Valores válidos: |
|
|
Identificador do sistema de referência espacial (SRID) do subconjunto de células de saída. |
|
|
Objeto de geometria usado como base para o recorte. |
|
|
Bandas a recortar, especificadas como intervalo ( |
|
|
Array de valores de preenchimento NoData (tipo |
|
|
String JSON que controla o comportamento do recorte. Consulte campos de clipOption. |
|
|
String JSON que define o formato de saída. Consulte campos de storageOption. |
|
|
(OUT) Bounding box do objeto raster retornado. |
|
|
(OUT) Matriz de pixels binária. |
Campos de clipOption
|
Campo |
Tipo |
Padrão |
Descrição |
|
|
bool |
|
Define a região de recorte. |
|
|
bool |
|
Interpreta as coordenadas da geometria como coordenadas de raster (números de coluna e linha, ambos começando em 0) em vez de coordenadas mundiais. |
Campos de storageOption
|
Campo |
Tipo |
Padrão |
Descrição |
|
|
string |
|
Algoritmo de compressão. Valores válidos: |
|
|
integer |
|
Qualidade da compressão JPEG. Aplica-se apenas quando |
|
|
string |
Igual ao source |
Formato de intercalação. Valores válidos: |
|
|
string |
Igual ao source |
Ordem dos bytes. Valores válidos: |
Observações de uso
Limite de tamanho de saída: O cache padrão de recorte é de 100 MB. Para ajustar esse limite, defina ganos.raster.clip_max_buffer_size.
Comportamento de fallback de NoData: O array nodata é associado às bandas em ordem. Se o array for menor que o número de bandas recortadas, o Ganos utiliza o valor NoData predefinido de cada banda para as bandas restantes. Quando uma banda não possui valor NoData predefinido, 0 é aplicado.
Região de recorte versus bounding box: Por padrão (window_clip: false), o raster é recortado conforme a forma exata da geometria. Defina window_clip: true para recortar pelo MBR da geometria e gerar um resultado retangular.
Exemplos
Recorte por bounding box com coordenadas mundiais
SELECT ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World')
FROM clip_table;
Recorte por bounding box com reprojeção da saída
Especifique destSrid para definir o sistema de referência espacial da saída.
SELECT ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World', 4326)
FROM clip_table;
Recorte por geometria com configurações padrão
Todas as bandas são recortadas pela forma exata do polígono. O resultado inclui tanto a janela de saída quanto a matriz de pixels binária.
SELECT (ST_Clip(rast, ST_GeomFromText('POLYGON((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0)).*
FROM clip_table
WHERE id = 1;
Recorte por geometria com fundo branco e saída PNG
Defina nodata como ARRAY[254, 254, 254] para preencher as áreas recortadas com branco. Use storageOption para comprimir a saída como PNG com intercalação BIP.
SELECT (ST_Clip(
rast,
ST_GeomFromText('POLYGON((0 0, 45 45, 90 45, 45 0, 0 0))', 4326),
0,
'',
ARRAY[254, 254, 254],
'',
'{"compression":"png","interleaving":"bip"}'
)).*
FROM clip_table
WHERE id = 1;
Recorte pela bounding box de uma geometria (window clip)
Ao definir window_clip como true, o recorte ocorre pelo MBR do polígono em vez da própria forma do polígono, produzindo uma saída retangular.
SELECT (ST_Clip(
rast,
ST_GeomFromText('POLYGON((0 0, 45 45, 90 45, 45 0, 0 0))', 4326),
0,
'',
NULL,
'{"window_clip":true}',
''
)).*
FROM clip_table
WHERE id = 1;