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


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.