Encontrar la distancia entre puntos a lo largo de un río (referencia lineal)

10

Soy nuevo en GIS y estoy sorprendido. Tengo una red de ríos que se compone de pequeñas cadenas lineales (polilíneas). En un archivo shape diferente, tengo ubicaciones de varias estaciones en un río. Necesito encontrar la distancia a lo largo del río desde cada estación hasta el final del río.

El problema es que no tengo una cadena lineal completa de río. Y no hay un atributo común que pueda usar para unir o fusionar las cadenas lineales. Además, algunas estaciones están en afluentes.

ingrese la descripción de la imagen aquí

Entonces, en resumen, necesito hacer una gran red de ríos, incluidos los afluentes, y realizar referencias de línea. Pero no sé cómo hacer esto. Cualquier ayuda es muy apreciada. Por favor explique lo más claramente posible.

Por favor comente si necesita más información.

Naresh
fuente
3
¿Qué plataforma de software estás usando?
TheSteve0
Intenté arcmap arcinfo. Pero era información abrumadora sobre referencias lineales. Luego me mudé a pgRouting y QGIS. Aún luchando.
Naresh
¿Tiene acceso a la extensión ArcGIS Network Analyst? Creo que sería posible construir un conjunto de datos de red utilizando sus ríos, y luego encontrar distancias más cortas debería ser realmente fácil.
radek

Respuestas:

2

Estoy de acuerdo con BWill. Su principal problema es definir el origen de cada polilínea. ¿Qué constituye un 'río'? Ι supondría que un afluente es una "ruta" independiente a partir de 0-> longitud del afluente. Entonces 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 tienes que estás "casi" allí. Luego: Convierta todas sus polilíneas combinadas en polilíneas medidas (PolylineM), incluidos los afluentes. Entonces tienes tu 'red de rutas'. A partir de entonces, se trata 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 XY? Además, otra suposición, no caen exactamente sobre el río, ¿ellos? En cualquier caso, necesitará una forma de encontrar la distancia de la estación desde el comienzo de cada río o triburary. 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 una).

Para encontrar esta ubicación, puede usar las herramientas de ArcMap, pero no las he usado por un tiempo, así que no puedo recordar la parte superior de mi cabeza. Por otro lado, si importa sus archivos de forma (?) A PostGIS, podría usar ST_Line_Locate_Point . Esta función:

Devuelve un flotante 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 2d.

Lo que significa que luego puede encontrar la ubicación a lo largo del río multiplicando lo que encuentre con la longitud (combinada) del río. Una nota final: si usa PostGIS, no tiene que pasar por el paso de crear el PolylineM, solo ArcGIS lo requiere para la referencia lineal.

Espero que esto tenga sentido!

mapoholic
fuente
mis estaciones están exactamente en los afluentes o en el río. Lo estúpido es que no hay un gran río, solo pequeños segmentos de líneas. Puedo ver un gran río porque los datos en sí no tienen ningún atributo común para hacer un río completo. Además, tengo coordenadas en grados, así que cuando creo rutas en arcmap, obtengo la longitud en grados. Creo que eso no tiene sentido. Tengo que convertir las coordenadas de wgs84 a alguna otra proyección. Y sí, importé archivos de forma en PostGIS.
Naresh
1

De mi pregunta de la misma naturaleza,

Cómo crear un punto a lo largo de una línea dada la distancia

aparecieron los siguientes enlaces útiles.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

No completo mi tarea por falta de esfuerzo. Creo que el tedio que experimentarás es nominar el origen de cada polilínea.

BWill
fuente
2
Hice algunos progresos. Puedo encontrar la ruta más corta usando pGrouting pero necesito actualizar "nodos". En este momento creo una tabla de nodos en postgresql y la uso para crear una red que alimento a pgrouting. Pero necesito agregar nodos personalizados en la tabla que no están en los nodos finales. La forma estúpida es dividir mis polilíneas en las estaciones para que se conviertan en nodos automáticamente. Aún trabajando. Actualiza pronto.
Naresh