Name

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

Synopsis

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で定義されます。

[Note]

ラスタを結合するには、ほとんど全てが同じアラインメントを持ちます。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では、単一バンドのラスタを帰すだけです
--   これはunionargで
--   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) );
                                        

関連情報

unionarg, ST_Envelope, ST_ConvexHull, ST_Clip, ST_Union