Todos os produtos
Search
Central de documentação

:ST_UpdatePyramid

Última atualização: Sep 02, 2026

Este tópico descreve a função ST_UpdatePyramid. Essa função atualiza pirâmides vetoriais específicas. O intervalo de atualização é definido pelo parâmetro update_extent, cujo valor utiliza o formato Box2D. Utilize esta função sempre que a tabela vetorial original sofrer modificações. Por exemplo, ao adicionar ou excluir dados da tabela, chame a função ST_UpdatePyramid informando o intervalo de coordenadas atualizado no parâmetro update_extent para visualizar os resultados da alteração.

Sintaxe

boolean ST_UpdatePyramid(cstring table, cstring geom_field, cstring id_field, BOX2D update_extent, cstring rules) ;

Parâmetros

Parâmetro

Descrição

table

Nome da tabela vetorial.

geom_field

Nome da coluna com o atributo Geometry na tabela vetorial.

id_field

Nome da coluna com o atributo ID na tabela vetorial.

update_extent

Intervalo de coordenadas a atualizar, especificado no formato Box2D. O parâmetro rules define as coordenadas no formato EPSG. Valor padrão: 4326.

Por exemplo, Box2D(ST_GeomFromText('LINESTRING(-120 -80, -100 -50)')) define o intervalo de atualização como -120 < Longitude < -100, -80 < Latitude < -50.

rules

Regras para atualizar as pirâmides vetoriais. O valor deste parâmetro segue o formato JSON e contém os campos updateBoxScale e sourceSRS.

  • O campo updateBoxScale determina a camada mais alta até onde as atualizações se propagam. Se updateBoxScale for 2 e a largura máxima do intervalo de atualização for 100, apenas os tiles de nível 1 da pirâmide vetorial serão atualizados. Isso ocorre porque a divisão da largura máxima dos tiles de nível 1 por 100 resulta em um valor menor que 2, enquanto a mesma operação para os tiles de nível 0 resulta em um valor maior que 2. Nesse cenário, o intervalo global abrange longitude e latitude globais. O valor padrão do campo updateBoxScale é 10.

  • O campo sourceSRS indica o valor do parâmetro update_extent no formato EPSG. Valor padrão: 4326.

Nota

O campo UpdateBoxScale equilibra a precisão e a eficiência das atualizações.

  • Valores baixos para updateBoxScale limitam a quantidade de tiles atualizados, mas alguns tiles podem não refletir as alterações.

  • Valores altos para updateBoxScale aumentam o número de tiles processados e garantem que mais tiles reflitam o resultado da atualização. Por exemplo, com updateBoxScale definido como 100000 e maxLevel igual a 16, a atualização propaga-se da base até o nó raiz.

Exemplos

-- Delete the table that has the same name as other tables.
DROP TABLE IF EXISTS test_update_line;

-- Create a test table.
CREATE TABLE test_update_line(id int primary key, geom geometry(LineString, 4326));

-- Insert data into the test table.
INSERT INTO test_update_line(id, geom)
SELECT i,
    ST_GeomFromText(format('LINESTRING(%s %s,%s %s)',
                        (floor(i/100)*0.01+10), (floor(i%100)*0.01+10),
                        (floor(i/100+1)*0.01+10), (floor(i%100+1)*0.01+10)), 4326)
FROM generate_series(1, 10000) i;

-- Create an index for the geom column.
CREATE INDEX ON test_update_line using gist(geom);

-- Create a vector pyramid to accelerate the display of data. In addition, if the Raster extension is installed, you must add ::cstring to each parameter to avoid conflicts. 
SELECT ST_BuildPyramid('test_update_line', 'geom', 'id', '{"parallel":16}');

-- Insert test data.
INSERT INTO test_update_line(id, geom)
SELECT i,
    ST_GeomFromText(
    format('LINESTRING(%s %s,%s %s)',
          (floor(i/100)*0.01-10), (floor(i%100)*0.01-10),
          (floor(i/100+1)*0.01+10), (floor(i%100+1)*0.01+10)),
          4326)
  FROM generate_series(10001, 15000) i;
  
-- Update partial data of the vector pyramid.
SELECT ST_UpdatePyramid('test_update_line', 'geom', 'id', Box2D(ST_GeomFromText('LINESTRING(-20 -20, 20 20)')), '{"updateBoxScale":10}';