名前

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

初出: 2.0.0

機能強化: 2.1.0 速度が改善されました(完全にC言語で記述しました)

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

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

機能強化: 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