Pages: 1
- Sujet précédent - Découpage d'une ligne par des points en prenant en compte le temps - Sujet suivant
#1 Wed 04 January 2023 10:17
- Rémi Bodinier
- Juste Inscrit !
- Date d'inscription: 4 Jan 2023
- Messages: 3
Découpage d'une ligne par des points en prenant en compte le temps
Bonjour,
Je fais une étude sur les mouvements journaliers d'un animal aquatique. Pour ce faire j'ai des localisations avec leur date que j'ai modélisé sur l'axe médian d'un cours d'eau. Mon but est de calculer la longueur du cours d'eau parcouru entre la localisation au jour n et la localisation au jour n+1, pour toutes les localisations. J'aimerais donc couper une ligne (cours d'eau) avec des points (locs quotidiennes), mais que cette coupe ne se fasse pas géographiquement (entre les points les plus proches) mais selon l'ordre temporel des localisations.
En faisant des recherches je suis tombé sur la fonction "Split lines at points" de SAGA mais l'algorithme ne fonctionne pas car la version de SAGA n'est pas officiellement prise en charge (message d'erreur).
Auriez-vous une autre méthode pour m'aider ?
Merci d'avance !
Rémi.
Hors ligne
#2 Fri 06 January 2023 09:31
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Découpage d'une ligne par des points en prenant en compte le temps
Bonjour,
Je pense que la méthode de découpe n'est pas la meilleure.
Je procéderai comme ceci :
-> projection des points sur l'axe médian du cours d'eau à la perpendiculaire (distance la plus courte) avec la fonction ST_ShortestLine de postgis.
Cela vous donnera une nouvelle couche de point sur l'axe de la rivière (mais je pense que vous l'avez déjà fait)
-> au lieu de découper l'axe de la rivière, pourquoi ne pas construire les liens directement entre les points.
Vous n'avez qu'à ordonner les points dans un tableau Excel de ce type
point A | point B
------------------------
1 | 2
2 | 3
3 | 4
4 | 5
et ensuite vous construisez une ligne du point1 au point 2 , puis du point 2 au 3,.... (peut être en utilisant les coordonnées des points dans le tableau)
Cela est assez facile depuis Postgis mais il doit bien y avoir un outil dans Qgis ou autres qui permettent de faire cette manip.
il y a meme cet outil dans QGIS qui semble relier des points en suivant un champ de date
https://docs.qgis.org/2.18/fr/docs/user … ts-to-path
Cordialement, Nicolas GRANIER
Hors ligne
#3 Mon 09 January 2023 09:23
- Rémi Bodinier
- Juste Inscrit !
- Date d'inscription: 4 Jan 2023
- Messages: 3
Re: Découpage d'une ligne par des points en prenant en compte le temps
Bonjour, merci pour cette réponse Nicolas,
Malheureusement si je fais cette méthode, je mesure les distances euclidiennes, en ligne droite. Or moi j'aimerais mesurer la distance en mètres de cours d'eau. Je précise que le cours d'eau en question est plutôt sinueux : 1km entre deux points à vol d'oiseau peut être égale à 5km si on suit le cours d'eau.
C'est pour cela que j'avais opté pour la méthode de découpe.
Bien cordialement,
Rémi.
Hors ligne
#4 Tue 10 January 2023 05:13
- Cornet Jérémie
- Participant assidu
- Lieu: Nouméa
- Date d'inscription: 6 Apr 2008
- Messages: 229
Re: Découpage d'une ligne par des points en prenant en compte le temps
Bonjour, je vous conseille de faire des recherches du côté du référencement linéaire.
Cela vous permettra d'affecter un attribut de distance au debut du cours d'eau pour chacun de vos points.
Ensuite, le reste ne sera que de l'arithmétique entre les points.
Jérémie
Ps : il y a des fonctions pour bosser avec la dimension m dans postgis et il me semble qu'il y a au moins un pligin de referncement lineaire dans qgis.
Dernière modification par Cornet Jérémie (Tue 10 January 2023 05:22)
Hors ligne
#5 Tue 10 January 2023 09:27
- Rémi Bodinier
- Juste Inscrit !
- Date d'inscription: 4 Jan 2023
- Messages: 3
Re: Découpage d'une ligne par des points en prenant en compte le temps
Bonjour, merci Jérémie,
En effet le référencement linéaire à l'air d'être la solution à mon problème. En regardant il me semble que les plugins LRS et QChainage soient utilent dans ce domaine;
Merci encore.
Cordialement,
Rémi.
Hors ligne
#6 Tue 10 January 2023 09:30
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Découpage d'une ligne par des points en prenant en compte le temps
Malheureusement si je fais cette méthode, je mesure les distances euclidiennes, en ligne droite. Or moi j'aimerais mesurer la distance en mètres de cours d'eau. Je précise que le cours d'eau en question est plutôt sinueux : 1km entre deux points à vol d'oiseau peut être égale à 5km si on suit le cours d'eau.
Bonjour,
effectivement je n'avais pas pensé la sinuosité des cours d'eau.
La solution existe toujours mais elle se complexifie...
Je partirai toujours de la base à savoir des points ordonnés dans le temps.
Vous découpez ensuite l'intégralité de votre cours d'eau par tous ces points.
Ensuite vous utilisez les fonctionnalités de pg routing de postgis (il existe des plugins dans qgis => chemin le + court) pour recréer les chemins entre deux points ordonnés.
On est clairement sur les graphes et calculs d'itinéraires...mais je ne vois que cette solution.
Nicolas
Hors ligne
Pages: 1
- Sujet précédent - Découpage d'une ligne par des points en prenant en compte le temps - Sujet suivant