このトピックでは、空間ジオメトリデータテーブルのベクトルピラミッドを作成してデータの表示を高速化するST_BuildPyramid関数について説明します。
構文
boolean ST_BuildPyramid(cstring table, cstring geom, cstring fid, cstring config)
パラメーター
パラメーター | 説明 |
テーブル | 空間ジオメトリデータテーブルの名前。 |
geom | ジオメトリフィールドの名前。 |
fid | 要素IDフィールドの名前。 |
config | ピラミッドの作成に使用されるフィールド。 これらのフィールドはJSON文字列として指定されます。 |
次の表に、configパラメーターのフィールドを示します。
フィールド | データ型 | デフォルト値 | 説明 |
name | String | テーブル名と同じ | ピラミッドの名前。 |
パラレル | int | 0 | ピラミッドを作成するために並行して実行できるタスクの最大数。 max_prepared_transactionsパラメーターも指定する必要があります。 parallelパラメーターを0に設定した場合、並列タスクの最大数は制限されません。 |
tileSize | int | 1024 | ピラミッドのタイルサイズ。 有効な値は0より大きく、4096より小さい必要があります。 |
tileExtend | int | 8 | ピラミッドのタイル拡張サイズ。 有効な値は0より大きくなければなりません。 |
userExtent | array[double] | null | 定義する地理的なバインド。 このパラメーターの値はJSON文字列です。 このJSON文字列は、minx、miny、maxx、maxyの4つのフィールドで構成されています。 このパラメーターを [] に設定すると、値はnullになります。 |
splitSize | int | 10000 | インデックスノードを分割できる要素の最大数。 このパラメータの値が大きいほど、ピラミッドがまばらであることを示します。 |
maxLevel | int | 16 | ピラミッド内のレイヤーの最大数。 有効な値: 0〜20。 |
sourceSRS | int | -1 | 空間ジオメトリデータテーブル内のソースデータの座標系。 このパラメーターを指定しない場合、システムはメタデータ内の空間参照識別子 (SRID) を読み取ります。 |
destSRS | int | 3857 | タイトル座標系のEPSGコード。 EPSG 3857とEPSG 4326のみがサポートされています。 |
buildRules | array [オブジェクト] | null | ピラミッドの作成に基づいたルール。 複数のルールを指定できます。 各ルールは、levelとvalueの2つの部分で構成されています。 |
レベル | array[int] | なし | 指定されたルールが適用されるピラミッドレイヤー。 |
値 | object | なし | 指定されたルールの値。 |
フィルター | String | なし | PostgreSQLでデータをフィルタリングするために使用される式。 |
attrFields | array[string] | なし | MVTフォーマットが使用される場合の属性フィールドの名前。 |
マージ | array[string] | なし | データレコードをグループに追加するために使用されるフィルター条件。 |
次の例は、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"]
}
}
]
}
例
--Create a pyramid for a spatial geometric data table named roads.
select ST_BuildPyramid('roads', 'geom', 'id', '');
st_buildpyramid
----------
t