ラスターオブジェクトのピラミッドを構築し、マルチ解像度レンダリングおよびズームレベルクエリを高速化します。
構文
raster ST_BuildPyramid(raster source,
integer pyramidLevel default -1,
ResampleAlgorithm algorithm default 'Near',
cstring chunkTableName default '',
cstring storageOption default '{}',
cstring buildOption default '{}');パラメーター
| パラメーター | 説明 |
|---|---|
| source | ピラミッドを構築するラスターオブジェクト。 |
| pyramidLevel | 作成するピラミッドレベル数。-1 を指定すると、イメージサイズに基づいて最大レベル数が自動的に設定されます。デフォルト値:-1。 |
| algorithm | リサンプリングアルゴリズム。有効な値:Near、Average、Bilinear、Cubic。デフォルト値:Near。 |
| chunkTableName | ピラミッドデータを格納するチャンクテーブルの名前。ラスターオブジェクトが Object Storage Service (OSS) バケットに格納されている場合にのみ有効です。 |
| storageOption | ピラミッドのチャンクストレージ設定を指定する JSON 文字列。ラスターオブジェクトが OSS バケットに格納されている場合にのみ有効です。詳細については、「ストレージオプション」をご参照ください。 |
| buildOption | ピラミッド構築設定を指定する JSON 文字列。parallel パラメーターをサポートしており、並列処理の次数を制御できます。詳細については、「ビルドオプション」をご参照ください。 |
ストレージオプション
storageOption パラメーターは、以下のフィールドを持つ JSON オブジェクトを受け入れます。
| フィールド | 型 | 説明 |
|---|---|---|
| chunkdim | 文字列 | (w, h, b) 形式でのチャンクディメンション。デフォルトでは元のイメージデータのチャンクサイズが使用されます。 |
| interleaving | 文字列 | バンドインターリーブ方式。有効な値:bip(ピクセル単位バンドインターリーブ、BIP)、bil(ライン単位バンドインターリーブ、BIL)、bsq(バンドシーケンシャル、BSQ)、auto(自動選択)。デフォルト値:bsq。 |
| compression | 文字列 | 圧縮フォーマット。有効な値:none、jpeg、zlib、png、lzo、LZ4、zstd、snappy、jp2k。デフォルト値:LZ4。 |
| quality | 整数 | 圧縮品質。JPEG および JPEG 2000(jp2k)圧縮の場合にのみ適用されます。有効な値:1~99。デフォルト値:75。 |
ビルドオプション
buildOption パラメーターは、以下のフィールドを持つ JSON オブジェクトを受け入れます。
| フィールド | 型 | 説明 |
|---|---|---|
| parallel | 整数 | ピラミッド構築時の並列処理の次数。有効な値:1~64。指定しない場合は、GUC パラメーター ganos.parallel.degree の値が使用されます。 |
重要
並列ピラミッド構築はトランザクションをサポートしていません。ビルドが失敗した場合やロールバックが必要な場合は、ST_deletePyramid を呼び出して、不完全なピラミッドを削除してください。
説明
この関数は GPU アクセラレーションによる計算をサポートしています。利用可能な GPU が存在する環境では、Ganos がデフォルトでこの関数の GPU アクセラレーションを有効にします。
例
デフォルト設定でピラミッドを構築します:
UPDATE raster_table SET raster_obj = ST_BuildPyramid(raster_obj) WHERE id = 1;ピラミッドデータを指定されたチャンクテーブルに格納してピラミッドを構築します:
UPDATE raster_table SET raster_obj = ST_BuildPyramid(raster_obj, 'chunk_table') WHERE id = 2;JPEG 2000 圧縮、256×256 の固定チャンクサイズ(各チャンクあたり 4 バンド)、および自動バンドインターリーブ方式でピラミッドを構築します:
UPDATE raster_table SET raster_obj = ST_BuildPyramid(
raster_obj,
-1,
'Near',
'chunk_table',
'{"compression":"jp2k", "quality": 75, "chunkdim":"(256,256,4)", "interleaving":"auto"}'
) WHERE id = 3;上記と同じピラミッドを 4 スレッドの並列処理で構築します:
UPDATE raster_table SET raster_obj = ST_BuildPyramid(
raster_obj,
-1,
'Near',
'chunk_table',
'{"compression":"jp2k", "quality": 75, "chunkdim":"(256,256,4)", "interleaving":"auto"}',
'{"parallel":4}'
) WHERE id = 3;