Pages: 1
- Sujet précédent - Postgis : Dissoudre les geométries en conservant tous les attributs ? - Sujet suivant
#1 Tue 30 September 2025 15:52
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 296
Postgis : Dissoudre les geométries en conservant tous les attributs ?
Bonjour,
Je me permets un message afin de savoir si avec postgis, il serait possible d'envisager de réaliser un "dissolve" :
https://docs.qgis.org/3.40/en/docs/user … l#dissolve
tout en conservant l'intégralité des valeurs attributaires ? Par exemple en utilisant une sorte de concaténation / agrégation au sein des nouvelles géométries résultats ?
J'ai regardé cet article : https://www.aproposinfosystems.com/en/a … -dissolve/
J'ai essayé de reproduire la proposition de mon coté avec ma table postgis contenant plusieurs polygones mais pour ma part ca ne fonctionne pas :
Code:
SELECT min(union_v4.max_hierar) as id, array_agg(union_v4.id) as ids, union_v6.geom FROM union_v4, (SELECT (ST_Dump(St_multi(ST_Union(geom)))).geom as geom FROM union_v6 WHERE st_intersects(union_v4.geom, union_v6.geom) GROUP BY union_v6.geom
J'obtiens :
Code:
ERROR: erreur de syntaxe à la fin de l'entrée LINE 12: GROUP BY union_v6.geom ^ ERREUR: erreur de syntaxe à la fin de l'entrée SQL state: 42601 Character: 285
Enfin, voici une information complémentaire.
En plus de préserver/conserver tous les attributs pendant la dissolution, je voudrais dissoudre les géométries polygonales en fonction des valeurs d'un attribut en particulier.
Dans mon cas, cet attribut est « max_hierar ».
Merci.
Dernière modification par image95 (Tue 30 September 2025 19:13)
Hors ligne
#2 Tue 30 September 2025 16:04
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1215
Re: Postgis : Dissoudre les geométries en conservant tous les attributs ?
Salut,
il vous manque une parenthèse :
Code:
SELECT min(union_v4.max_hierar) as id, array_agg(union_v4.id) as ids, union_v6.geom FROM union_v4, (SELECT (ST_Dump(St_multi(ST_Union(geom)))).geom as geom FROM union_v6 ) WHERE st_intersects(union_v4.geom, union_v6.geom) GROUP BY union_v6.geom
Hors ligne
#3 Tue 30 September 2025 16:14
- image95
- Participant assidu
- Date d'inscription: 6 Sep 2014
- Messages: 296
Re: Postgis : Dissoudre les geométries en conservant tous les attributs ?
Merci.
Voici ce que j'obtiens après ajout de la parenthèse :
Code:
SELECT min(union_v4.max_hierar) as id, array_agg(union_v4.id) as ids, union_v6.geom FROM union_v4, (SELECT (ST_Dump(St_multi(ST_Union(geom)))).geom as geom FROM union_v6) WHERE st_intersects(union_v4.geom, union_v6.geom) GROUP BY union_v6.geom
Code:
ERROR: la relation « union_v4 » n'existe pas LINE 6: union_v4, ^ ERREUR: la relation « union_v4 » n'existe pas SQL state: 42P01 Character: 110
ma table union_v4 est pourtant bien présente au sein de ma BDD postgis.
Enfin, voici une information complémentaire.
En plus de préserver/conserver tous les attributs pendant la dissolution, je voudrais dissoudre les géométries polygonales en fonction des valeurs d'un attribut en particulier.
Dans mon cas, cet attribut est « max_hierar ».
Merci.
Dernière modification par image95 (Tue 30 September 2025 19:13)
Hors ligne
#4 Wed 01 October 2025 08:08
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3221
- Site web
Re: Postgis : Dissoudre les geométries en conservant tous les attributs ?
Bonjour,
Sans commenter votre code, je pense que pour ce genre de choses il est préférable d'utiliser des fonctions de cluster fenêtrées.
Par exemple st_clusterintersectingwin()
Ceci en première passe vous permet de "grouper" les entités qui s'intersectent et de conserver leur attributs.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#5 Wed 01 October 2025 12:53
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1566
Re: Postgis : Dissoudre les geométries en conservant tous les attributs ?
Bonjour,
Si l'union geometrires doit se faire sur un attribut, un truc comme ca non ?
Code:
select array_agg(col1) as col1_values, array_agg(col2) as col2_values, max_hierar, st_union(geom) as geom from table group by max_hierar;
Nico
Hors ligne
Pages: 1
- Sujet précédent - Postgis : Dissoudre les geométries en conservant tous les attributs ? - Sujet suivant