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 Fri 21 February 2014 17:44

OlivierRustener
Juste Inscrit !
Date d'inscription: 21 Feb 2014
Messages: 6

Requête d'intersection simple (st_intersetcs) ?

Bonjour,

Novice en requête spatiale et SQL, je cherche à récuprer via Postgis toutes les lignes d'une couche en fonction d'une autre couche de délimitation (ex: extraire toutes les lignes de la routes qui se trouve dans la table Villes). 

Sous Postgis avec la fonction St_intersects je parviens presque au résultat que j'espère, cependant le découpage des lignes n'est pas "parfait". En effet, une ligne qui se trouve dans la couche de délimitation et qui se poursuit bien au delà n'est pas découpée.

Voici ma requête : select routes.* from routes, villes where st_intersects(routes.geom, villes.geom)

Pouvez-vous, s'il vous plaît m'aider à construire la bonne requête ?

Hors ligne

 

#2 Fri 21 February 2014 18:12

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Requête d'intersection simple (st_intersetcs) ?

Bonsoir,

La fonction st_intersects permet de savoir si deux objets s'intersectent. Ca ne les découpe pas.
Il faut utiliser st_intersection(geom, geom) pour découper des objets:

Code:

select st_intersection(routes.geom, villes.geom) 
from routes, villes 
where st_intersects(routes.geom, villes.geom)

Nicolas

Hors ligne

 

#3 Fri 21 February 2014 19:05

OlivierRustener
Juste Inscrit !
Date d'inscription: 21 Feb 2014
Messages: 6

Re: Requête d'intersection simple (st_intersetcs) ?

Merci beaucoup pour cette réponse.

Après vérification dans Qgis, cela découpe bien les routes exactement en fonction de la limite d'une ville, cependant il n'y a plus aucun attribut.
Que faut-il rajouter dans la requête pour garder les informations de la table routes ?

Merci !!!

Hors ligne

 

#4 Fri 21 February 2014 20:06

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Requête d'intersection simple (st_intersetcs) ?

Il faut lister les champs que vous voulez dans la partie select:

select champ1, champ2, st_intersection(...
from ...
where ...

Nicolas

Hors ligne

 

#5 Sun 23 February 2014 00:35

OlivierRustener
Juste Inscrit !
Date d'inscription: 21 Feb 2014
Messages: 6

Re: Requête d'intersection simple (st_intersetcs) ?

Merci beaucoup cela fonctionne bien !!!

Cependant, autre problème du coup... Sur de grosse table (plus de 200mo), la requête met une éternité (plus de 30 minutes facilement...) pour sortir un résultat. Est-ce normal ?

PS 1 : Je réalise mes requêtes sur les données OSM de la région Rhône-Alpes
PS 2 : Je deviens fou :-)

Hors ligne

 

#6 Sun 23 February 2014 12:24

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: Requête d'intersection simple (st_intersetcs) ?

Bonjour,

La performance dépend de beaucoup de parametres, notamment la présence d'un index spatial sur la table de travail, pour ce genre de requetes.
Le jeu de données à découper est important: ca va forcément prendre du temps.

Je vous invite à lire la doc PostGIS, notamment les premiers chapitres de présentation, pour vous familiariser avec l'outil et ses usages.

Nicolas

Hors ligne

 

#7 Sun 23 February 2014 18:29

bernard lortic
Participant assidu
Lieu: crest 26
Date d'inscription: 23 Jan 2006
Messages: 549
Site web

Re: Requête d'intersection simple (st_intersetcs) ?

Salut,
ouai, je vais encore me faire censuré; mais c'est vrai, vous avez raison : pourquoi faire simple quand on peut faire compliqué ?

Hors ligne

 

Pied de page des forums

Powered by FluxBB