名称

ST_Union — 返回一组栅格瓦片的并集,形成一个由一个或多个波段组成的单个栅格。

概要

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);

描述

返回一组栅格瓦片的并集,形成一个由至少一个波段组成的单个栅格。结果栅格的范围是整个集合的范围。在相交的情况下,结果值由 uniontype 定义,它是以下之一:LAST(默认)、FIRST、MIN、MAX、COUNT、SUM、MEAN、RANGE。

[Note]

为了使栅格能够进行并集操作,它们必须具有相同的对齐方式。有关更多详细信息和帮助,请使用 ST_SameAlignmentST_NotSameAlignmentReason。解决对齐问题的一种方法是使用 ST_Resample 并使用相同的参考栅格进行对齐。

可用性:2.0.0

增强:2.1.0 提高了速度(完全基于 C)。

可用性:2.1.0 引入了 ST_Union(rast, unionarg) 变体。

增强:2.1.0 ST_Union(rast)(变体 1)将所有输入栅格的所有波段进行并集。PostGIS 的早期版本假定为第一个波段。

增强:2.1.0 ST_Union(rast, uniontype)(变体 4)将所有输入栅格的所有波段进行并集。

示例:重新构建单波段分块栅格瓦片

-- this creates a single band from first band of raster tiles
-- that form the original file system tile
SELECT filename, ST_Union(rast,1) As file_rast
FROM sometable WHERE filename IN('dem01', 'dem02') GROUP BY filename;
                    

示例:返回与几何图形相交的瓦片的并集的多波段栅格

-- this creates a multi band raster collecting all the tiles that intersect a line
-- Note: In 2.0, this would have just returned a single band raster
-- , new union works on all bands by default
-- this is equivalent to 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) );
                    

示例:返回与几何图形相交的瓦片的并集的多波段栅格

如果我们只想要波段的子集或者想要更改波段的顺序,这里我们使用更长的语法

-- this creates a multi band raster collecting all the tiles that intersect a line
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) );