Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB