2017-02-03 10 views
2

폴리곤을 작은 조각으로 나누기 위해 매끈하고 파이썬을 사용합니다 : 사다리꼴, x 축에 평행 한면과 평행 사변형, x 축에 평행 한면이있는 삼각형. 초기 데이터는 .gds 파일에서 가져 와서 튜플 x, y 좌표 목록과 같이 표시됩니다. 내 목적을 위해 나는 here과 같은 차이 방법을 사용했다. 하지만 다각형 예를 들어, holes이있는 경우 스택 수 :줄에 닿아있는 다각형을 유효한 다각형으로 변환하는 방법은 무엇입니까?

from shapely.geometry import Polygon 
points = [(0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0), (3.0, 1.0), (3.0,-1.0)] 
poly = Polygon(points) 
print(poly.is_valid) 
#Self-intersection at or near point 2 1 
#False 

그래서 질문은 다각형의 정확한 생성을 위해 선체에 점 구멍이 목록을 변환하는 방법 simpliest 방법은 무엇인가?

감사합니다.

답변

0

표준 트릭은 poly.buffer(0)입니다 (the shapely manual 참조).

polyb = poly.buffer(0) 
print(shapely.geometry.mapping(polyb)) 
# {'type': 'Polygon', 'coordinates': (((0.0, -1.0), (0.0, 2.0), (3.0, 2.0), (3.0, 1.0), (3.0, -1.0), (0.0, -1.0)), ((2.0, 1.0), (1.0, 1.0), (1.0, 0.0), (2.0, 0.0), (2.0, 1.0)))} 
print(polyb.is_valid) 
# True 
+0

빠른 답장을 보내 주셔서 감사합니다! 나는 여기에 글을 쓰기 전에 그것을 읽었지만 폴리곤'x, y = shape.exterior.coords.xy'를 검사하는 일반적인 방법과 혼동을 겪었습니다. 물론 내부 지점은 없었습니다. 그래서 당신이 내 마음을 깨끗이했습니다. 감사! – Anton