#1 Sat 26 June 2010 15:43
- dombeya974
- Juste Inscrit !
- Date d'inscription: 26 Jun 2010
- Messages: 3
[Postgis] Agrégation de polygones s'intersectant
Bonjour,
Débutant sous postgis, je cherche à effectuer une requête assurément très classique, mais sans succès !
J'ai une table avec des geometry du type polygone.
Je cherche, après avoir effectué un buffer sur ces polygones (ST_BUFFER(the_geom, 100)), agréger (ST_UNION?) les buffers qui s'intersectent.
Quelle serait la requête à lancer ?
En vous remerciant par avance.
Dombeya
Hors ligne
#2 Sat 26 June 2010 23:51
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: [Postgis] Agrégation de polygones s'intersectant
Bonjour,
Débutant sous postgis, je cherche à effectuer une requête assurément très classique, mais sans succès !
J'ai une table avec des geometry du type polygone.
Je cherche, après avoir effectué un buffer sur ces polygones (ST_BUFFER(the_geom, 100)), agréger (ST_UNION?) les buffers qui s'intersectent.
Quelle serait la requête à lancer ?
En vous remerciant par avance.
Dombeya
Bonjour,
Quelque chose comme:
select (st_dump(st_union(res.geom))).geom
from
(select distinct a.geom as geom
from
(select st_buffer(geometry, 100) as geom from matable) as a,
(select st_buffer(geometry, 100) as geom from matable) as b
where not st_equals(a.geom,b.geom)
and st_intersects(a.geom, b.geom)) as res;
Des requetes imbriquées, avec une jointure spatiale sur la meme table, et quelques filtres pour ne pas avoir de geometries dupliquées dans le resultat final.
St_union produit un multipolygone avec plusieurs objets. St_dump est utilisé ici pour extraire chaque polygone.
On peut eventuellement générer des identifiants pour les polygones extraits en utilisant le champs "path" de st_dump (qui renvoie un type 'geometry_dump':
selet ..., (st_dump(st_union(res.geom))).path[1] from ...
La requete buffer peut etre mise dans une table temporaire, pour ne la faire qu'une fois, ou dans une sous-requete supplémentaire.
Il doit surement avoir plus simple
Nicolas
Dernière modification par Nicolas Ribot (Sun 27 June 2010 15:09)
Hors ligne
#3 Tue 29 June 2010 03:47
- dombeya974
- Juste Inscrit !
- Date d'inscription: 26 Jun 2010
- Messages: 3
Re: [Postgis] Agrégation de polygones s'intersectant
Bonjour,
Merci infiniment.
J'ai longtemps tourner autour de cette requête sans y parvenir, notamment je n'avais pas pensé à mettre les filtres sur les géométries dupliquées et surtout la subtilité du .geom de "(st_dump(st_union(res.geom))).geom", indispensable pour faire "remonter" une géométrie.
Très bonne journée,
Dombeya
Hors ligne