ラスターオブジェクトを矩形範囲またはジオメトリオブジェクトでクリップします。デフォルトでは、すべてのバンドがクリップされ、クリップ境界としてジオメトリの外接矩形(バウンディングボックス)ではなく、ジオメトリそのものの形状が使用されます。
構文
2 種類のオーバーロードが利用可能です:1 つは矩形範囲によるクリップ用、もう 1 つはジオメトリオブジェクトによるクリップ用です。
バウンディングボックスによるクリップ
bytea ST_Clip(raster raster_obj, integer pyramidLevel, box extent, BoxType boxType);
bytea ST_Clip(raster raster_obj, integer pyramidLevel, box extent, BoxType boxType, integer destSrid);ジオメトリによるクリップ
record ST_Clip(raster raster_obj,
geometry geom,
integer pyramidLevel default 0,
cstring bands default '',
float8[] nodata default NULL,
cstring clipOption default '',
cstring storageOption default '',
out box outwindow,
out bytea rasterblob)パラメーター
共通パラメーター
| パラメーター | 説明 |
|---|---|
raster_obj | クリップ対象のラスターオブジェクトです。 |
pyramidLevel | ピラミッドレベルです。 |
バウンディングボックス用パラメーター
| パラメーター | 説明 |
|---|---|
extent | クリップ対象の矩形エリアで、'((minX,minY),(maxX,maxY))' の形式で指定します。 |
boxType | extent の座標系です。有効な値は、Raster(ピクセル座標)および World(世界座標)です。 |
destSrid | 出力の空間参照システム識別子(SRID)です。 |
ジオメトリ用パラメーター
| パラメーター | デフォルト | 説明 |
|---|---|---|
geom | — | クリップ境界として使用するジオメトリオブジェクトです。 |
bands | ''(全バンド) | クリップ対象のバンドを指定します。フォーマットは '0-2' または '1,2,3' です。バンド番号は 0 から始まります。空文字列を指定すると、すべてのバンドがクリップされます。 |
nodata | NULL | NoData 塗りつぶし値を float8[] 配列で指定します。各バンドに 1 つの値を設定します。配列の要素数がクリップ対象バンド数より少ない場合、残りの各バンドの事前定義 NoData 値が使用されます。バンドに事前定義 NoData 値がない場合は、0 が使用されます。 |
clipOption | '' | クリップオプションを JSON 文字列で指定します。下記の「clipOption フィールド」表をご参照ください。 |
storageOption | '' | 出力ストレージオプションを JSON 文字列で指定します。下記の「storageOption フィールド」表をご参照ください。 |
clipOption フィールド
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
window_clip | ブール値 | false | true を指定すると、ジオメトリそのものの形状ではなく、その最小外接矩形(MBR)を使用してクリップします。 |
rast_coord | ブール値 | false | true を指定すると、ジオメトリの座標をラスター座標(x は列番号、y は行番号)として解釈します。 |
storageOption フィールド
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
compression | 文字列 | lz4 | 出力の圧縮アルゴリズムです。有効な値は、none、jpeg、zlib、png、lzo、lz4 です。 |
quality | 整数 | 75 | 圧縮品質です。compression が jpeg の場合にのみ適用されます。 |
interleaving | 文字列 | ソースラスターと同一 | 出力のインタリーブ形式です。有効な値は、bip(band interleaved by pixel)、bil(band interleaved by line)、bsq(band sequential)です。 |
endian | 文字列 | ソースラスターと同一 | 出力のバイトオーダーです。有効な値は、NDR(リトルエンディアン)および XDR(ビッグエンディアン)です。 |
注意事項
出力サイズ制限
デフォルトのクリップバッファーは 100 MB です。この制限を引き上げるには、ganos.raster.clip_max_buffer_size パラメーターをより大きな値に設定してください。
window_clip の動作
デフォルト(window_clip=false)では、ラスターはジオメトリの正確な形状にクリップされます。window_clip=true を指定すると、ジオメトリの MBR にクリップされるため、矩形の出力結果が得られます。
例
世界座標を用いたバウンディングボックスによるクリップ
SELECT ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World');バウンディングボックスによるクリップと出力の再投影
SELECT ST_Clip(raster_obj, 0, '((128.980,30.0),(129.0,30.2))', 'World', 4326);デフォルト設定によるジオメトリによるクリップ
すべてのバンドが、ジオメトリの形状を境界としてクリップされます。
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0)).* FROM clip_table WHERE id = 1;カスタム NoData 値および PNG 出力を用いたジオメトリによるクリップ
NoData 塗りつぶし色として白(254, 254, 254)を指定し、BIP インタリーブ形式で PNG イメージとして出力を圧縮します。
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0, '', ARRAY[254,254,254], '', '{"compression":"png","interleaving":"bip"}')).* FROM clip_table WHERE id = 1;ジオメトリのバウンディングボックスを用いたクリップ
ジオメトリの形状ではなく、その最小外接矩形(MBR)を用いてクリップします。出力が矩形で許容可能であり、パフォーマンスが重要な場合に使用します。
SELECT (ST_CLIP(rast, ST_geomfromtext('Polygon((0 0, 45 45, 90 45, 45 0, 0 0))', 4326), 0, '', NULL, '{"window_clip":true}', '')).* FROM clip_table WHERE id = 1;