#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
Re: 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.
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