名前

ST_Union — ラスタータイルの集合を結合して 1以上のバンドからなる単一ラスターを返します。

概要

raster ST_Union(setof raster rast);

raster ST_Union(setof raster rast, unionarg[] unionargset);

raster ST_Union(setof raster rast, integer nband);

raster ST_Union(setof raster rast, text uniontype);

raster ST_Union(setof raster rast, integer nband, text uniontype);

説明

ラスタータイルの集合を結合して少なくとも一つのバンドからなる単一ラスターを返します。結果ラスターの範囲は集合全体の範囲です。インタセクトする場合には、結果値は、LAST (デフォルト), FIRST, MIN, MAX, COUNT, SUM, MEAN, RANGE のいずれかとなるuniontypeで定義されます。

[注記]

ラスターを結合するには、全てが同じアラインメントを持たなくてはなりません。ST_SameAlignmentST_NotSameAlignmentReasonで詳細情報や助けとなる情報が得られます。アラインメント問題を修正する一つの方法として、ST_Resampleを使い、アラインメントの同じ参照ラスターを使います。

Availability: 2.0.0

Enhanced: 2.1.0 速度が改善されました (完全に C 言語で記述しました)。

Availability: 2.1.0 ST_Union(rast, unionarg) の形式が導入されました。

Enhanced: 2.1.0 ST_Union(rast) (一つ目の形式) で、全ての入力ラスターの全てのバンドを結合するようになりました。以前の版の PostGIS では、一つ目のバンドと仮定していました。

Enhanced: 2.1.0 ST_Union(rast, uniontype) (四つ目の形式) で、全ての入力ラスターの全てのバンドを結合するようになりました。

単一バンドのラスタータイルの断片の再構成。

ラスタータイルの 1番バンドから単一のバンドを生成します。元のファイルシステムのタイルを形成します。

コード
SELECT filename, ST_Union(rast, 1) As file_rast
FROM sometable WHERE filename IN('dem01', 'dem02') GROUP BY filename;
                    

ジオメトリーとインターセクトするタイルを結合した複数バンドのラスターを返す。

ここではラインにインターセクトする全てのタイルを集めたマルチバンドラスターを生成します。2.0では、単一バンドラスターを返します。新しい結合はデフォルトで全てのバンドで動作します。これは ARRAY[ROW(1, 'LAST'), ROW(2, 'LAST'), ROW(3, 'LAST')]::unionarg[] と同じです。

コード
SELECT ST_Union(rast)
FROM aerials.boston
WHERE ST_Intersects(rast, ST_GeomFromText('LINESTRING(230486 887771,230500 88772)', 26986) );
                    

ジオメトリーとインターセクトしたタイルを結合しつつバンドを選択して並べ替える。

バンドの部分集合が欲しいだけの場合や、バンドの並び順を変更したい場合には、より長い書き方にします。

ラインとインターセクトするタイルの全てを集めたマルチバンドラスターを生成します。

コード
SELECT ST_Union(rast, ARRAY[ROW(2, 'LAST'), ROW(1, 'LAST'), ROW(3, 'LAST')]::unionarg[])
FROM aerials.boston
WHERE ST_Intersects(rast, ST_GeomFromText('LINESTRING(230486 887771,230500 88772)', 26986) );