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 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"...).


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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: 1088

Re: QGIS: Symbole plusieurs SVG

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: 1088

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: 3944

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

GlaDal a écrit:

Est-il possible d'avoir la légende avec le nom des couches de ton image ?


Je mets une image en pièce jointe

SANTANNA a écrit:

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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: 3944

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

SANTANNA a écrit:

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

 

Pied de page des forums

Powered by FluxBB