답변:
글쎄, 우리는 여기 에 우리의 질문에 대한 완전한 답이 아닌 답을 넣습니다. 즉, 질문은 "답변 할 수 있도록 열려 있습니다 ". 그러나 문제의 문제에 대한 해결책입니다. 우리가 사용한 트릭은 다음과 같습니다.
먼저 결과를 보자 .
따라서 left
빌드 된 다각형 의 주어진 선은에 표시됩니다 middle
. right
;)에 표시된 것처럼 실제 다각형입니다 .
아래 주어진 알고리즘을 위해 우리 Shapely
는 파이썬 패키지를 사용 했습니다 .
MultiLineString
{:: M}buffer
와 같이 작은 것을 추가하십시오eps
Polygon
{:: P} (여기서 지역은 정사각형입니다)P.difference(MB)
{결과 다각형}참고 그것은 작동 조용한 빨리는 것을. 그러나 누락 된 점은 알고리즘 이 선에서 다각형을 작성하는 원래의 방법이 아니라는 것 입니다. 그럼에도 불구하고 그것은 우리가 겪은 문제에 완벽하게 작동했습니다.
JTS Topology Suite 에는 Polygonizer 클래스가 있습니다.
Python Shapely 패키지, 특히 polygonize ()를 살펴볼 수 있습니다
from shapely.ops import polygonize
) 에서 다각형 화하는 빠른 참고 사항 은 GEOS 에서 GEOS.Polygonize 를 사용합니다 . 따라서 이것은 링크에 대한 링크가있는 링크입니다 ... : |
polygonize
은 전혀 성공하지 못했습니다. 그러나 Shapely
답변으로 게시 된 솔루션 (실제로 트릭)을 찾을 수있는 것을 상기시켜 주셔서 감사합니다 .
우리가 찾을 수있는 또 다른 해결책이 있습니다.
를 사용하면
DCEL
선을 만지지 못하게 할 수 있습니다.
들어 파이썬 패키지가 {여기} . 약간의 버그가있는 작은 구현입니다. 그럼에도 불구하고 약간의 노력 으로이 문제에 사용할 수 있습니다. 다음 단계도 참고하십시오.
선 사이의 모든 교차점이 발견되는 전처리 단계. 따라서 모든 선이 상호 작용 지점에서 세그먼트로 분할됩니다. 교차점 목록과 관련 모서리 목록은 DCEL에 필요한 것입니다.
difference
.