Name

ST_CoverageUnion — 通过删除共享边来计算形成覆盖范围的一组多边形的并集。

Synopsis

geometry ST_CoverageUnion(geometry set geom);

描述

将一组多边形联合起来形成多边形覆盖范围的聚合函数。 结果是覆盖与覆盖范围相同的区域的多边形几何体。 该函数产生与 ST_Union相同的结果,但使用覆盖结构来更快地计算并集。

[Note]

如果输入不是有效的覆盖范围,则输出中可能会出现意外的伪影(例如未合并或重叠的多边形)。 使用 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)))