このトピックでは、ST_UpdatePyramid関数について説明します。 この関数は、いくつかのベクトルピラミッドを更新します。 更新範囲はupdate_extentパラメーターで指定します。 このパラメータの値はBox2Dでラベル付けされています。 この関数は、元のベクトルテーブルが変更されたときに呼び出すことができます。 たとえば、テーブルにデータが追加または削除された場合、座標の更新範囲をupdate_extentパラメーターに渡すことで、ST_UpdatePyramid関数を呼び出すことができます。 この方法で、更新結果を表示できます。
構文
boolean ST_UpdatePyramid(cstringテーブル、cstring geom_field、cstring id_field、BOX2D update_extent、cstringルール) ;パラメーター
| パラメーター | 説明 |
| テーブル | ベクトルテーブルの名前。 |
| geom_field | ベクトルテーブルのGeometry属性を持つ列の名前。 |
| id_field | ベクトルテーブルのID属性を持つ列の名前。 |
| update_extent | 更新する座標の範囲。 範囲はBox2D形式です。 EPSGフォーマットの座標は、ルールパラメータによって指定される。 デフォルト値: 4326 例えば、Box2D(ST_GeomFromText('LINESTRING(-120 -80, -100 -50)')) は、 |
| ルール | いくつかのベクトルピラミッドを更新するために使用されるルール。 このパラメーターの値はJSON形式で、updateBoxScaleフィールドとsourceSRSフィールドで構成されます。
説明 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 (フォーマット ('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;
gist(geom) を使用してtest_update_lineでインデックスを作成します。SELECT ST_BuildPyramid('test_update_line ', 'geom', 'id', '{"parallel":16}');
st_buildpyramid
-----------------
t
(1行)
INSERT INTO test_update_line(id, geom)
SELECT i,
ST_GeomFromText (
フォーマット ('LINESTRING(% s,% s,% s)',
(フロア (i/100)* 0.01-10) 、(フロア (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)'))), '{"updateBoxScale":10}';
st_updatepyramid
-----------------
t
(1行)