地理空間的範囲を変更せずに、ラスターオブジェクトのピクセル範囲のサイズを変更します。
構文
raster ST_Resize(raster rast,
integer outWidth,
integer outHeight,
cstring processExpr default '',
cstring storageOption default '')パラメーター
| パラメーター | 説明 |
|---|---|
| rast | サイズ変更するラスターオブジェクト。 |
| outWidth | 出力ラスターオブジェクトの幅 (ピクセル単位)。 |
| outHeight | 出力ラスターオブジェクトの高さ (ピクセル単位)。 |
| processExpr | ピクセルのリサンプリングと nodata 値の処理を制御する JSON 文字列。 |
| storageOption | 出力ラスターオブジェクトの保存方法を制御する JSON 文字列。 |
processExpr フィールド
processExpr JSON 文字列の各キーと値のペアは、以下で説明するフィールドにマップされます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
| resample | text | Near | リサンプリングメソッド。有効な値:Near、Average、Cubic、Bilinear。 |
| nodata | Boolean | false | ソースラスターオブジェクトの nodata 値を有効な値として扱うかどうかを指定します。true に設定した場合、nodata 値を持つピクセルはリサンプリングされません。false に設定した場合、nodata 値を持つピクセルはリサンプリングされます。 |
| nodataValue | float8 | float8[] | NULL | 出力ラスターオブジェクトのバンドに割り当てる nodata 値。すべてのバンドに適用するには 1 つの値を指定し、バンドごとに適用するにはバンドごとに 1 つの値を指定します。値の数はバンドの数と一致する必要があります。 |
説明 ソースラスターオブジェクトに nodata 値を持つピクセルがない場合は、
nodata を false に設定し、nodataValue を省略してください。そうしないと、画像アーティファクトが発生する可能性があります。storageOption フィールド
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
| chunking | Boolean | ソースと同じ | 出力ラスターオブジェクトをチャンクとして保存するかどうかを指定します。 |
| chunkdim | String | ソースと同じ | チャンクディメンション。chunking が true の場合にのみ有効です。 |
| chunktable | String | '' (空の文字列) | チャンクテーブルの名前。NULL または空の文字列に設定した場合、出力はランダムな名前を持つ一時チャンクテーブルに保存され、現在のセッションでのみ有効です。出力を永続化するには、永続的なチャンクテーブル名を指定します。 |
| compression | String | ソースと同じ | 圧縮形式。有効な値:None、JPEG、Zlib、PNG、LZO、LZ4。 |
| quality | Integer | ソースと同じ | JPEG 画像の品質。compression が JPEG の場合にのみ有効です。 |
| interleaving | String | ソースと同じ | インターリーブタイプ。有効な値:bip (ピクセル単位のバンドインターリーブ、BIP)、bil (ライン単位のバンドインターリーブ、BIL)、bsq (バンドシーケンシャル、BSQ)。 |
| endian | String | ソースと同じ | バイトオーダー。有効な値:NDR (リトルエンディアン)、XDR (ビッグエンディアン)。 |
説明
chunktable が NULL または空の文字列の場合、出力は現在のセッションが終了すると削除される一時チャンクテーブルに保存されます。出力を永続的に保存するには、チャンクテーブル名を指定してください。例
CREATE TABLE IF NOT EXISTS datasource_table(id integer, rast raster);
INSERT INTO datasource_table VALUES(1, ST_ImportFrom('rbt','$(RAST_DATA_DIR)/512_512_1_bsq_8u_geo.tif', '{}'));方法 1:永続的なチャンクテーブルの指定
名前付きの chunktable を使用して、出力ラスターオブジェクトを永続化します。
CREATE TABLE rat_resize_result(id integer, rast raster);
-- nodata フィールドが指定されていません
INSERT INTO rat_resize_result(id, rast)
SELECT 10, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;
-- すべてのバンドに単一の nodata 値を適用し、nodata ピクセルはリサンプリングされません
INSERT INTO rat_resize_result(id, rast)
SELECT 11, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":true,"nodatavalue":255}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;
-- バンドごとに複数の nodata 値
INSERT INTO rat_resize_result(id, rast)
SELECT 12, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false,"nodatavalue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;方法 2:一時チャンクテーブルの使用
chunktable を省略すると、出力はセッションスコープの一時テーブルに保存されます。結果は現在のセッションでネストされた計算に利用でき、セッションが終了すると削除されます。
CREATE TEMP TABLE rat_resize_result_temp(id integer, rast raster);
INSERT INTO rat_resize_result_temp(id, rast)
SELECT 1, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}')
FROM datasource_table
WHERE id = 1;