ST_CoverageUnion — 通过移除共享边计算形成覆盖的多个多边形的并集。
geometry ST_CoverageUnion(
geometry 集合 geom)
;
一个聚合函数,用于计算形成多边形覆盖的多个多边形的并集。结果是一个多边形几何体,覆盖的面积与覆盖相同。此函数产生与 ST_Union 相同的结果,但使用覆盖结构来更快地计算并集。
如果输入不是有效的覆盖,则输出中可能存在意想不到的伪像(例如未合并或重叠的多边形)。使用 ST_CoverageInvalidEdges 来确定覆盖是否有效。 |
可用性: 3.4.0 - 需要 GEOS >= 3.8.0
|
|
WITH coverage(id, geom) AS (VALUES (1, 'POLYGON ((10 10, 10 150, 80 190, 110 150, 90 110, 40 110, 50 60, 10 10))'::geometry), (2, 'POLYGON ((120 10, 10 10, 50 60, 100 70, 120 10))'::geometry), (3, 'POLYGON ((140 80, 120 10, 100 70, 40 110, 90 110, 110 150, 140 80))'::geometry), (4, 'POLYGON ((140 190, 120 170, 140 130, 160 150, 140 190))'::geometry), (5, 'POLYGON ((180 160, 170 140, 140 130, 160 150, 140 190, 180 160))'::geometry) ) SELECT ST_AsText(ST_CoverageUnion(geom)) FROM coverage; -------------------------------------- MULTIPOLYGON (((10 150, 80 190, 110 150, 140 80, 120 10, 10 10, 10 150), (50 60, 100 70, 40 110, 50 60)), ((120 170, 140 190, 180 160, 170 140, 140 130, 120 170)))