ฉันพยายามที่จะจับคู่เซ็กเมนต์ขนาดเล็กกับเซ็กเมนต์ที่ใหญ่กว่าพวกเขาอาจเกี่ยวข้องกับ: ค่อนข้างใกล้เคียงตลับลูกปืนที่คล้ายกันและหันเข้าหากัน
นี่คือตัวอย่างทั่วไปของข้อมูลที่ฉันมี:
ที่นี่ฉันต้องจับคู่เซ็กเมนต์ 652 ถึง 198969 ขณะที่มี 711 และ 707 ไม่ตรงกับสิ่งใด
ฉันค้นหาวิธีการต่าง ๆ โดยเฉพาะในระยะทาง Hausdorff (ตามคำตอบที่นี่ ) ฉันคำนวณโดยใช้ PostGIS แต่ฉันได้รับผลลัพธ์แปลก ๆ : ระยะทางที่สั้นที่สุดที่ฉันได้รับคือระหว่าง 707 และ 198985 และ 652 มีระยะทางที่มากขึ้นถึง 198969 เช่นเดียวกับ 198985 (เช่นฉันสามารถเพิ่มคิวรีและผลลัพธ์หากต้องการ)
Hausdorff เป็นวิธีที่ถูกต้องในการแก้ปัญหานี้หรือไม่ มีวิธีอื่นหรือไม่? ฉันคิดว่าเพียงแค่สร้างชุดของการตรวจสอบเกี่ยวกับพารามิเตอร์ที่ฉันกล่าวถึง (ระยะทางแบริ่ง ฯลฯ ) แต่ฉันกลัวที่จะต้องเพิ่มเงื่อนไขทั้งหมดเพื่อจัดการกรณีขอบหรือสิ่งต่าง ๆ เช่น thresholding เกี่ยวกับพวกเขา หันเข้าหากัน
อัปเดต:ฉันพบวิธีการที่ดูเหมือนว่ายอมรับได้:
- ฉันพบส่วนดำที่ใกล้ที่สุด 10 อันจากสีน้ำเงินที่ฉันพยายามจับคู่ (ใช้ตัว
<->
ดำเนินการPostGIS ) ซึ่งอยู่ห่างออกไปไม่ถึง 10 เมตร - ฉันจะสร้างกลุ่มใหม่โดยการหาจุดที่ใกล้ที่สุดไปยังจุดสิ้นสุดของส่วนสีน้ำเงินในแต่ละส่วนสีดำ (โดยใช้
ST_ClosestPoint
) และกรองผลลัพธ์ที่มีความยาวน้อยกว่า 90% ของส่วนสีฟ้า (หมายถึงกลุ่มที่ไม่ได้ หันหน้าไปทางหรือว่าแบริ่งที่แตกต่างกันเป็นมากกว่า ~ 20 °) - จากนั้นฉันก็จะได้ผลลัพธ์แรกเรียงตามระยะทางและระยะทาง Hausdorff ถ้ามี
อาจมีการปรับแต่งบางอย่าง แต่ดูเหมือนว่าจะทำหน้าที่ได้รับการยอมรับในขณะนี้ ยังคงมองหาวิธีอื่นหรือตรวจสอบเพิ่มเติมเพื่อเรียกใช้หากฉันพลาดกรณีขอบบางอย่าง