Tôi đồng ý với BWill. Vấn đề chính của bạn là xác định nguồn gốc của từng polyline. Cái gì tạo thành một "dòng sông"? Sẽ đưa ra giả định rằng một nhánh là một "tuyến đường" độc lập bắt đầu từ 0-> chiều dài của nhánh sông. Sau đó, tôi cũng sẽ làm như vậy cho các con sông chính, nhưng trong trường hợp này tôi sẽ tạo ra một polyline hợp nhất từ tất cả các polylines cấu thành. Tôi nghĩ rằng một khi bạn có rằng bạn "gần như" ở đó. Sau đó: Chuyển đổi tất cả các polylines đã hợp nhất của bạn thành các polylines đo được (PolylineM) - bao gồm các nhánh sông. Sau đó, bạn có 'mạng lưới tuyến' của bạn. Từ đó trở đi vấn đề tìm khoảng cách dọc theo tuyến đường của bạn cho mỗi trạm. Tôi đoán các vị trí trạm được xác định trong XYs? Ngoài ra - một phỏng đoán khác - chúng không rơi chính xác trên đỉnh sông, phải không Trong mọi trường hợp, bạn sẽ cần một cách tìm khoảng cách của trạm từ đầu mỗi con sông hoặc nhánh sông. Về lý thuyết, nếu một trạm nằm trên ngã tư sông và phụ lưu thì nó có thể có 2 vị trí (mỗi vị trí).
Để tìm vị trí này, bạn có thể sử dụng các công cụ ArcMap nhưng không sử dụng chúng trong một thời gian để không thể nhớ đến đỉnh đầu của tôi. Mặt khác, nếu bạn nhập shapefiles (?) Vào PostGIS, bạn có thể sử dụng ST_Line_Locate_Point . Chức năng này:
Trả về số float giữa 0 và 1 đại diện cho vị trí của điểm gần nhất trên LineString cho Điểm đã cho, dưới dạng một phần của tổng chiều dài dòng 2d.
Điều đó có nghĩa là sau đó bạn có thể tìm thấy vị trí dọc theo sông nhân với những gì bạn tìm thấy với chiều dài sông (hợp nhất). Lưu ý cuối cùng - Nếu bạn sử dụng PostGIS, bạn không phải trải qua bước tạo PolylineM- chỉ ArcGIS yêu cầu điều này để tham chiếu tuyến tính.
Hy vọng điều này có ý nghĩa!