banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB