このトピックでは、ST_BuildPyramidUseGeomSideLen関数について説明します。 この関数は、元のベクトルテーブルにベクトルデータのバウンディングボックスの長さを記録する列があり、この列にインデックスが作成されている場合にピラミッドを構築します。 例えば、Bツリーインデックスが作成される。 ST_BuildPyramid関数と比較して、ST_BuildPyramidUseGeomSideLen関数はピラミッドの構築と更新の効率を大幅に向上させます。
構文
boolean ST_BuildPyramidUseGeomSideLen(cstring table、cstring geom_field、cstring geom_side_len_field、cstring、cstring config);
パラメーター
パラメーター | 説明 |
テーブル | 空間ジオメトリデータテーブルの名前。 |
geom_field | ジオメトリフィールドの名前。 |
geom_side_len_フィールド | ジオメトリの境界ボックスの最大辺の長さを記録する列のフィールドの名前。 ジオメトリは別の列に記録され、geom_fieldパラメーターで指定されます。 |
fid | 要素IDフィールドの名前。 |
config | ピラミッドの構築に使用するパラメーター。 |
configパラメーターの定義は、ST_BuildPyramidの定義と同じです。
例
ALTERテーブル道路
COLUMN geom_side_lenダブル精度を追加します。関数の作成または交換add_max_len_values() $$としてVOIDを返します
DECLARE
t_cursカーソル
SELECT * 道路から;
t_row test_polygon_geom_side_len % ROWTYPE;
gm GEOMETRY;
x_minダブル精度;
x_maxダブル精度;
y_minダブル精度;
y_maxダブル精度;
開始
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;
道路の更新
SET geom_side_len = GREATEST(x_max - x_min, y_max - y_min)
t_cursの現在の場所;
エンドループ;
エンド;
$$言語plpgsql;
SELECT add_max_len_values();
btree(geom_side_len) を使用して道路にインデックスを作成します。SELECT ST_BuildPyramidUseGeomSideLen('roads' 、'geom' 、'geom_side_len '、'id' 、
'{"parallel":4}');