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

설명

래스터 타일 집합을 최소한 밴드 1개로 이루어진 단일 래스터로 통합합니다. 출력 래스터의 범위는 전체 집합의 범위입니다. 교차 부분의 경우, uniontype 이 결과 값을 정의합니다. uniontype 의 값은 LAST(기본값), FIRST, MIN, MAX, COUNT, SUM, MEAN, RANGE 가운데 하나입니다.

[Note]

In order for rasters to be unioned, they must all have the same alignment. Use ST_SameAlignment and ST_NotSameAlignmentReason for more details and help. One way to fix alignment issues is to use ST_Resample and use the same reference raster for alignment.

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

참고

unionarg, ST_Envelope, ST_ConvexHull, ST_Clip, ST_Union