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 Tue 16 January 2018 11:46

MP911
Participant occasionnel
Date d'inscription: 4 May 2017
Messages: 26

QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

Depuis quelque jours s'essaye de trouver une solution à une carte que je dois réaliser.

Je dois faire une carte où apparaissent la quantité de salariés qu'il y a par type industries (il y a 10 industries au total classées par colonne) dans 12 zone d'emplois différentes.

J'ai essayé différents tests mais je n'arrive pas à créer cette carte :

-j'ai essayé les diagrammes mais je ne comprends pas comment ça marche les dagrammes pondéré la taille
-j'ai essayé les cercles proportionnels mais on ne peut pas choisir plusieurs champs à representer


Auriez-vous un conseil svp?? Je mets mon fichier execel en csv en pièce jointe si ça peut aider à comprendre mon problème

Merci beaucoup!


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

Hors ligne

 

#2 Tue 16 January 2018 13:03

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

Votre fichier est composé de 10 colonnes.
Pour la pondération par la taille, il suffit de faire la somme des champs dont la valeur servira à régler la taille :
n1_pcp + n2_ic + (...) + n10_ti

Il faut toujours veiller, avant, à ce qu'un des champs ne soit pas nul car NULL + 10 par exemple donne NULL. Mais ce n'est pas votre cas.

Les cercles proportionnels ne sont pas forcément appropriés dans votre cas si vous souhaitez représenter plusieurs champs


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 16 January 2018 14:36

MP911
Participant occasionnel
Date d'inscription: 4 May 2017
Messages: 26

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Merci Mathieu, j'ai fait la somme comme vous m'avez dit et ça marche.

Je me permets de demander si vous savez comment je peut mettre des étiquettes pour les diagrammes? C'est à qu'à coté de chaque couleur du diagramme apparaissent la quantité de salariés?

Par exemple, dans Aurillac j'ai un diagrammes avec 2 couleurs et je voudrais afficher les valeurs 550 et 700 correspondant aux salariés de chaque type d'industrie?

Merci à nouveau!

Hors ligne

 

#4 Tue 16 January 2018 15:27

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

Un article de GéoInfos explique comment procéder pour réaliser l'étiquetage
http://www.geoinformations.developpemen … a3526.html

Il faudra bidouiller, notamment créer autant de couches que de classes et utiliser des fonctions de cosinus et sinus


geodata au cerema et petits billets en géomatique

Hors ligne

 

#5 Tue 16 January 2018 17:54

MP911
Participant occasionnel
Date d'inscription: 4 May 2017
Messages: 26

Re: QGIS: Carte cercles proportionnels pour representer différents champs

J'ai essayer de le faire mais c'est trop compliqué avec les formules, ça me mets erreur de syntaxe à chaque fois

Quand il fait référence à "POPULATION", je dois prendre la colonne qui a la somme totale des salariés (celle qui m'a servie à faire les diagrammes)? Je ne comprends pas comment appliquer cette formule à ma carte :

to_string( ((sqrt(("POPULATION"/ maximum( "POPULATION" )))*2000/2)+250)
    * cos(pi()/2+pi()* ("POPULATION" / ("POPULATION" + "Pop_2030" + "pop_2050"))))
    || ',' || 
to_string( -((sqrt(("POPULATION"/ maximum( "POPULATION" )))*2000/2)+250)
* sin(pi()/2+pi()* ("POPULATION" / ("POPULATION" + "Pop_2030" + "pop_2050"))) )


Merci coup les coups de mains

Hors ligne

 

#6 Wed 17 January 2018 10:08

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

Vous n'avez pas de colonne initulée POPULATION dans votre csv. Quels sont les messages d'erreur ?

Dans la formule "POPULATION" + "Pop_2030" + "pop_2050" correspond à la somme de vos variables n1_pcp + n2_ic + (...) + n10_ti
Et "POPULATION" correspond, ici, à la variable à étiqueter. Donc, ce sera, pour une couche, n1_pcp , pour une autre n2_ic , etc...

Quoi qu'il en soit, ce sera difficile à débugger à distance. Ce que je vous conseille, c'est de bien décortiquer la formule, d'en séparer les différentes parties et d'y aller pas à pas. Vous pouvez aller à la ligne et ajouter des commentaires avec -- pour vous aider lors du débuggage


geodata au cerema et petits billets en géomatique

Hors ligne

 

#7 Wed 24 January 2018 11:57

MP911
Participant occasionnel
Date d'inscription: 4 May 2017
Messages: 26

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

J'ai fait pas à pas mais lors de le générateur de géométrie ce message apparaît:

Erreur d'analyse:
syntax error, unexpected '(', expecting COMMA or ')'

Erreur d'évaluation:
Pas de nœud racine !


Voici ce que j'ai écrit dans la générateur de géométrie :

Make_Line(
make_point(
CentroidX() +
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  +  "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti" ))) , 
CentroidY()+
(sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp" )))*2000/2)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp"  / ( "salaries_activites_n1_pcp"  + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) ),
make_point(
CentroidX() +
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* cos(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) , 
CentroidY()+
((sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )))*2000/2)+200)
* sin(pi()/2+pi()* ( "salaries_activites_n1_pcp" / ( "salaries_activites_n1_pcp" + "salaries_activites_n2_ic"
+  "salaries_activites_n3_pei" + "salaries_activites_n4_iaa" + "salaries_activites_n5_mfp" +
  "salaries_activites_n6_ip" + "salaries_activites_n7_thcc" + "salaries_activites_n8_mt" +
   "salaries_activites_n9_fme" + "salaries_activites_n10_ti"))) )
)


Par ailleurs, ma géométrie sont des polygones et non des lignes, comment je peux faire pour adapter la formule à des polygones?

Est-ce que vous avez trouvez une solution à cela?

Merci beaucoup!

Hors ligne

 

#8 Thu 01 February 2018 12:27

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Carte cercles proportionnels pour representer différents champs

Bonjour,

Il y a un souci de parenthèse en trop ou en défaut à mon avis !

Pas à pas signifie par exemple :
tester

Code:

maximum(  "salaries_activites_n1_pcp"  )

puis

Code:

"salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  )

puis

Code:

sqrt(( "salaries_activites_n1_pcp" / maximum(  "salaries_activites_n1_pcp"  ))

etc..

Bon courage !


geodata au cerema et petits billets en géomatique

Hors ligne

 

Pied de page des forums

Powered by FluxBB