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 13 February 2019 14:41

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Bonjour,

Je cherche à faire apparaitre le contour extérieur d'un ensemble de polygones jointifs sans créer une nouvelle couche (via le géotraitement vecteur "Regrouper").
La table attributaire de ma couche dispose d'un champ avec la même valeur pour chacun des polygones à rassembler.


Par exemple :
"Commune-1", "Commune-2" et "Commune-3" (entités-polygones nommées via le champ NOM_COM) ont toutes le champ SERVICE renseigné comme "Service-A" et sont les uns à cotés des autre.
De même, "Commune-4", "Commune-5" et "Commune-6" ont en commun la valeur "Service-B".

Sans modifier ma couche, comment faire apparaitre le contour de polygones représentés respectivement par l’agrégat de "Commune-1", "Commune-2" et "Commune-3", ainsi que "Commune-4", "Commune-5" et "Commune-6" ?
Autrement dit, comment dessiner les contours des polygones simulés "Service-A" et "Service-B".


J'ai tenté de modifier la symbologie de ma couche via le Générateur de géométrie (Propriétés de la couche > Symbologie > Type de symbole = "Générateur de Géométrie").
Je n'arrive pour l'instant qu'à définir le périmètre de l'ensemble de mes polygones, au lieu de dessiner le périmètre de plusieurs selon un champ (SERVICE dans mon exemple précédent).
L'expression utilisée est la suivante :

Code:

buffer(collect($geometry),0)

En bref, y a t'il un pro dans l'assistance, capable d'utiliser le Générateur de géométrie ?
Merci !


PS : J'ai aussi envisagé de créer une couche virtuelle (via requête SQL) à partir de ma couche initiale, mais le processus semble lourd pour QGIS et mon niveau en SQL est au mieux tâtonnant.

Hors ligne

 

#2 Wed 13 February 2019 14:58

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Essayer l'outil de géotraitement "regrouper"

Hors ligne

 

#3 Wed 13 February 2019 15:06

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Justement non.
Comme expliqué au début de mon précédent message, je ne veux pas l'utiliser car il cré une autre couche. Je souhaite seulement modifier l'apparence sans modifier la donnée.

Hors ligne

 

#4 Wed 13 February 2019 16:21

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Désolé pour ma première réponse wink

En SQL :

Code:

SELECT st_union(geometry) from couche_nom group by Service

Dernière modification par carteq (Wed 13 February 2019 16:22)

Hors ligne

 

#5 Thu 14 February 2019 10:26

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Merci pour ton retour carteq.
Le SQL n'est décidément pas mon truc, je n'arrive pas à mettre en application ce code hmm

Au mieux, j'arrive à créer une couche virtuelle contenant un seul polygone rassemblant tout mes polygones "COMMUNE-X", avec une table attributaire vide. Je n'obtient donc pas des polygone en fonction du Champ SERVICE

Ma procédure est :
- Ajouter/Editer une couche virtuelle
- Encart "Requête"

Code:

SELECT st_union(geometry) from 'NOM-COUCHE' group by 'SERVICE'

- Optionnel car ne change rien au résultat: Encart "Couches intégrées" > Bouton "Importer" > sélection "NOM-COUCHE"

Où est-ce que je me plante ?

----

Pour info, ma couche de base que je ne veux/peux pas modifier (appelée NOM-COUCHE dans l'exemple) dispose du champ SERVICE par jointure avec un CSV qui devra être actualiser régulièrement. La jointure semble impliquer forcement la création d'une couche virtuelle en cas de filtre SQL tel que tu le préconise.

D'où mon orientation initiale vers un traitement de l'apparence vie la fonction Générateur de Géométrie du Style de Symbologie.

Hors ligne

 

#6 Thu 14 February 2019 11:25

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3945

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Bonjour,

En bref, y a t'il un pro dans l'assistance, capable d'utiliser le Générateur de géométrie ?


Je me dévoue big_smile

Code:

buffer(st_collect($geometry, group_by:="SERVICE"), 0)

Oui, il manquait le champ d’agrégats. Par contre, je ne sais pas si en termes de rendu, c'est plus rapide qu'une couche virtuelle. Il va y avoir à générer autant de limites "zones de service" que de communes. Et pour votre couche virtuelle,

Au mieux, j'arrive à créer une couche virtuelle contenant un seul polygone rassemblant tout mes polygones "COMMUNE-X", avec une table attributaire vide


Logique car la requête ne demande qu'un champ géométrie (qui n'est pas visible par défaut dans la table attributaire). En outre, les apostrophes n'ont pas leur place ici, ce qui justifie que toutes les géométries soient fusionnées. Il faut lister les champs que vous souhaitez dans votre agrégat, genre

Code:

SELECT SERVICE, st_union(geometry) as geom
 from NOM-COUCHE
 group by SERVICE

Dernière modification par SANTANNA (Thu 14 February 2019 11:49)

Hors ligne

 

#7 Thu 14 February 2019 14:37

carteq
Participant assidu
Date d'inscription: 8 Mar 2008
Messages: 829

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Dites-moi, pourquoi la documentation énonce "collect" alors qu'on doit utiliser "st_collect" ? En fait je remarque que je dois toujours utiliser les fonctions commencant par "st_". À quoi servent les autres ?

Dernière modification par carteq (Thu 14 February 2019 15:04)

Hors ligne

 

#8 Thu 14 February 2019 17:00

lylambda
Participant actif
Date d'inscription: 31 Aug 2016
Messages: 127

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

@SANTANNA : Un pro, que dis-je, un héros !
Les deux solutions sont fonctionnelles. Merci pour les explications subsidiaires.
Il faut maintenant que je teste la réactivité de chacune.

@carteq : En effet, pour la solution via le Générateur de géométrie, la formule fonctionne sans "st_"

Code:

buffer(collect($geometry, group_by:="SERVICE"), 0)

Pour celle à base de SQL, cela a fonctionné avec.

Code:

SELECT SERVICE, st_union(geometry) as geom
 from NOM-COUCHE
 group by SERVICE

Dernière modification par lylambda (Thu 14 February 2019 17:01)

Hors ligne

 

#9 Thu 18 April 2019 14:41

Adeline M
Juste Inscrit !
Lieu: Montpellier
Date d'inscription: 31 Oct 2008
Messages: 5

Re: QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie)

Bonjour,

J'essaye de faire à peu près la même chose, mais pour des lignes, non jointives : je voudrais créer une enveloppe commune en représentation avec le générateur de géométries.

Or, cela ne me crée qu'un buffer pour le premier objet de la collection du group by.

Une idée de comment corriger cela ?

Merci par avance pour votre aide

Dernière modification par Adeline M (Thu 18 April 2019 14:42)

Hors ligne

 

Pied de page des forums

Powered by FluxBB