Pages: 1
- Sujet précédent - QGIS: Groupes de points (cluster) en fonction d'attributs - Sujet suivant
#1 Mon 21 August 2023 09:25
- NMonteix
- Participant occasionnel
- Date d'inscription: 7 Jan 2020
- Messages: 11
QGIS: Groupes de points (cluster) en fonction d'attributs
Bonjour
J'ai une série de points avec entre autres un attribut correspondant à leur valeur numérique, et un attribut catégoriel.
Je voudrais les regrouper sur la base de leur distance ET de la valeur de l'attribut catégoriel.
La symbologie "groupes de points" ne fonctionne pas, il n'est pas possible de discriminer selon l'attribut catégoriel (ou je n'ai pas trouvé comment...).
La seule chose qui fonctionne, un peu lourde, est de créer une couche virtuelle par valeur catégorielle, ce qui est très long vu le nombre de catégories.
J'ai essayé d'utiliser aggregate (formule insérée dans la taille du symbole simple, de manière à ce que non seulement le groupe de points existe, mais qu'il ait aussi une taille variant en fonction de la somme de la valeur des points composant le groupe):
Code:
aggregate( @layer_name,'sum',"Nombre",filter:="Nature"=$geometry AND intersects(buffer($geometry,10),geometry(@parent))))
A priori, c'est le filtre
Code:
"Nature"=$geometry
qui bloque, le résultat est nul.
Merci par avance pour toute idée
Nicolas
Dernière modification par NMonteix (Mon 21 August 2023 09:32)
Hors ligne
#2 Mon 21 August 2023 09:43
- Robin B
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 31 Jul 2023
- Messages: 14
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
Bonjour,
J'ai du mal à identifier ce que vous voulez filtrer avec le code "Nature" = $geometry. Pouvez-vous m'éclairer ?
Hors ligne
#3 Mon 21 August 2023 09:52
- NMonteix
- Participant occasionnel
- Date d'inscription: 7 Jan 2020
- Messages: 11
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
Les catégories à filtrer sont dans le champ "Nature". Je rédigeais ce filtre en le comprenant comme "filtrer les points ayant la même valeur dans Nature que le point actuel".
Le problème vient certainement de là...
Dernière modification par NMonteix (Mon 21 August 2023 09:55)
Hors ligne
#4 Mon 21 August 2023 10:07
- Robin B
- Participant occasionnel
- Lieu: Montpellier
- Date d'inscription: 31 Jul 2023
- Messages: 14
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
Vous pouvez essayer de remplacer "Nature" = $geometry par
Code:
"Nature" = attribute( @parent , 'Nature')
Hors ligne
#5 Mon 21 August 2023 10:26
- NMonteix
- Participant occasionnel
- Date d'inscription: 7 Jan 2020
- Messages: 11
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
Fantastique !
Merci beaucoup
Hors ligne
#6 Mon 21 August 2023 14:43
- NMonteix
- Participant occasionnel
- Date d'inscription: 7 Jan 2020
- Messages: 11
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
En fait, si cela va mieux, le fond du problème n'est pas résolu: lorsque deux points sont suffisamment proches pour pouvoir être agrégés, ils sont doublés, chacun avec la même valeur (deux points de valeur 2 dans la même catégorie sont représentés comme 2 points de valeur 4).
Hors ligne
#7 Thu 24 August 2023 11:15
- NMonteix
- Participant occasionnel
- Date d'inscription: 7 Jan 2020
- Messages: 11
Re: QGIS: Groupes de points (cluster) en fonction d'attributs
Solution, trouvée notamment en passant par là: https://gis.stackexchange.com/questions … 218#465218
But
Regrouper des points sur critères de distance (ici une distance tampon de 5m à partir d’un point) et sur un critère de valeur d’attribut. Chacun des points a un attribut de catégorie et un attribut numérique correspondant à sa valeur propre. Cette valeur propre sera donc additionnée pour les points situés dans la zone tampon de 5 m et rendue visible par le diamètre du cercle utilisé comme représentation. [Pour mémoire, le rendu visuel de valeurs différentes par des cercles de surfaces croissantes répond à la formule n*Value^0.5 (la racine carrée [^0.5] de la valeur [Value] multipliée par le diamètre du cercle pour une valeur de 1 [n, ici 2 mm])
Symbologie
Choisir ‘catégorisé’ et catégoriser en fonction des valeurs de « Category »
Pour chaque valeur de catégorie, on utilisera comme symbole un ‘générateur de géométrie’ répondant à l’expression suivante :
Code:
centroid(aggregate( layer:=@layer_name, aggregate:='collect', expression:=@geometry, filter:="Category" =attribute(@parent,'Category') AND intersects(buffer(@geometry,5), buffer(geometry(@parent),5))))
Ce qui suit correspond à des interventions sur le symbole du niveau inférieur au générateur de géométrie, qui comportera un symbole de police et un symbole simple.
Symbole de police
(expression à insérer dans la fenêtre d’expression de « Caractère(s) »)
Code:
aggregate( layer:=@layer_name, aggregate:='sum', expression:="Value", filter:="Category" =attribute(@parent,'Category') AND intersects(buffer(@geometry,5), buffer(geometry(@parent),5)))
Taille du symbole simple (expression à insérer dans la fenêtre d’expression de « Taille »)
Code:
CASE When "Category"='A' Then 2*aggregate( layer:=@layer_name, aggregate:='sum', expression:="Value", filter:="Category" =attribute(@parent,'Category') AND intersects(buffer(@geometry,5), buffer(geometry(@parent),5)))^0.5 END
Et voilà. S’il ne fallait pas donner une valeur à partir d’un attribut, et que chaque point ait une valeur de 1, on remplacerait ‘sum’ par ‘count dans les deux dernières expressions
Dernière modification par NMonteix (Thu 24 August 2023 14:46)
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Groupes de points (cluster) en fonction d'attributs - Sujet suivant