Я б погодився з BWill. Ваша основна проблема - визначити походження кожної полілінії. Що являє собою "річка"? Ι зробив би припущення, що приток є окремим "маршрутом", починаючи з 0-> довжини притоки. Тоді я б те ж саме для основних річок, але в цьому випадку я створив би злитий поліліній з усіх складових поліліній. Я думаю, що колись у вас з’явиться, що ви майже «там». Потім: Перетворіть всі ваші об'єднані полілінії в Вимірені полілінії (PolylineM) - включаючи притоки. Потім у вас є "маршрутна мережа". З цього моменту питання про пошук відстані по маршруту для кожної станції. Я думаю, місця розташування станцій визначені в XY? Також - ще одна здогадка - вони не падають рівно на вершину річки, вони? У будь-якому випадку вам знадобиться спосіб пошуку відстані станції від початку кожної річки чи притоку. Теоретично, якщо станція знаходиться на перетині річки та притоки, вона може мати 2 місця (по одному для кожної).
Щоб знайти це місце, ви можете скористатися інструментами ArcMap, але не користуєтесь ними деякий час, тому не можу запам'ятати верхню частину моєї голови. З іншого боку, якщо ви імпортуєте свої файли форм (?) В PostGIS, ви можете використовувати ST_Line_Locate_Point . Ця функція:
Повертає поплавок між 0 і 1, що представляє місце найближчої точки на LineString до даної точки, як частка загальної довжини 2d лінії.
Це означає, що потім ви можете знайти розташування вздовж річки, помноживши те, що ви знайдете, на довжину (злитої) річки. Підсумкове зауваження. Якщо ви використовуєте PostGIS, вам не доведеться пройти крок створення PolylineM - тільки для ArcGIS це потрібно для лінійного посилання.
Сподіваюся, це має сенс!