Name

ST_Union — Retourne l'union d'un ensemble de tuiles raster, en un seul raster composé de 1 ou plusieurs bandes.

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

Description

Retourne l'union d'un ensemble de tuiles raster en un seul raster, composé d'au moins une bande. L'étendue du raster résultant est l'étendue de l'ensemble. Dans le cas d'une intersection, la valeur résultante est définie par uniontype parmi : LAST (par défaut), FIRST, MIN, MAX, COUNT, SUM, MEAN, RANGE.

[Note]

Pour pouvoir calculer l'union de raster, tous les rasters doivent avoir le même alignement. Voir ST_SameAlignment et ST_NotSameAlignmentReason pour plus de détails. Une façon de résoudre les problèmes d'alignement est d'utiliser ST_Resample et d'utiliser le même raster de référence pour l'alignement.

Disponibilité : 2.0.0

Amélioration : 2.1.0 Vitesse améliorée (entièrement en C).

Disponibilité : 2.1.0 Ajout de la variante ST_Union(rast, unionarg).

Amélioration : 2.1.0 ST_Union(rast) (variante 1) permet l'union sur toutes les bandes de tous les rasters d'entrée. Les versions précédentes de PostGIS ne prenaient en compte que la première bande.

Amélioration : 2.1.0 ST_Union(rast, uniontype) (variante 4) permet l'union de toutes les bandes de tous les rasters d'entrée.

Exemples : Reconstituer une tuile raster à partir d'une tuile raster fragmentée d'une seule bande

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

Exemples : Retourne un raster multi-bandes qui est l'union de tuiles intersectant une géométrie

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

Exemples : Retourne un raster multi-bandes qui est l'union de tuiles intersectant une géométrie

Nous utilisons ici la syntaxe plus longue si nous ne voulons qu'un sous-ensemble de bandes ou si nous voulons changer l'ordre des bandes

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