Vous créez une légende avec de nouvelles fonctionnalités de symboles définis par les données dans QGIS?

8

J'ai un grand ensemble de données géologiques que je dois afficher à l'aide d'un ensemble de symboles et de couleurs standard de l'industrie. Les symboles et les couleurs sont des attributs des données. J'ai utilisé la capacité de symboles définis par les données de la version de développement de QGIS (révision de code b805894) pour afficher les données en fonction de ses attributs. Cela fonctionne parfaitement en termes d'affichage correct des données dans la fenêtre de la carte.

Le problème se pose lorsque j'essaie de créer une légende dans le compositeur. Les couleurs définies par les données affichées sur la carte ne parviennent pas à la légende.

Voici quelques captures d'écran. Le premier montre la fenêtre de la carte. Vous pouvez voir le problème se manifester dans la zone Calques sur la gauche. Les symboles sont tous de couleur noire.

La deuxième capture d'écran montre la fenêtre du compositeur avec une légende.

entrez la description de l'image ici

entrez la description de l'image ici

ManChild
la source
2
il suffit de télécharger vos écrans pour imgur ou similaire et poster le lien. Modifiez votre message pour ajouter les photos. En outre: Quelle version de QGIS utilisez-vous (car le compositeur a subi de nombreux changements dans le maître QGIS actuel)?
Courlis

Réponses:

10

Les légendes de la symbologie définie par les données ne sont pas encore implémentées. Il existe un rapport de bogue / demande de fonctionnalité ouvert: https://issues.qgis.org/issues/11491

En y réfléchissant, la symbologie définie par les données est extrêmement puissante et peut entraîner des centaines de variations différentes d'un symbole en couleur, forme, taille, rotation, etc. Il pourrait être impossible d'avoir vraiment une légende dans un tel cas.


Mise à jour 2017-08:

QGIS3 inclura une légende automatique pour la taille définie par les données:

entrez la description de l'image ici

obscur
la source
2
Merci pour la réponse et pour l'ouverture de la demande de fonctionnalité. La symbologie définie par les données est un outil fantastique, mais dans mon esprit, elle serait sérieusement limitée si elle ne pouvait pas être utilisée dans la production de cartes professionnelles.
ManChild
Objet: mise à jour 2017-08: qu'en est-il des couleurs définies par les données? Comme c'est le cas à l'OP ...
Chris
@Chr n'est pas implémenté pour autant que je sache
underdark
Nous avons maintenant QGIS 3.0; la légende automatique pour la taille définie par les données est-elle désormais disponible?
Cezar B
5

Je ne suis pas sûr que cela puisse être utile pour des cas complexes, mais je parviens à obtenir une fausse légende en ajoutant un calque de forme.

J'ai ensuite créé des points dans la nouvelle couche avec le même type de données que celui utilisé pour définir la symbologie, et localisé où je voulais que la légende apparaisse. Ensuite, j'ai défini la même symbologie pour cette couche et montré les valeurs de données correspondantes sous forme d'étiquettes.

Pas de panique
la source
Cette "astuce" fonctionne particulièrement bien pour les cercles gradués (ou similaires)!
Andrew Tice
4

J'ai dû créer une légende pour une symbologie catégorisée basée sur la couleur définie par les données. QGIS 3 ne l'a pas résolu pour moi. J'ai donc créé un attribut contenant la valeur de catégorie concaténée au code hexa de couleur.

J'ai créé un style catégorisé au hasard pour cette colonne, exporté ce style dans un fichier sld et ensuite le manipuler avec regexp dans un éditeur de texte pour remplacer pour chaque règle le code de couleur de remplissage par le code mentionné dans le nom de la catégorie. Après cela, j'ai nettoyé la valeur de la catégorie et le nom de la colonne filtrée et j'ai finalement appliqué ce nouveau style à mon calque.

Désolé, le lien ci-dessus est en français.

http://si.cenlr.org/24-11-2017

Mathieu Bossaert
la source
3

J'ai le même problème avec les cartes géologiques dans QGIS 2.10. Les cartes fournies ont un code couleur CMJN (en fait "YMCK") qui peut être interprété avec la formule suivante:

color_cmyk( 
CASE WHEN substr("COLOR_CODE",3,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",3,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",3,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",3,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",3,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",3,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",3,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",3,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",3,1 ) IS 8 THEN 80
 ELSE 100
END,
CASE WHEN substr("COLOR_CODE",2,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",2,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",2,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",2,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",2,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",2,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",2,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",2,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",2,1 ) IS 8 THEN 80
  ELSE 100
END,
CASE WHEN substr("COLOR_CODE",1,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",1,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",1,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",1,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",1,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",1,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",1,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",1,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",1,1 ) IS 8 THEN 80
  ELSE 100
END, 
CASE WHEN substr("COLOR_CODE",4,1 ) IS 0 THEN 0
  WHEN substr("COLOR_CODE",4,1 ) IS 1 THEN 7
  WHEN substr("COLOR_CODE",4,1 ) IS 2 THEN 14
  WHEN substr("COLOR_CODE",4,1 ) IS 3 THEN 21
  WHEN substr("COLOR_CODE",4,1 ) IS 4 THEN 31
  WHEN substr("COLOR_CODE",4,1 ) IS 5 THEN 42
  WHEN substr("COLOR_CODE",4,1 ) IS 6 THEN 54
  WHEN substr("COLOR_CODE",4,1 ) IS 7 THEN 67
  WHEN substr("COLOR_CODE",4,1 ) IS 8 THEN 80
  ELSE 0
END)

mais cela donne la couleur noire dans les boîtes de légende.

J'ai donc pensé pouvoir résoudre le problème en utilisant le script ci-dessus pour calculer un nouveau champ de couleur qui fonctionnait assez bien et renvoyait les valeurs RVB telles que 255 200 220. J'ai essayé

Color_rgb("Color") 

pour produire une couleur définie par les données sans aucune chance (formule invalide)! J'ai donc analysé le champ de couleur en 3 champs - Rouge, Vert et Bleu et la formule suivante -

color_rgb("Red","Green","Blue")  

dans la boîte de formule de couleur définie par les données a donné la bonne couleur sur la carte et la légende n'est plus noire - mais utilise les paramètres de rampe de couleur pour déterminer la couleur de la légende.

Il semble que nous ayons besoin d'une option dans la liste déroulante de la rampe de couleurs pour spécifier les couleurs définies par les données, puis il devrait utiliser la couleur définie par les données pour produire la légende.

Tous les autres contournements sont corrects, mais lorsque vous utilisez le filtre de légende sur le composeur de carte, vous voulez obtenir le bon résultat et ne pas avoir à aller dans chaque boîte de légende et taper les codes RVB dans les options de couleur choisies.

Arthur Taute
la source
3

J'ai eu des discussions avec le levé géologique ici en Australie-Occidentale et ils peuvent fournir des fichiers de données avec des codes géologiques, des couleurs RVB et des codes de modèles géologiques. Nous avons juste besoin d'un plug-in pour lire ces fichiers afin d'ajouter ces attributs aux polygones afin qu'ils puissent être affichés dans la légende. J'ai essayé l'option couleur (rgb) mais le créateur de la légende ne voit pas ces couleurs.

Grant Boxer
la source
0

J'ai eu le même problème ... RVB (rouge, vert, bleu) où le rouge, le vert et le bleu sont des valeurs répertoriées dans le tableau d'attributs peuvent être utilisées pour définir la couleur de la carte, mais la couleur n'est pas répliquée dans le panneau des couches et puis pas transféré vers une légende dans le compositeur d'impression ... ce que je devais faire était de cliquer sur chacun des calques dans le panneau des calques, puis de choisir et de réinitialiser les couleurs dans le panneau des calques de la carte ... une solution fastidieuse ... il devrait y avoir un moyen de coder cela dans PyGIS ...

JimWeick
la source