Tôi đang cố gắng khớp các phân đoạn nhỏ với một phân khúc lớn hơn mà chúng có lẽ liên quan nhiều nhất đến: tương đối gần, chịu lực tương tự và đối diện nhau.
Dưới đây là một ví dụ điển hình về dữ liệu tôi có:
Ở đây tôi cần khớp đoạn 652 đến 198969, trong khi có 711 và 707 không khớp với bất cứ thứ gì.
Tôi đã tìm kiếm các phương pháp khác nhau, đặc biệt là khoảng cách Hausdorff (dựa trên các câu trả lời ở đây ). Tôi đã tính toán nó bằng PostGIS nhưng tôi nhận được kết quả kỳ lạ: khoảng cách ngắn nhất tôi nhận được là từ 707 đến 198985 và 652 có khoảng cách lớn hơn đến 198969 so với 198985 chẳng hạn (tôi có thể thêm truy vấn và kết quả nếu cần).
Có thực sự là phương pháp chính xác để giải quyết vấn đề này? Có cách tiếp cận nào khác không? Tôi đã nghĩ đơn giản là tạo ra một bộ kiểm tra về các tham số tôi đã đề cập (khoảng cách, phương hướng, v.v.) nhưng tôi sợ phải thêm cả đống điều kiện để xử lý các trường hợp cạnh hoặc những thứ như đập vào mức độ chúng đôi mặt vơi nhau.
Cập nhật: Tôi đã tìm thấy một phương pháp có vẻ như là một sự thỏa hiệp có thể chấp nhận:
- Trước tiên tôi tìm thấy 10 đoạn màu đen gần nhất từ đoạn màu xanh mà tôi đang cố khớp (sử dụng
<->
toán tử PostGIS ) cách đó chưa đến 10m. - Sau đó, tôi tạo một phân đoạn mới bằng cách tìm các điểm gần nhất đến cuối của phân đoạn màu xanh trên mỗi phân đoạn màu đen (sử dụng
ST_ClosestPoint
) và lọc ra các kết quả có độ dài nhỏ hơn 90% so với phân đoạn màu xanh (có nghĩa là các phân đoạn không phải đối mặt hoặc chênh lệch ổ trục lớn hơn ~ 20 °) - Sau đó, tôi nhận được kết quả đầu tiên được sắp xếp theo khoảng cách và khoảng cách Hausdorff, nếu có.
Có thể có một số điều chỉnh tốt để làm nhưng nó dường như làm một công việc chấp nhận được cho đến bây giờ. Vẫn đang tìm kiếm bất kỳ phương pháp nào khác hoặc kiểm tra bổ sung để chạy nếu tôi bỏ lỡ một số trường hợp cạnh.