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 |
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.
Nota O campo UpdateBoxScale equilibra a precisão e a eficiência das atualizações.
|
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}';