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Ă© ?

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

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

Copyright Association GeoRezo