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

State Of The Map 2024

#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: 1538

Re: [Postgis] Agrégation de polygones s'intersectant

dombeya974 a écrit:

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 hmm

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

 

Pied de page des forums

Powered by FluxBB