Pages: 1
- Sujet précédent - QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie) - Sujet suivant
#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
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
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: 3896
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
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
Pages: 1
- Sujet précédent - QGIS 3: Contour d'un ensemble de polygones (générateur de géométrie) - Sujet suivant