このトピックでは、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フィールドは、更新の精度と効率のバランスを取るために使用されます。
|
例
-- 他のテーブルと同じ名前のテーブルを削除します。
ドロップテーブルが存在する場合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;
-geom列のインデックスを作成します。
gist(geom) を使用してtest_update_lineでインデックスを作成します。-ベクトルピラミッドを作成して、データの表示を高速化します。 さらに、Raster拡張機能がインストールされている場合は、競合を避けるために各パラメーターに::cstringを追加する必要があります。
SELECT ST_BuildPyramid('test_update_line ', 'geom', 'id', '{"parallel":16}');
-テストデータを挿入します。
INSERT INTO test_update_line(id, geom)
SELECT i,
ST_GeomFromText (
フォーマット ('LINESTRING (% s % 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}';