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Ă© ?

#1 Thu 08 June 2017 14:47

Abdoulayi
Participant occasionnel
Date d'inscription: 5 Jan 2017
Messages: 10

QGIS: déplacer des points sur les lignes routiers les plus proches

Bonjour Chers géomaticiens,

J'ai un problÚme qui me bloque depuis quelques jours et auquel j'ai pas trouvé de solution dans les différents forums.

Je cherche à déplacer des points sur les lignes les plus proches.
Je m'explique. d'un cĂŽtĂ©, j'ai des milliers de points gĂ©orĂ©fĂ©rencĂ©s concernant Ă  des points d'enquĂȘtes. Et de l'autre, le rĂ©seau routier de France (polylignes).
Mes points d'enquĂȘtes devraient ĂȘtre superposĂ©s  sur le rĂ©seau routier national puisque les enquĂȘtes sont en lien avec les routes. Malheureusement, ce n'est pas le cas pour la majoritĂ© de mes points. Je cherche donc une solution pour dĂ©placer automatiquement mes points afin qu'ils Ă©pousent la position de la ligne du rĂ©seau routier la plus proche.
J'utilise QGIS 2.16 et je suis Ă©galement preneur si la solution devrait ĂȘtre en SQL, car j'utilise la base de donnĂ©es PostgreSQL.

Je vous remercie pour l'ensemble des points que vous auriez Ă  me proposer.

Hors ligne

 

#2 Fri 09 June 2017 09:08

Xavier Julian
Participant assidu
Lieu: Orange
Date d'inscription: 19 Jan 2015
Messages: 218

Re: QGIS: déplacer des points sur les lignes routiers les plus proches

Bonjour Abdoulayi !

Dans le sujet récent ci-dessous, il y a plusieurs pistes proposées pour lier des points à des lignes :
https://georezo.net/forum/viewtopic.php … 76#p295376

++
Xavier.

Hors ligne

 

#3 Fri 09 June 2017 11:12

JD
Membre
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: déplacer des points sur les lignes routiers les plus proches

Bonjour,
on peut surement l'optimisé mais quelque chose comme ca doit fonctionner sous postgresql:

La premiĂšre sous-requĂȘte recherche les routes Ă  moins de 300m du point et calcule leur distance
La seconde attribue pour chaque point un classement des routes selon la distance
Enfin le dernier select construit la plus courte ligne entre le point et la route,
puis prend le dernier point (pour qu'il soit sur la route), et tout ceci pour la route la plus proche du point (rank =1) :

Code:

with s as (
select 
  b.id as id_point,
  r.id as id_route,
  st_distance(b.geom,r.geom) as distance,
  r.geom as geom_route,
  b.geom as geom_point
from
        route as r,
        point AS b
--supposition que les points se trouvent Ă  moins de 300m de la route
where st_dwithin(b.geom, r.geom, 300)
),
req as (
select  *, rank() OVER (partition by id_point ORDER BY distance) as rank from s
ORDER BY id_point)
select 
  id_point,
  id_route,
  distance,
  st_endpoint(st_shortestline(geom_point, geom_route)) as geom
from req
where rank = 1

Dernière modification par lejedi76 (Fri 09 June 2017 11:19)

Hors ligne

 

#4 Fri 09 June 2017 17:35

Abdoulayi
Participant occasionnel
Date d'inscription: 5 Jan 2017
Messages: 10

Re: QGIS: déplacer des points sur les lignes routiers les plus proches

Merci beaucoup Xavier pour les pistes proposées. Elles m'ont permis d'y voir plus clair. TrÚs content de savoir que tu continues toujours à nous éclairer ici :-).
Merci Ă  "nouveau" Ă  Lejedi76 pour la requĂȘte. J'ai eu le temps de le tester et il correspond bien Ă  ce que je voulais dans un premier temps.

Je vais devoir juste y apporter quelques modifications supplĂ©mentaires, car ma requĂȘte doit faire attention Ă  certaines relations de proximitĂ©s.
En effet, la route la plus proche n'est pas dans certains cas le lieu oĂč a lieu l'enquĂȘte. Je le sais, car ma table enquĂȘte contient souvent l'identifiant de la route rattachĂ©e.
Mais je pense que cela ne devrait pas me poser beaucoup de difficulté puisque les deux tables ont cette information en commun.
C'est-Ă -dire qu'en plus de la route la plus proche et je vais ajouter "simplement" la contrainte d'avoir les mĂȘmes identifiants de la route pour trouver la position de la route la plus proche.
Ainsi dans certaines situations, ça serait par exemple sur la deuxiĂšme ou sur la troisiĂšme route qu'il faudrait position mes enquĂȘtes.

Bien sĂ»r je vais maintenir l'histoire de distance, ainsi faut pas que la requĂȘte dĂ©borde d'imagination.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo