2016-09-04 6 views
1

Shapely를 사용하여 다각형을 만들 때 폴리곤 함수에서 4 개의 꼭지점을 푸십시오. 출력은 5 개의 요소가있는 튜플이어야합니다 (첫 번째 꼭지점은 두 배가되고 마지막으로 역시 하나의).Python : 다각형이 닫히지 않음 (매끄럽게

그러나 함수에 전달하는 입력 정점의 순서는 결과에 영향을 미칩니다. 때로는 다각형이 5 개의 꼭지점 (반드시 있어야 함)과 4 개의 의미 그것은 닫힌 다각형이 아닙니다. (즉, 다각형이 아닙니다.) 어떤 버그가 있어야합니다.

다음 예제에서 poly1과 poly2의 유일한 차이는 꼭짓점의 순서입니다 나는 지나간다. 방향은 정확하게 샘이다. e though :

from shapely.geometry import Polygon 

print ('poly1 = ', Polygon([(620, 420, 500), (620, 420, 0), (620, 40, 0),(620, 40, 500)])) 
print ('poly2 = ',Polygon([(620, 40, 500), (620, 420, 500), (620, 420, 0), (620, 40, 0)])) 

그러나 결과는 다릅니다. 하나는 닫힌 다각형이고 다른 하나는 열려 있습니다. 두 유형 모두 btw는 여전히 매끈한 다각형입니다.

poly1 = POLYGON Z ((620 420 500, 620 420 0, 620 40 0, 620 40 500, 620 420 500)) 
poly2 = POLYGON Z ((620 40 500, 620 420 500, 620 420 0, 620 40 0)) 

모든 솔루션?

+0

다각형의'__str__ /'__repr__' 표현에 대해 문서에서 아무것도 볼 수 없습니다. 'polygon.exterior.coords()'의 결과는 무엇입니까? –

+0

그것은 저에게 TypeError를줍니다 : 'CoordinateSequence'객체를 호출 할 수 없습니다. – Yair

+0

죄송합니다. 괄호가없는 'polygon.exterior.coords'를 의미합니다. –

답변

1

제 3 코디네이터와 관련 있다고 생각합니다. 문서 (shapely doc)에서는 알려줍니다

A third z coordinate value may be used when constructing instances, but has no effect on geometric analysis. All operations are performed in the x-y plane.

이 매끈한 단순히 Z 좌표 처리하지 않음을 의미한다. 당신은 Z 좌표 지울 경우의 예에서, 당신은 얻을 :

[(620, 420), (620, 420), (620, 40), (620, 40)] 
[(620, 40), (620, 420), (620, 420), (620, 40)] 

마지막 포인트는 첫 번째와 동일한 경우 다각형, 매끈한 다각형 생성자 검사를 구축하는 선형 문자열을 전달합니다. 그렇지 않은 경우 포인트가 추가되어 선형 링을 얻습니다. 두 번째 경우에는 매끄럽게 보이는 마지막 좌표가 이미 반복되어 있으므로 다른 점을 추가 할 필요가 없습니다.