對(duì)矢量金字塔進(jìn)行局部更新,更新范圍由參數(shù)update_extent(Box2D格式)指定。主要用于,當(dāng)原始矢量數(shù)據(jù)表進(jìn)行了數(shù)據(jù)更新(插入、刪除或修改)后,將更新發(fā)生的坐標(biāo)系范圍作為參數(shù)調(diào)用本函數(shù),從而允許用戶看到更新后的可視化結(jié)果。
語(yǔ)法
boolean ST_UpdatePyramid(cstring table, cstring geom_field, cstring id_field, BOX2D update_extent, cstring rules) ;
參數(shù)
參數(shù)名稱 | 描述 |
---|---|
table | 矢量數(shù)據(jù)表的名稱。 |
geom_field | 矢量數(shù)據(jù)表中Geometry屬性的列名。 |
id_field | 矢量數(shù)據(jù)表中ID屬性的列名。 |
update_extent | 需要進(jìn)行更新的EPSG格式坐標(biāo)區(qū)域范圍(Box2D格式),EPSG格式由參數(shù)rules指定,默認(rèn)為4326。
例如:Box2D(ST_GeomFromText('LINESTRING(-120 -80, -100 -50)'))指定 |
rules | JSON格式的更新參數(shù)值,參數(shù)包括updateBoxScale和sourceSRS。
說(shuō)明
updateBoxScale用于控制更新在精度和效率之間的取舍:
|
示例
DROP TABLE IF EXISTS test_update_line;
CREATE TABLE test_update_line(id int primary key, geom geometry(LineString, 4326));
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 INDEX ON test_update_line using gist(geom);
SELECT ST_BuildPyramid('test_update_line', 'geom', 'id', '{"parallel":16}');
st_buildpyramid
-----------------
t
(1 row)
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;
SELECT ST_UpdatePyramid('test_update_line', 'geom', 'id', Box2D(ST_GeomFromText('LINESTRING(-20 -20, 20 20)')), '{"updateBoxScale":10}';
st_updatepyramid
-----------------
t
(1 row)