Topik ini menjelaskan fungsi ST_BuildPyramidUseGeomSideLen. Fungsi ini membangun piramida jika tabel vektor asli memiliki kolom yang mencatat panjang sisi geometri Kotak pembatas data vektor, dan indeks telah dibuat untuk kolom tersebut, seperti indeks Pohon-B. Dibandingkan dengan ST_BuildPyramid, ST_BuildPyramidUseGeomSideLen secara signifikan meningkatkan efisiensi dalam membangun dan memperbarui piramida.
Sintaksis
boolean ST_BuildPyramidUseGeomSideLen(cstring table, cstring geom_field, cstring geom_side_len_field, cstring fid, cstring config);Parameter
| Parameter | Deskripsi |
| table | Nama tabel data geometri spasial. |
| geom_field | Nama bidang geometri. |
| geom_side_len_field | Nama bidang untuk kolom yang mencatat panjang sisi maksimum dari Kotak pembatas geometri. Geometri tersebut dicatat di kolom lain dan ditentukan oleh parameter geom_field. |
| fid | Nama bidang ID elemen. |
| config | Parameter yang Anda gunakan untuk membangun piramida. |
Definisi parameter config sama dengan yang dijelaskan pada ST_BuildPyramid.
Contoh
ALTER TABLE roads
ADD COLUMN geom_side_len DOUBLE PRECISION;
CREATE OR REPLACE FUNCTION add_max_len_values() RETURNS VOID AS $$
DECLARE
t_curs CURSOR FOR
SELECT * FROM roads;
t_row test_polygon_geom_side_len%ROWTYPE;
gm GEOMETRY;
x_min DOUBLE PRECISION;
x_max DOUBLE PRECISION;
y_min DOUBLE PRECISION;
y_max DOUBLE PRECISION;
BEGIN
FOR t_row IN t_curs LOOP
SELECT t_row.geom INTO gm;
SELECT ST_XMin(gm) INTO x_min;
SELECT ST_XMax(gm) INTO x_max;
SELECT ST_YMin(gm) INTO y_min;
SELECT ST_YMax(gm) INTO y_max;
UPDATE roads
SET geom_side_len = GREATEST(x_max - x_min, y_max - y_min)
WHERE CURRENT OF t_curs;
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT add_max_len_values();
CREATE INDEX ON roads USING btree(geom_side_len);
SELECT ST_BuildPyramidUseGeomSideLen('roads', 'geom', 'geom_side_len', 'id',
'{"parallel":4}');