Pages: 1
- Sujet précédent - QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche - Sujet suivant
#1 Wed 05 January 2022 13:51
- guillaume
- Participant actif
- Date d'inscription: 5 Sep 2005
- Messages: 66
QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche
Bonjour à tous
et meilleurs voeux pour 2022.
Je bloque sur un point qui à première vue semble anodin : je veux étiqueter uniquement le polygones de la couche A absents de la couche B.
A et B ont la même structure et les polygones de B sont extraits de A.
J'ai essayé entre autres un étiquetage suivant une règle , avec l'expression suivante : geomequals('couche_B','$geometry'), qui me donne logiquement l'inverse de ce que je recherche.
Avec geomdisjoint, je n'ai plus d'étiquette.
L'expression suivante : contains( $geometry , geom_from_wkt( geomcontains('couche_B','$geometry' ))) équivaut à la 1ère.
Auriez-vous une piste ?
D'avance merci, Guillaume
Hors ligne
#2 Thu 06 January 2022 13:44
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche
Bonjour, geomequals, c'est du ref_functions, c'est ça? Je ne sais plus comment il fonctionne mais peut-être un NOT geomequals...?
Avec geomdisjoint, je n'ai plus d'étiquette.
Le principe de "disjoint" est que l'entité doit être spatialement isolée, ne touche aucune autre. S'il n'y a pas cela dans votre couche...
Autrement, si B est issue de A, c'est que les entités ont les mêmes attributs aussi. Non? donc plutôt que de jouer sur les comparaisons de géométrie, prenez un champ de valeurs uniques et faites la comparaison, genre (pas testé)
Code:
array_contains( aggregate('coucheB','array_agg', champunique), -- on crée la liste des valeurs dans la couche B champunique) is false -- on compare que la valeur de l'entité dans A n'en fait pas partie
Hors ligne
#3 Thu 06 January 2022 18:05
- guillaume
- Participant actif
- Date d'inscription: 5 Sep 2005
- Messages: 66
Re: QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche
Bonjour
et merci SANTANNA, çà marche !
J'avais essayé quelque chose d'avoisinant mais sans succès :
"champunique" not in (
aggregate(layer:='coucheB',aggregate:='concatenate', expression:="champunique", concatenator:=',') )
Bonne soirée
Hors ligne
#4 Thu 06 January 2022 18:39
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3939
Re: QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche
C'est parce qu'aggregate avec concatenate vous renvoie une seule chaîne de caractères. Pas une liste de chaines de caractères.
Hors ligne
#5 Fri 07 January 2022 14:14
- guillaume
- Participant actif
- Date d'inscription: 5 Sep 2005
- Messages: 66
Re: QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche
Je viens de vérifier, la nuance est subtile mais bien réelle !
Encore merci
Hors ligne
Pages: 1
- Sujet précédent - QGIS 3.16: Etiqueter seulement polygones absents d'une autre couche - Sujet suivant