ST_Union — Gibt die Vereinigung mehrerer Rasterkacheln in einem einzelnen Raster mit mehreren Bändern zurück.
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)
;
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.
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.
-- 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) );
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) );