Message posté par : NMonteix
----------------------------------------
Solution, trouvée notamment en passant par là:
https://gis.stackexchange.com/questions/465216/give-one-symbol-to-several-p…
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((a)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
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=362211#p362211
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net