2013-08-07 1 views
1

다각형을 확장하여 the image posted here처럼 그 자체와 인접한 (두 점을 만지는) 선 사이의 빈 공간을 채 웁니다. 보시다시피 파란색 선 스트링은 분홍색 다각형 위에 빈 공간을 만들고 다각형으로 채우고 싶습니다. 이것에 postgis 솔루션이 있습니까? 나는 "쉬운"방법을 발견하지 못했습니다.다각형을 확장하여 인접한 선에 도달하는 방법

감사합니다.

답변

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은 할 필요가 당신에게 누락 된 조각을 줄 것이다.

+0

Jakub 대단히 감사합니다. 이것은 매우 유익하고 도움이됩니다. 디디에 –

관련 문제