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 Aujourd'hui 15:52

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 295

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

Un grand merci.

Hors ligne

 

#2 Aujourd'hui 16:04

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1212

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 Aujourd'hui 16:14

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 295

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.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo