すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ST_BuildPyramidUseGeomSideLen

最終更新日:Sep 14, 2026

このトピックでは、ST_BuildPyramidUseGeomSideLen 関数について説明します。この関数は、元のベクターテーブルにベクターデータのバウンディングボックスの長さを記録する列があり、その列にインデックスが作成されている場合にピラミッドを構築します。例えば、B-tree インデックスが作成されている場合などです。ST_BuildPyramid 関数と比較して、ST_BuildPyramidUseGeomSideLen 関数はピラミッドの構築と更新の効率を大幅に向上させます。

構文

boolean ST_BuildPyramidUseGeomSideLen(cstring table, cstring geom_field, cstring geom_side_len_field, cstring fid, cstring config);

パラメーター

パラメーター

説明

table

空間ジオメトリテーブルの名前。

geom_field

ジオメトリフィールドの名前。

geom_side_len_field

geom_field 列のジオメトリのバウンディングボックスの最大辺長を記録するフィールドの名前。

fid

フィーチャ ID フィールドの名前。

config

ピラミッドを作成するためのパラメーター。

config パラメーターの定義は、ST_BuildPyramid と同じです。

例

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 roads%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}');