我想扩展一个多边形,使其填充自身与附近(并触及两点)线之间的空白空间,如the image posted here中所示。如您所见,蓝色线串在粉红色多边形顶部形成一个空白区域,我想用多边形填充它。这是一个postgis解决方案吗?我没有找到任何“简单”的方式。
谢谢!
答案 0 :(得分:0)
解决方案类似于我提出的解决方案here。只有在这种情况下,你需要稍微增加一下线串。
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与其余部分一起使用,如果原始多边形包含孔,您可能还需要检查它是否真的是正确的。