#1 Fri 25 August 2023 09:41
- Eckmül
- Participant actif
- Date d'inscription: 5 Feb 2019
- Messages: 62
QGIS: Symbole plusieurs SVG
Bonjour,
Je cherche à faire une symbologie basé sur plusieurs règles ou plusieurs champs seraient pris en compte . Je voudrais par exemple renvoyés 3 symboles SVG "côte à côte" pour des champs avec des valeurs "autour de 300".
Pour l'instant j'ai fait une symbologie basé sur plusieurs règles, mais qui est assez lourde avec une règle pour chaque centaine, sachant qu'en plus je voudrais faire varier la couleur en fonction de l'année. (il y a plusieurs fois le nombre d'effectifs pour chaque année entre 2023 et 2027 "EFF_2023", "EFF_2024", "EFF_2025"...).
Le SIG c'est donné une réponse spatiale à des problèmes statistiques
Hors ligne
#2 Mon 28 August 2023 11:00
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1059
Re: QGIS: Symbole plusieurs SVG
Bonjour,
Ces liens répondent-ils à votre besoin ?
https://gis.stackexchange.com/questions … ibute-vale
https://pigrecoinfinito.com/2022/05/30/ … -virtuali/
Hors ligne
#3 Thu 31 August 2023 10:27
- Eckmül
- Participant actif
- Date d'inscription: 5 Feb 2019
- Messages: 62
Re: QGIS: Symbole plusieurs SVG
Les liens qui sont dans ton message traite plutôt du problème de façon qualitative, j'ai une donnée quantitative et je voulais géré de façon automatisé le décalage de chaque symbole de façon automatisé.
Dans la représentation de symboles qualitatif si on a un attribut avec "parking" = 1, on peut y associer le symbole de parking. Actuellement je suis déjà dans cette catégorie.
J'ai un chiffre qui se varie entre 0 et 1000 et j'ai des conditions
Si "chiffre" > 50 AND chiffre <=150 => alors je renvoie 1 picto rond
Si "chiffre" > 150 AND chiffre <=250 => alors je renvoie 2 picto rond
...
Si "chiffre" > 550 AND chiffre <=650 => alors je renvoie 6 picto rond
...
C'est une procédure très lourde avec plusieurs filtres, énormément, et je voudrais pouvoir tout mettre en une seule condition, enfin moins en tout cas.
Le SIG c'est donné une réponse spatiale à des problèmes statistiques
Hors ligne
#4 Thu 31 August 2023 11:07
- GlaDal
- Participant assidu
- Date d'inscription: 30 Aug 2013
- Messages: 1059
Re: QGIS: Symbole plusieurs SVG
Est-il possible d'avoir la légende avec le nom des couches de ton image ?
Hors ligne
#5 Thu 31 August 2023 11:24
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3928
Re: QGIS: Symbole plusieurs SVG
Bonjour,
PS: Je ne me concentre ici que sur la question de comment j'affiche des picto dont le nombre varie en fonction d'une valeur dans un champ.
Si "chiffre" > 50 AND chiffre <=150 => alors je renvoie 1 picto rond
Si "chiffre" > 150 AND chiffre <=250 => alors je renvoie 2 picto rond
...
Si "chiffre" > 550 AND chiffre <=650 => alors je renvoie 6 picto rond
En utilisant le générateur de géometrie comme type de symbole, inspiré du deuxième exemple, ça crée des picto en cercle autour du point. Je vous invite à voir l'aide de chaque fonction si vous voulez bien ajuster/adapter
Code:
with_variable( 'nombrepicto', -- le nombre de fois que le symbole va être affiché round("chiffre"/100), -- Attention: si vous avez des valeurs inférieurs à 50, il faudra gérer ce cas avec un case when collect_geometries( array_foreach( generate_series( 0, 360, 360/@nombrepicto ), -- on calcule l'angle de rotation entre les symboles project( $geometry, 2, radians( @element ) ) -- à vous de voir la distance qui correspond le mieux ) ) )
Hors ligne
#6 Thu 31 August 2023 14:55
- Eckmül
- Participant actif
- Date d'inscription: 5 Feb 2019
- Messages: 62
Re: QGIS: Symbole plusieurs SVG
Est-il possible d'avoir la légende avec le nom des couches de ton image ?
Je mets une image en pièce jointe
En utilisant le générateur de géometrie comme type de symbole, inspiré du deuxième exemple, ça crée des picto en cercle autour du point. Je vous invite à voir l'aide de chaque fonction si vous voulez bien ajuster/adapter
Je vais essayer de creuser cette piste, merci
Le SIG c'est donné une réponse spatiale à des problèmes statistiques
Hors ligne
#7 Thu 31 August 2023 16:27
- Eckmül
- Participant actif
- Date d'inscription: 5 Feb 2019
- Messages: 62
Re: QGIS: Symbole plusieurs SVG
@SANTANNA
J'ai essayé de modifier ton code pour avoir les points "côtes à côtes" sur une même ligne plutôt qu'en arc de cercle, mais tous mes points ce projétent sur le point et se confondent, ce qui ne me donne qu'un seul point à l'arrivé, vous auriez une idée ?
Code:
with_variable( 'nombrepicto', -- le nombre de fois que le symbole va être affiché round("__nb élèves 22-23"/100), -- Attention: si vous avez des valeurs inférieurs à 50, il faudra gérer ce cas avec un case when collect_geometries( array_foreach( generate_series( 0, 230/@nombrepicto, 40), -- on calcule l'angle de rotation entre les symboles project($geometry, 100,radians(90),0) -- à vous de voir la distance qui correspond le mieux ) ) )
Le SIG c'est donné une réponse spatiale à des problèmes statistiques
Hors ligne
#8 Thu 31 August 2023 18:34
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3928
Re: QGIS: Symbole plusieurs SVG
Désolé, je n'ai pas les clés pour comprendre cette ligne (230? 40?).
generate_series( 0, 230/@nombrepicto, 40),
Par contre @element est essentiel à la requête car c'est la variable qui assigne un comportement particulier à chaque symbole (voir l'aide de la fonction).
Un essai de simplification de toute la requête:
Code:
collect_geometries( array_foreach( generate_series( 1, round("__nb élèves 22-23"/100) ), --on calcule le nombre de symboles à placer project( @geometry, 100*@element - 100, radians(90)) -- on décale horizontalement chaque symbole de 100m du précédent (le -100 est pour éviter un décalage au départ) ) )
Hors ligne
#9 Fri 01 September 2023 13:45
- Eckmül
- Participant actif
- Date d'inscription: 5 Feb 2019
- Messages: 62
Re: QGIS: Symbole plusieurs SVG
Désolé, je n'ai pas les clés pour comprendre cette ligne (230? 40?).
generate_series( 0, 230/@nombrepicto, 40),
Par contre @element est essentiel à la requête car c'est la variable qui assigne un comportement particulier à chaque symbole (voir l'aide de la fonction).
Un essai de simplification de toute la requête:Code:
collect_geometries( array_foreach( generate_series( 1, round("__nb élèves 22-23"/100) ), --on calcule le nombre de symboles à placer project( @geometry, 100*@element - 100, radians(90)) -- on décale horizontalement chaque symbole de 100m du précédent (le -100 est pour éviter un décalage au départ) ) )
C'est super, c'est exactement le résultat que je cherchais, je vais ajuster en fonction de mon échelle et des années que je veux représenter, merci bien
Le SIG c'est donné une réponse spatiale à des problèmes statistiques
Hors ligne