Pages: 1
- Sujet précédent - QGIS: déplacer des points sur les lignes routiers les plus proches - Sujet suivant
#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
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 722
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
Pages: 1
- Sujet précédent - QGIS: déplacer des points sur les lignes routiers les plus proches - Sujet suivant