2010-11-24 5 views

답변

7

그래서 저는 직접 질문에 대답해야합니다. 아마 누군가를 도울 것입니다.

geos :: operation :: buffer :: BufferOp 클래스를 사용하여 폴리곤을 복구 할 수 있습니다. 예 :

geos::geom::Geometry * result = 
         geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0); 

당신은 Secrets of the JTS Topology Suite.

1

종종 교차가 허용 포인트, 그래서 당신은 포인트 3 (6)이 동일한 경우

1 2 4 
*--* *  
| \ /| 
| X | 
| /\| 
*--* * 
6 5 3 

1 2 4 
*--* *  
| \ /| 
| 3*6| 
| /\| 
*--* * 
8 7 5 

에 변경할 수 있습니다. 점 교차점이 허용되지 않으면 그 중 하나를 약간 이동하십시오.

내 경험상 대부분의 그러한 교차점은 결함이있는 폴리곤 단순화에서 비롯된 것이므로 가능한 경우 소스로 돌아가는 것이 좋습니다.

0

자기 교차 다각형에서 좀 더 좋은 요리법을 찾을 수가 잘못되었습니다. 따라서 BufferOp는 잘못된 결과를 줄 수 있습니다. geos에서 자체 교차 된 다각형을 수정하는 방법을 찾지 못했습니다. PostGIS의 st_makevalid 함수는 geos를 사용합니다. 따라서 소스 코드를 조사 할 수 있습니다.

+2

OGC SFS에 따르면 "자체 교차 폴리곤이 유효하지 않음"을 분명히하는 것이 중요합니다. 기하학 세계에서 유효한 복합 다각형입니다. – mloskot