내가 사용하여이 작업을 얻었다 ST_Node을 과 함께, 처음 ST_Collect 내 noded 선 스트링의 집합으로 라인을 변환, 다중 선 스트링 .
ST_Node 에 대한 문서에서 말했듯이 :
모든 입력 노드를 유지하면서 가능한 한 적은 수의 노드를 사용하여 라인 스트링 세트를 완전히 노드 화하십시오.
이것이 의미하는 것은 모든 선 스트링이 가능한 모든 조합으로 결합되어 다각형의 외부 링과 동등한 것을 구성한다는 것입니다. 반면, ST_Polygonize LineStrings 집합 을 시도 할 때 그 자체로는 다각형을 설명하지 않는 경우 LineStrings를 다시 가져옵니다. 그래서 이것은 작동합니다 :
WITH multi(geom) AS (
SELECT ST_Node(ST_Collect(geom))
FROM leyenda_digitalizar00
)
SELECT ST_AsText( (ST_Dump(ST_Polygonize(geom))).geom )
FROM multi;
이 중 첫 번째 부분, 즉 CTE multi를 실행하면 출력은 다음과 같습니다.
멀티 라인 스트링 ((204.5 69.9000000000004,204.5 69.9000000000004), (204.5 68.9,205.4 68.9), (204.5 68.9,204.5 69,204.5 69.1,204.5 69.2,204.5 69.3,204.5 69.4,204.5 69.5,204.5 69.6,204.5 69.7,204.5 69.8,204.5 69.7,204.5 69.8,204.5 69.9,204.5 69.8,204.5 69.9,20 204.5 69.9000000000004), (209.5 68.9,209.5 68.8,209.5 68.7,209.5 68.6,209.5 68.5,209.5 68.4,209.5 68.3,209.5 68.2,209.5 68.1,209.5 68,209.5 67.9,209.5 67.8,209.5 67.7,209.5 67.6,209.5 47.5,209.5 67.5 , 209.5 .......
이제이 MultiLinestring을 ST_Polygonize에 공급하면 예상대로 작동합니다.
폴리곤 ((205.4 68.9,204.5 68.9,204.5 69,204.5 69.1,204.5 69.2,204.5 69.3,204.5 69.4,204.5 69.5,204.5 69.6,204.5 69.7,204.5 69.8,204.5 69.9,204.5 69.9000000000004,205.4 69.9,205.4 69.3,205.4 68.9))
폴리곤 ((204.5 69.9000000000004,204.5 70,204.5 70.1,204.5 70.2,204.5 70.3,204.5 70.4,206.8 70.4,209.5 70.4,209.5 70.3,209.5 70.2,209.5 70.1,209.5 70,209.5 69.9,205.4 69.9,204.5 69.9000000000004))
폴리곤 ((206.8 70.4,204.5 70.4,204.5 70.5,204.5 70.6,204.5 70.7,204.5 70.8,204.5 70.9,204.5 71,204.5 71.1,204.5 71.2,204.5 71.3,204.5 71.4,206.8 71.4,206.8 70.4))
분명히 ST_AsText는 단지 설명을위한 것이며 경로 ID를 원한다면 조정해야합니다.
핵심 테이크 아웃은 ST_Polygonize가 이미 폴리곤의 윤곽선을 설명하는 선 스트링을 예상한다는 것인데, 이는 위에서 ST_Node (ST_Collect (....)가하는 것입니다.