Topik ini menjelaskan fungsi ST_UpdatePyramid, yang memperbarui beberapa piramida vektor. Rentang pembaruan ditentukan oleh parameter update_extent, dengan nilai diberi label menggunakan Box2D. Fungsi ini dapat dipanggil ketika tabel vektor asli dimodifikasi, seperti saat data ditambahkan atau dihapus. Dengan memberikan rentang pembaruan koordinat ke parameter update_extent, Anda dapat melihat hasil pembaruan.
Sintaksis
boolean ST_UpdatePyramid(cstring table, cstring geom_field, cstring id_field, BOX2D update_extent, cstring rules) ;Parameter
Parameter | Deskripsi |
table | Nama tabel vektor. |
geom_field | Nama kolom yang memiliki atribut Geometri dalam tabel vektor. |
id_field | Nama kolom yang memiliki atribut ID dalam tabel vektor. |
update_extent | Rentang koordinat yang ingin Anda perbarui. Rentang tersebut dalam format Box2D. Koordinat dalam format EPSG ditentukan oleh parameter rules. Nilai default: 4326. Sebagai contoh, Box2D(ST_GeomFromText('LINESTRING(-120 -80, -100 -50)')) menentukan rentang pembaruan |
rules | Aturan yang digunakan untuk memperbarui beberapa piramida vektor. Nilai dari parameter ini dalam format JSON dan terdiri dari bidang updateBoxScale dan sourceSRS.
Catatan Bidang UpdateBoxScale digunakan untuk menyeimbangkan akurasi dan efisiensi pembaruan.
|
Contoh
-- Hapus tabel yang memiliki nama sama dengan tabel lain.
DROP TABLE IF EXISTS test_update_line;
-- Buat tabel uji.
CREATE TABLE test_update_line(id int primary key, geom geometry(LineString, 4326));
-- Masukkan data ke dalam tabel uji.
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;
-- Buat indeks untuk kolom geom.
CREATE INDEX ON test_update_line using gist(geom);
-- Buat piramida vektor untuk mempercepat tampilan data. Selain itu, jika ekstensi Raster diinstal, Anda harus menambahkan ::cstring ke setiap parameter untuk menghindari konflik.
SELECT ST_BuildPyramid('test_update_line', 'geom', 'id', '{"parallel":16}');
-- Masukkan data uji.
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;
-- Perbarui sebagian data dari piramida vektor.
SELECT ST_UpdatePyramid('test_update_line', 'geom', 'id', Box2D(ST_GeomFromText('LINESTRING(-20 -20, 20 20)')), '{"updateBoxScale":10}';