2016-09-05 9 views
3

두 줄로 두 부분으로 shapely.geometry.Polygon 인스턴스를 자르려고합니다. 예를 들어, 아래 코드에서 polygon은 반지이고 line1line2으로 잘라낸 경우 두 개의 부분 반지, 즉 270도 하나와 90도 하나를 가져야합니다. 이것을 할 수있는 깨끗한 방법이 있을까요?두 줄로 매끄럽게 다각형 잘라 내기

감사합니다.

from shapely.geometry import Point, LineString, Polygon 

polygon = Point(0, 0).buffer(2).difference(Point(0, 0).buffer(1)) 
line1 = LineString([(0, 0), (3, 3)]) 
line2 = LineString([(0, 0), (3, -3)]) 

답변

3

켄 왓 포드 지역의 조금을 잃는 단점/W 트릭을 할 bufferdifference 사용에 대한 here 대답했다. 아래 예제 코드 : 방법 (영역을 상실하여 w/o 잠재적으로) 또 다른이 있는지 지금은

from shapely.geometry import Point, LineString, Polygon 

polygon = Point(0, 0).buffer(2).difference(Point(0, 0).buffer(1)) 
line1 = LineString([(0, 0), (3, 3)]) 
line2 = LineString([(0, 0), (3, -3)]) 

line1_pol = line1.buffer(1e-3) 
line2_pol = line2.buffer(1e-3) 

new_polygon = polygon.difference(line1_pol).difference(line2_pol) 

작품, 내가보고 싶네!

+0

정확한 해결책은 중요한 코드 라인을 사용하여 처음부터 수학 문제를 구현해야한다고 생각합니다. 특히 일반적인 용어로 문제를 설정하고 있습니다. – eguaio