Trouver la distance entre des points le long d'une rivière (référencement linéaire)

10

Je suis nouveau dans le SIG et je suis frappé. J'ai un réseau de rivières qui est composé de petites lignes linéaires (polylignes). Dans un fichier de formes différent, j'ai l'emplacement de plusieurs stations sur une rivière. J'ai besoin de trouver la distance le long de la rivière de chaque station jusqu'à la fin de la rivière.

Le problème est que je n'ai pas une ligne complète de rivière. Et il n'y a aucun attribut commun que je puisse utiliser pour réunir ou fusionner les chaînes de lignes. De plus, certaines stations se trouvent sur des affluents.

entrez la description de l'image ici

Donc, l'essentiel est que je dois faire un grand réseau de rivières, y compris des affluents et effectuer un référencement de ligne. Mais je ne sais pas comment faire ça. Toute aide est très appréciée. Veuillez expliquer le plus clairement possible.

Veuillez commenter si vous avez besoin de plus d'informations.

Naresh
la source
3
Quelle plateforme logicielle utilisez-vous?
TheSteve0
j'ai essayé arcmap arcinfo. Mais c'était renverser les informations sur le référencement linéaire. Ensuite, je suis passé à pgRouting et QGIS. Toujours en difficulté.
Naresh
Avez-vous accès à l'extension ArcGIS Network Analyst? Je pense qu'il serait possible de créer un ensemble de données réseau en utilisant vos rivières, puis trouver les distances les plus courtes devrait être vraiment facile.
radek

Réponses:

2

Je serais d'accord avec BWill. Votre problème principal est de définir l'origine de chaque polyligne. Qu'est-ce qui constitue une «rivière»? Ι supposerait qu'un affluent est une "route" autonome à partir de 0-> longueur de l'affluent. Ensuite, je ferais de même pour les principales rivières, mais dans ce cas, je créerais une polyligne fusionnée à partir de toutes les polylignes constitutives. Je pense qu'une fois que vous l'avez, vous y êtes «presque». Ensuite: convertissez toutes vos polylignes fusionnées en polylignes mesurées (PolylineM), y compris les affluents. Vous avez alors votre «réseau de routes». Dès lors, il s'agit de trouver la distance le long de votre itinéraire pour chaque station. Je suppose que les emplacements des stations sont définis en XY? Aussi - une autre supposition - ils ne tombent pas exactement au-dessus de la rivière, est-ce qu'ils? Dans tous les cas, vous aurez besoin d'un moyen de trouver la distance de la station depuis le début de chaque rivière ou affluent. En théorie, si une station est à l'intersection de la rivière et de l'affluent, elle peut avoir 2 emplacements (un pour chacun).

Pour trouver cet emplacement, vous pouvez utiliser les outils ArcMap mais ne les utilisez pas depuis un moment, alors je ne me souviens pas du haut de ma tête. D'un autre côté, si vous importez vos fichiers de formes (?) Dans PostGIS, vous pouvez utiliser ST_Line_Locate_Point . Cette fonction:

Renvoie un flottant compris entre 0 et 1 représentant l'emplacement du point le plus proche sur LineString par rapport au point donné, sous la forme d'une fraction de la longueur totale de la ligne 2D.

Ce qui signifie que vous pouvez ensuite trouver l'emplacement le long de la rivière en multipliant ce que vous trouvez avec la longueur de la rivière (fusionnée). Une dernière note - Si vous utilisez PostGIS, vous n'avez pas à passer par l'étape de création de PolylineM - seul ArcGIS l'exige pour le référencement linéaire.

J'espère que cela a du sens!

mapoholic
la source
mes stations sont exactement sur les affluents ou la rivière. Ce qui est stupide, c'est qu'il n'y a pas un seul grand fleuve, juste de petits segments de lignes. Je peux voir une grande rivière, mais les données elles-mêmes n'ont aucun attribut commun pour créer une rivière complète. De plus, j'ai des coordonnées en degrés, donc quand je crée des itinéraires dans arcmap, j'obtiens une longueur en degrés? Je pense que cela n'a pas de sens. J'ai pu convertir les coordonnées de wgs84 en une autre projection. Et oui, j'ai importé des fichiers de formes dans PostGIS.
Naresh
1

De ma question de même nature,

Comment créer un point le long d'une ligne à distance donnée

les liens utiles suivants sont apparus.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

Je ne termine pas ma tâche par manque d'effort. Je crois que l'ennui que vous éprouverez est de nommer l'origine de chaque polyligne.

BWill
la source
2
j'ai fait quelques progrès. Je peux trouver le chemin le plus court en utilisant pGrouting mais j'ai besoin de mettre à jour les "nœuds". En ce moment, je crée une table de nœuds dans postgresql et je l'utilise pour créer un réseau que j'alimente pour pgrouting. Mais je dois ajouter des nœuds personnalisés dans le tableau qui ne sont pas aux nœuds d'extrémité.Le moyen stupide est de diviser mes polylignes aux stations afin qu'elles deviennent automatiquement des nœuds. Je travaille encore. Mettre à jour bientôt.
Naresh