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é ?

Annonce

SIG 2025

#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

 

Pied de page des forums

Copyright Association GeoRezo