ST_Polygonize — Creates a GeometryCollection made up of Polygons from a set of Geometries which contain lines that represents the Polygons edges.
PostgreSQL
geometry ST_Polygonize(bytea
GeometryAggregate);
geometry ST_Polygonize(bytea[]
Geometry_Array);
H2
geometry ST_PolygonizeAgg(bytea
GeometryAggregate);
geometry ST_Polygonize(bytea[]
Geometry_Array);
Creates a GeometryCollection made up of Polygons from a set of Geometries which contain lines that represents the Polygons edges. Lines must connect to one another at the endpoint.
| 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 |
|---|---|---|---|
| - | - | - | - |
Array PostgreSQL
SELECT ST_AsEWKT(ST_Polygonize(
Array[ST_GeomFromEWKT('LINESTRING (4 11, 4 4, 11 4, 11 11, 4 11)'),
ST_GeomFromEWKT('LINESTRING (1 9, 1 5, 5 5, 5 9, 1 9)')]));
--Result
st_asewkt
--------------------------------------------------------------------------------
GEOMETRYCOLLECTION (POLYGON ((4 11, 11 11, 11 4, 4 4, 4 11)), POLYGON ((1 9, 5 9, 5 5, 1 5, 1 9)))
(1 row)Array H2
SELECT ST_AsText(ST_Polygonize(st_accumagg(geom))) as myline from (select array_get(
(
st_geomfromtext('LINESTRING (4 11, 4 4, 11 4, 11 11, 4 11)'),
st_geomfromtext('LINESTRING (1 9, 1 5, 5 5, 5 9, 1 9)')
),x)::binary as geom from (select x from system_range(1,2) as foo) as tabla);
--Result
GEOMETRYCOLLECTION (POLYGON ((4 11, 11 11, 11 4, 4 4, 4 11)), POLYGON ((1 9, 5 9, 5 5, 1 5, 1 9)))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)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (1 4, 2 4)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (2 4, 2 1)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (2 1, 1 1)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (2 4, 3 4)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (3 4, 3 1)'));
INSERT INTO "lines" ("GEOM") VALUES (ST_GeomfromEWKT('SRID=25830;LINESTRING (2 1, 3 1)'));
--PostgreSQL
select asewkt(ST_Polygonize("lines"."GEOM")) as polygonizer from "lines";
--H2
select asewkt(ST_PolygonizeAgg("lines"."GEOM")) as polygonizer from "lines";
SELECT DropGeometryTable ('lines');
--Result
POLYGONIZER
SRID=25830;GEOMETRYCOLLECTION (POLYGON ((2 4, 2 1, 1 1, 1 4, 2 4)), POLYGON ((3 1, 2 1, 2 4, 3 4, 3 1)))![]() | ![]() |
![]() | ![]() |