나는 작은 세그먼트를 큰 세그먼트와 일치 시키려고합니다.
내가 가진 데이터의 전형적인 예는 다음과 같습니다.
711과 707이 일치하지 않는 동안 세그먼트 652와 198969를 일치시켜야합니다.
나는 다른 방법, 특히 Hausdorff 거리를 찾았습니다 ( 여기 의 답변을 바탕으로 ). PostGIS를 사용하여 계산했지만 이상한 결과가 나타납니다. 최단 거리는 707에서 198985 사이이며 652는 198985보다 198969까지 더 먼 거리입니다 (필요한 경우 쿼리 및 결과를 추가 할 수 있음).
실제로 Hausdorff가이를 해결하는 올바른 방법입니까? 다른 접근법이 있습니까? 나는 내가 언급 한 매개 변수 (거리, 베어링 등)에 대한 일련의 검사를 만들려고 생각했지만 가장자리 사례 또는 처리량을 임계 값과 같은 것들을 처리하기 위해 여러 조건을 추가 해야하는 것을 두려워합니다. 서로 마주보고
업데이트 : 허용 가능한 타협처럼 보이는 방법을 찾았습니다.
- 먼저
<->
10 미터 미만 의 (PostGIS 연산자를 사용하여) 일치시키려는 파란색 세그먼트에서 가장 가까운 10 개의 검은 세그먼트를 찾습니다 . - 그런 다음 각 검은 색 세그먼트에서 파란색 세그먼트의 끝 부분에 가장 가까운 점을 찾아서 새 세그먼트를 만들고
ST_ClosestPoint
길이가 파란색의 90 % 미만인 결과를 필터링합니다 (세그먼트가 아닌 것을 의미합니다) 방향 또는 베어링 차이가 ~ 20 ° 이상인 경우) - 그런 다음 거리와 Hausdorff 거리로 정렬 된 첫 번째 결과를 얻습니다.
약간의 조정이 필요할 수 있지만 현재로서는 허용 가능한 작업을 수행하는 것 같습니다. 가장자리 케이스를 놓친 경우 실행할 다른 방법이나 추가 검사를 계속 찾고 있습니다.