Name

ST_Union — Gibt die Vereinigung mehrerer Rasterkacheln in einem einzelnen Raster mit mehreren Bändern zurück.

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

Beschreibung

Gibt die Vereinigung von Rasterkacheln in einem einzelnen Raster zurück, der mindestens aus einem Band besteht. Die räumliche Ausdehnung des Zielraster entspricht der Gesamtausdehnung. Im Fall von Überschneidungen wird der resultierende Wert durch uniontype festgelegt, welcher folgende Werte annehmen kann: LAST (Standardwert), FIRST, MIN, MAX, COUNT, SUM, MEAN, RANGE.

[Note]

Damit Raster vereinigt werden können, müssen sie alle gleich ausgerichtet sein. Siehe ST_SameAlignment und ST_NotSameAlignmentReason für weitere Details und Hilfe. Eine Möglichkeit, um Probleme mit der Ausrichtung zu beheben ist ST_Resample und die Verwendung eines gemeinsamen Referenzraster zur Anpassung.

Verfügbarkeit: 2.0.0

Erweiterung: 2.1.0 Geschwindigkeit verbessert (zur Gänze C-basiert)

Verfügbarkeit: 2.1.0 ST_Union(rast, unionarg) Variante wurde eingeführt.

Erweiterung: 2.1.0 ST_Union(rast) (Variante 1) vereinigt alle Bänder aller Ausgangsraster. Vorherige Versionen von PostGIS setzten das erste Band voraus.

Erweiterung: 2.1.0 ST_Union(rast, uniontype) (Variante 4) vereinigt alle Bänder aller Ausgangsraster.

Beispiele: Wiederherstellung eines einzelnen Bandes einer Rasterkachel

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

Beispiele: Vereinigt Kacheln, die eine Geometrie schneiden, zu einem Raster mit mehreren Bändern

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

Beispiele: Vereinigt Kacheln, die eine Geometrie schneiden, zu einem Raster mit mehreren Bändern

Um nur eine Teilmenge der Bänder zu erhalten, oder die Reihenfolge der Bänder zu ändern, können wir die längere Syntax verwenden

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