我想扩展一个多边形,以便它填充自身和附近(并接触两点)线之间的空白空间,如此处发布的图像所示。如您所见,蓝色线串在粉红色多边形顶部形成一个空白空间,我想用多边形填充它。有对此的postgis解决方案吗?我还没有找到任何“简单”的方法。
谢谢 !
该解决方案类似于我在此处介绍的解决方案。只有在这种情况下,您才需要稍微增强线串。
WITH p AS (
SELECT ST_MakePolygon(ST_GeomFromText('LINESTRING(0 0,1 0,1 1, 0 1, 0 0)')) as geo
),
l AS (
SELECT ST_BUFFER(ST_GeomFromText('LINESTRING(0.0 0.0,0.5 0, 0.7 -1, 1 0)'),0.000000000000001) as geo
),
bigpoly AS(
SELECT ST_UNION(geo) as geom
FROM(
SELECT geo FROM p
UNION ALL
SELECT geo FROM l) as q
)
SELECT ST_BUFFER(ST_BuildArea(ST_InteriorRingN(geom,i)),0.000000000000001) as geo
FROM bigpoly
CROSS JOIN generate_series(1,(SELECT ST_NumInteriorRings(geom) FROM bigpoly)) as i
这将为您提供缺少的部分,现在您只需将其与其余部分进行 ST_UNION,如果您的原始多边形包含孔,您可能还想检查它是否真的是正确的。