ฉันจะเห็นด้วยกับ BWill ปัญหาหลักของคุณคือการกำหนดที่มาของแต่ละ polyline อะไรคือ 'แม่น้ำ' make จะทำให้สมมติฐานที่ว่าเป็นแคว "เส้นทาง" แบบสแตนด์อโลนเริ่มต้นจาก 0-> ความยาวของแคว จากนั้นฉันก็จะเหมือนกันสำหรับแม่น้ำสายหลัก แต่ในกรณีนี้ฉันจะสร้างรูปหลายเหลี่ยมที่รวมกันจากโพลิลีนที่เป็นส่วนประกอบทั้งหมด ฉันคิดว่าเมื่อคุณมีสิ่งที่คุณ 'เกือบ' มี จากนั้น: แปลง polylines ที่ผสานทั้งหมดของคุณไปเป็น polylines ที่วัดได้ (PolylineM) - รวมถึงแคว จากนั้นคุณมี 'เครือข่ายเส้นทาง' ของคุณ จากนั้นเป็นเรื่องของการหาระยะทางตามเส้นทางของคุณสำหรับแต่ละสถานี ฉันเดาตำแหน่งสถานีถูกกำหนดเป็น XY หรือไม่? นอกจากนี้ - เดาอีกครั้ง - พวกเขาไม่ตกลงบนแม่น้ำ ทำพวกเขา ไม่ว่าในกรณีใดคุณจะต้องหาวิธีหาระยะทางของสถานีตั้งแต่ต้นแม่น้ำหรือแต่ละเผ่า ในทางทฤษฎีหากสถานีอยู่บนจุดตัดของแม่น้ำและสาขาอาจมี 2 ตำแหน่ง (หนึ่งสำหรับแต่ละสถานี)
ในการค้นหาตำแหน่งนี้คุณสามารถใช้เครื่องมือ ArcMap แต่ไม่ได้ใช้งานมาระยะหนึ่งแล้วจำไม่ได้เลยว่าหัวของฉันอยู่ตรงไหน ในทางตรงกันข้ามถ้าคุณนำเข้าเชปไฟล์ของคุณ (?) ลง PostGIS คุณสามารถใช้ST_Line_Locate_Point ฟังก์ชั่นนี้:
ส่งคืนค่าทศนิยมระหว่าง 0 ถึง 1 ซึ่งแทนตำแหน่งของจุดที่ใกล้ที่สุดบน LineString ไปยังจุดที่กำหนดซึ่งเป็นเศษส่วนของความยาวบรรทัด 2d ทั้งหมด
ซึ่งหมายความว่าคุณสามารถค้นหาตำแหน่งที่ตั้งตามแม่น้ำคูณสิ่งที่คุณค้นหาด้วยความยาวแม่น้ำ (รวม) บันทึกสุดท้าย - หากคุณใช้ PostGIS คุณไม่จำเป็นต้องทำตามขั้นตอนของการสร้าง PolylineM- เฉพาะ ArcGIS ที่ต้องการสิ่งนี้สำหรับการอ้างอิงเชิงเส้น
หวังว่ามันจะสมเหตุสมผล!