터널 중심선을 찾으 시나요?


19

터널을 나타내는 '폴리 라인'(각 라인은 꼭짓점 목록)으로 구성된 일부 맵 파일이 있으며 터널 '중심선'(아래에 빨간색으로 표시)을 찾으려고합니다.

대체 텍스트

과거에 들로네 삼각 분할 (Delaunay Triangulation)을 사용하여 약간의 성공을 거두었 지만 일반적으로지도 데이터를 쉽고 자주 수정할 수 없기 때문에이 방법을 사용하지 않으려 고합니다.

내가 어떻게 할 수 있는지에 대한 아이디어가 있습니까?

나는 상당히 원시적 인 C ++에서 일하고 있습니다.


gis.stackexchange.com/q/177/162 는 또한 찾고있는 것을 처리합니다 : skeletisation algorithms .
— Julien

3
답변이 너무
— 많으

@julien : 당신은 이미 당신의 대답에 그것을 연결했습니다. 나는 그것을 읽어하지만 바꿔에,이다, 내 특정 질문 (답변을하지 않습니다 '나는 이미 MAT를 찾는 방법을 알고 -하지만 사람이 아닌 델 로니 알고 있다면 궁금 알고리즘 [즉 아닌 lib 디렉토리 - 문제는 내 코딩이 아닙니다.)] 지역화 된 변경에 효율적입니다. '). SO에 대한 대답은 꽤 답이 아니었지만 많은 노력을 기울이고 많은 생각을했기 때문에 더 좋은 일이 올 때까지 그 사람에게 수표를 수여했습니다. 아래 답변 중 어느 것도 그다지 좋지 않습니다 (내 잘못 일 수도 있습니다).
— sje397

답변:


6

내측 축 변환에 대한 근사치를 그렸습니다. 들로네 삼각 분할 (Delaunay Triangulation)은 이에 대한 좋은 접근 방법을 제공합니다. (주요 과제는 MAT의 일부가 선 세그먼트가 아니라 포물선 조각이라는 것입니다.)

나는 학술 문헌에서 작업 코드 (보통 C / C ++에서 언급)에 대한 참조를 뛰어 넘었습니다. Google Scholar에서 검색하고 오래된 논문을 찾으십시오 (새로운 논문은 3D 계산에 중점을 둔 것으로 보입니다).


Delaunay를 사용하는 작업 코드가 있습니다. 다른 방법이 있는지 정말로 묻습니다.
— sje397

1
@ sje397 우선, Delaunay는 문제를 거의 해결하기 때문에 그 이유만으로도 더 나은 코드를 연구 할 가치가 있습니다. 둘째, 실제로 다른 방법이 있습니다. (1) 내부 버퍼를 사용하여 MAT를 검색하고 (2) 폴리 라인의 유클리드 거리 그리드에서 지형 분석을 수행합니다. 둘 다 훨씬 비효율적이며 결과가 좋지 않기 때문에 언급하지 않았습니다. 명백히 제 2 방법은 상당히 빠른 동적 솔루션에 적합하다.
— whuber

4

"다각형 골격"을 살펴볼 가치가 있습니다.

http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Straight_skeleton_2/Chapter_main.html에 C ++ 소스 샘플이 있습니다 .


고마워 CGAL에 대해 더 자세히 살펴 보겠습니다. 그러나 내지도 데이터가 변경 될 때 재 계산이 비싸지 않아야한다는 요구 사항은 어려움입니다.
— sje397

CGAL은 매우 빠릅니다. 즉석 계산이 가능해야합니다. 그렇지 않으면 소위 '동적 데이터 구조'를 볼 수 있습니다. cgal.org/Manual/3.3/doc_html/cgal_manual/…
— julien

"골격"은 MAT의 또 다른 용어입니다. "중간 축 변환"을 검색하면 내 경험에서 "골격"에 대한 검색보다 더 많은 히트가 발생했습니다.
— whuber

"골격"이 더 일반적인 것처럼 보입니다-MAT는 골격에 대한 하나의 특정 알고리즘 일뿐입니다. 어쨌든 주제가 아닙니다 ...!
— Julien

CGAL의 라이센스는 제한적입니다 (즉, 비싸기 때문에 상용 소프트웨어 임).
— sje397
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.