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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB