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

Rencontres QGIS 2025

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

#1 Mon 08 October 2018 16:17

benoit111
Participant actif
Date d'inscription: 20 Jan 2008
Messages: 102

selection de ligne

bonjour,

je cherche à sélectionner des lignes à proximité des routes par rapport à une distance....
j'ai choisit de réaliser un buffer sur la route puis une intersection avec la table ligne


Code:

SELECT route.IDtopo,ligne.id,ST_Intersection(ligne.geom, ST_Buffer(route.geom, 10)) as geom FROM tableligne as ligne join bd_topo.route as route 
on st_intersects(ligne.geom, route.geom)

mais je me rends compte que certaines lignes devrait être sélectionné , généralement c'est des cas ou j'ai des lignes de part et d'autre de la route..si quelqu'un peut m'éclairer sur mon erreur..
merci d'avance

Hors ligne

 

#2 Mon 08 October 2018 16:38

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: selection de ligne

Salut,

votre requête ne renvoie pas les bons résultats car c'est dans votre prédicat
de jointure  (partie après le mot clef ON)
que vous devriez appliquer le buffer à la géométrie de la route.
Actuellement votre requête renvoie pour chaque ligne intersectant une route,
l'identifiant et l'intersection entre cette même ligne et le buffer de la route.

Cependant, je pense que vous pourriez utiliser la fonction st_dwithin.
Celle ci renvoie vrai si les deux opérandes sont distante d'au maximum
une distance quelconque.
https://postgis.net/docs/ST_DWithin.html

N'oubliez pas de filtrer vos résultats car il est possible qu'une même ligne puisse
être renvoyée plusieurs fois si elle se trouvent à distance voulue de plusieurs routes.

Dernière modification par tumasgiu (Mon 08 October 2018 16:39)

Hors ligne

 

#3 Tue 09 October 2018 10:11

benoit111
Participant actif
Date d'inscription: 20 Jan 2008
Messages: 102

Re: selection de ligne

ok..merci..
ST_DWithin est trés bien mais j'aimerais que les lignes soit decoupé dans le resultat...

j'avais essayer 

Code:

SELECT route.IDtopo,ligne.id,ST_Intersection(ligne.geom, route.geom) as geom FROM tableligne as ligne join bd_topo.route as route 
on st_intersects(ligne.geom, ST_Buffer(route.geom, 10))

mais cela me renvoyait des points avec une dimension 3d ??

Hors ligne

 

#4 Tue 09 October 2018 11:15

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: selection de ligne

SI le résultat est une géométrie 3D,
c'est qu'il y a certainement un des deux opérandes qui l'est.

Il faut que vous conserviez le st_buffer dans votre clause select,
sinon lest lignes intersectant le buffer des routes mais pas les
routes elle mêmes renverront une intersection nulle.

Vous pouvez aussi utiliser st_dwithin et quand même découper
les lignes en résultat.

Code:

SELECT route.IDtopo,ligne.id,ST_Intersection(ligne.geom, st_buffer(route.geom, 10)) as geom 
FROM tableligne as ligne join bd_topo.route as route 
on st_dwithin(ligne.geom, route.geom, 10)

Dernière modification par tumasgiu (Tue 09 October 2018 11:15)

Hors ligne

 

#5 Tue 09 October 2018 11:20

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: selection de ligne

Vous pouvez tester le nombre de dimension d'une géométrie avec ST_CoordDim,
et forcer le nombre de dimension avec st_Force2D.

Hors ligne

 

#6 Tue 09 October 2018 11:47

benoit111
Participant actif
Date d'inscription: 20 Jan 2008
Messages: 102

Re: selection de ligne

merci tumasgiu

SI le résultat est une géométrie 3D,
c'est qu'il y a certainement un des deux opérandes qui l'est.


oui mes routes..et je l'ai réglé...

merci pour le coup de main

la requête est correcte mais par contre les lignes ne sont pas découpé en fonction du buffer.???

Dernière modification par benoit111 (Tue 09 October 2018 16:39)

Hors ligne

 

Pied de page des forums

Powered by FluxBB