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 Wed 03 February 2010 15:54

solom7
Juste Inscrit !
Date d'inscription: 15 Jan 2010
Messages: 3

agrégation des geom connectés

bonjour,

mon problème concerne la question d'agrégation, dans mes requêtes je demande un groupement sur un paramètre donné (exemple occupation du sol), et je mets la fonction st_union(the_geom) pour la colonne geometry, donc le résultats c'est union de toute les polygones ayant le même code d'ocsol.

--------------------------
ocsol   |    the geom
--------------------------
1             xxxxxxxx
2             yyyyyy
3             zzzzzz

mais je souhaite grouper juste les entités qui se touchent.
--------------------------
ocsol   |    the geom
--------------------------
1             xxxxxxxx1
1             xxxxxxxx2
2             yyyyyy1       
3             zzzzzz1
3             zzzzzz2
3             zzzzzz3

donc il faut ajouter un groupement de plus sur le paramètre the_geom !!

est ce que vous connaissez une fonction ou un moyen pour dire grouper les geom qui sont connectés?

Dernière modification par solom7 (Wed 03 February 2010 15:55)

Hors ligne

 

#2 Wed 03 February 2010 17:02

vincentp
Participant actif
Lieu: Drôme
Date d'inscription: 18 Jul 2006
Messages: 128
Site web

Re: agrégation des geom connectés

solom7 a écrit:

bonjour,

mon problème concerne la question d'agrégation, dans mes requêtes je demande un groupement sur un paramètre donné (exemple occupation du sol), et je mets la fonction st_union(the_geom) pour la colonne geometry, donc le résultats c'est union de toute les polygones ayant le même code d'ocsol.

donc il faut ajouter un groupement de plus sur le paramètre the_geom !!

est ce que vous connaissez une fonction ou un moyen pour dire grouper les geom qui sont connectés?


Tu pourrais imaginer utiliser la fonction st_touches ou st_intersects, mais le souci que tu vas avoir est que ton problème est récursif. Deux pistes donc, avec pour ma part une préférence pour la deuxième :
* utiliser les fonctionnalités de SQL récursif de postgresql >= 8.4
http://www.postgresql.org/docs/8.4/stat … -with.html

* faire le union avec le group by sur les codes ocsol. Tu devrais récupérer des multipolygones. Ensuite tu les exploses et tu récupères les polygones, qui devraient etre les unions de chaque ensemble qui se touche.
pour cela aller voir du coté de st_dump, generate_series, st_geometryn

Bon courage
Vincent

Hors ligne

 

Pied de page des forums

Powered by FluxBB