ST_Union — Retourne l'union d'un ensemble de tuiles raster, en un seul raster composé de 1 ou plusieurs bandes.
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)
;
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.
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.
-- 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) );
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) );