#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é ?
Bernard LORTIC IRD 93143 Bondy
http://www.bdvilles.ird.fr/lortic_pages … index.php3
http://www.bdvilles.ird.fr/lortic_pages … index.html
Hors ligne