空間ジオメトリデータテーブルに対してベクターピラミッドを作成し、空間データのレンダリングを高速化します。
構文
boolean ST_BuildPyramid(cstring table, cstring geom, cstring fid, cstring config)パラメーター
| パラメーター | 説明 |
|---|---|
table | 空間ジオメトリデータテーブルの名前です。 |
geom | ジオメトリ列の名前です。 |
fid | 要素 ID フィールドの名前です。 |
config | ピラミッドの構成(JSON 文字列形式で指定)です。 |
config のフィールド
| フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
name | 文字列 | テーブル名と同一 | ピラミッドの名前です。 |
parallel | 整数 | 0 | ピラミッド構築時に並列実行されるタスクの最大数です。この設定を利用するには、max_prepared_transactions パラメーターが設定されている必要があります。制限を解除する場合は 0 を指定します。 |
tileSize | 整数 | 1024 | ピラミッドのタイルサイズです。有効な値:0 より大きく、4096 より小さい整数。 |
tileExtend | 整数 | 8 | ピラミッドのタイル拡張サイズです。有効な値:0 より大きい整数。 |
userExtent | 配列[double] | null | ピラミッドの地理的範囲を定義する JSON 配列(4 つの値:minx、miny、maxx、maxy)です。[] を指定すると null 値として扱われます。 |
splitSize | 整数 | 10000 | インデックスノード分割ごとの最大要素数です。値を大きくすると、より疎なピラミッドが生成されます。 |
maxLevel | 整数 | 16 | ピラミッドの最大レベル数です。有効な値:0 ~ 20。 |
sourceSRS | 整数 | -1 | ソースデータの空間参照系(SRS)です。デフォルトでは、関数がテーブルのメタデータから空間参照識別子(SRID)を読み取ります。 |
destSRS | 整数 | 3857 | タイル座標系の EPSG コードです。有効な値: 3857(EPSG 3857)および 4326(EPSG 4326)。 |
buildRules | 配列[オブジェクト] | null | ピラミッド構築に使用するルールです。複数のルールを指定できます。 |
buildRules のフィールド
| フィールド | 型 | 説明 |
|---|---|---|
level | 配列[整数] | このルールを適用するピラミッドのレベルです。 |
value | オブジェクト | ルールの構成です。以下のサブフィールドを含みます:filter、attrFields、および merge。 |
value.filter | 文字列 | データに適用する PostgreSQL フィルター式です。 |
value.attrFields | 配列[文字列] | Mapbox Vector Tile(MVT)フォーマットを使用する際に含める属性フィールドです。 |
value.merge | 配列[文字列] | データレコードをグループ化するためのフィルター条件です。 |
config の例
{
"name": "hello",
"parallel": 4,
"tileSize": 512,
"tileExtend": 8,
"userExtent": [-180, -90, 180, 90],
"splitSize": 5000,
"maxLevel": 16,
"destSRS": 3857,
"buildRules": [
{
"level": [0, 1, 2],
"value": {
"filter": "code!=0",
"attrFields": ["name", "color"],
"merge": ["code=1"]
}
}
]
}使用例
roads という名前の空間ジオメトリデータテーブルに対してピラミッドを作成します:
SELECT ST_BuildPyramid('roads', 'geom', 'id', '');期待される出力:
st_buildpyramid
---------------
t