Estoy de acuerdo con BWill. Su principal problema es definir el origen de cada polilínea. ¿Qué constituye un "río"? Ι haría la suposición de que un afluente es una "ruta" independiente a partir de 0-> longitud del afluente. Luego haría lo mismo para los ríos principales, pero en este caso crearía una polilínea fusionada a partir de todas las polilíneas constituyentes. Creo que una vez que se tiene eso se está "casi" listo. Entonces: Convierta todas sus polilíneas fusionadas en polilíneas medidas (PolylineM) -incluyendo los afluentes. Entonces tendrá su "red de rutas". A partir de ahí es cuestión de encontrar la distancia a lo largo de su ruta para cada estación. ¿Supongo que las ubicaciones de las estaciones están definidas en XYs? Además -otra suposición- no caen exactamente sobre el río, ¿verdad? En cualquier caso, necesitarás una forma de encontrar la distancia de la estación desde el comienzo de cada río o tribu. En teoría, si una estación está en la intersección del río y el afluente puede tener 2 ubicaciones (una para cada uno).
Para encontrar esta ubicación se pueden utilizar las herramientas de ArcMap, pero hace tiempo que no las utilizo, así que no me acuerdo. Por otro lado, si importas tus shapefiles (¿?) a PostGIS, puedes usar la herramienta ST_Line_Locate_Point . Esta función:
Devuelve un flotador entre 0 y 1 que representa la ubicación del punto más cercano en LineString al Punto dado, como una fracción de la longitud total de la línea longitud total de la línea 2d.
Lo que significa que luego puedes encontrar la ubicación a lo largo del río multiplicando lo que encuentres con la longitud del río (fusionado). Una nota final - Si usted utiliza PostGIS no tiene que pasar por el paso de la creación de la PolylineM - sólo ArcGIS requiere esto para la referencia lineal.
Espero que esto tenga sentido.