ST_Union — Returns a Geometry object that represents the point set union of two Geometries.
PostgreSQL
geometry ST_Union(
bytea GeomA, bytea GeomB)
;
geometry ST_Union(
bytea[]
Geometry_Array)
;
geometry ST_Union(
bytea
GeomAggregate)
;
H2
geometry ST_Union(
bytea GeomA, bytea GeomB)
;
geometry ST_Union(
bytea[]
Geometry_Array)
;
geometry ST_UnionAgg(
bytea
GeomAggregate)
;
Returns a Geometry object that represents the point set union of two Geometries.
The geometries must have the same coordinate dimension
This method does not support GeometryCollections |
2D | 3D | M |
---|---|---|
OGC SFS for SQL. 1.1 (1999) | OGC SFS for SQL. 1.1.0 (2005) | OGC SFS for SQL. 1.2.0 (2006) | SQL-MM Part 3 |
---|---|---|---|
2.1.1.3 | 7.2.21.1 | 7.2.8.1 | 5.1.19 |
--2d polygons SELECT ST_AsEWKT(ST_Union(A,B)) from (SELECT ST_GeomFromText('POLYGON ((40 20, 40 100, 120 100, 120 20, 40 20))',25830) as A, ST_GeomFromText('POLYGON ((80 60, 80 130, 170 130, 170 60, 80 60))',25830) as B) as foo; --Result SRID=25830;POLYGON ((40 20, 40 100, 80 100, 80 130, 170 130, 170 60, 120 60, 120 20, 40 20)) -- 3d line & multipoint SELECT ST_AsEWKT(ST_Union(B,A)) from (SELECT ST_GeomFromText('LINESTRING (-4 20 2, 27 51 1, 55 34 0, 87 69 0)',25830) as A, ST_GeomFromText('MULTIPOINT ((30 24 10), (55 60 20))',25830) as B) as foo; --Result SRID=25830;GEOMETRYCOLLECTION (POINT (30 24 10), POINT (55 60 20), LINESTRING (-4 20 2, 27 51 1, 55 34 0, 87 69 0))
Array PostgreSQL
SELECT ST_AsText(ST_Union(Array[A,B,C])) FROM (SELECT ST_GeomFromText('POLYGON ((40 20, 40 100, 120 100, 120 20, 40 20))') as A, ST_GeomFromText('POLYGON ((80 60, 80 130, 170 130, 170 60, 80 60))') as B, ST_GeomFromText('POINT (80 9)') as C ) as foo; --Result: st_astext ----------------------------------------------------------------------------------- GEOMETRYCOLLECTION ( POINT (80 9), POLYGON ((40 20, 40 100, 80 100, 80 130, 170 130, 170 60, 120 60, 120 20, 40 20))) (1 row)
Array H2
SELECT ST_AsText(ST_Union(st_accumagg(geom))) as newpolygon from (select array_get(( st_geomfromtext('POLYGON ((40 20, 40 100, 120 100, 120 20, 40 20))'), st_geomfromtext('POLYGON ((80 60, 80 130, 170 130, 170 60, 80 60))')),x)::binary as geom from (select x from system_range(1,2) as foo) as table); --Result NEWPOLYGON POLYGON ((40 20, 40 100, 80 100, 80 130, 170 130, 170 60, 120 60, 120 20, 40 20)) SELECT ST_AsText(ST_Union(st_accumagg(geom))) as mpoints from (select st_geomfromtext('SRID=10;POINT(0 0)') as geom union select st_geomfromtext('SRID=10;POINT(10 10)') union select st_geomfromtext('SRID=10;POINT(15 15)') ) as geom; --Result MPOINTS MULTIPOINT ((0 0), (10 10), (15 15))
Aggregate
CREATE TABLE "lines"(id serial PRIMARY KEY);
SELECT AddGeometryColumn ('lines','GEOM',25830,'LINESTRING',2);
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (1 1, 1 4, 1 7)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (1 7, 3 7, 6 7)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (6 7, 6 3, 6 1)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (1 1, 4 1, 6 1)'));
--PostgreSQL
SELECT asewkt(ST_Union("lines"."GEOM")) as lineunion from "lines";
--H2
SELECT asewkt(ST_UnionAgg("lines"."GEOM")) as lineunion from "lines";
SELECT DropGeometryTable ('lines');
--Result
SRID=25830;MULTILINESTRING ((1 1, 4 1, 6 1), (1 1, 1 4, 1 7), (6 7, 6 3, 6 1), (1 7, 3 7, 6 7))