Pages: 1
- Sujet précédent - QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire - Sujet suivant
#1 Thu 12 January 2017 16:44
- CGuillaume
- Participant actif
- Lieu: Annecy
- Date d'inscription: 3 Aug 2011
- Messages: 59
QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonjour à tous et meilleurs vœux !
Je bloque sur un petit truc que je pensais faisable mais peut être que non en fait
Est il possible d'extraire dans la table attributaire les codes rgb ou autre des couleurs utilisées dans une analyse thématique ?
L'inverse (créer une symbologie à partir de code rgb) est facile mais là je sèche.
Merci d'avance, Guillaume
PS : Tout ça pour des utilisateurs d'ArcGIS :-p
Hors ligne
#2 Thu 12 January 2017 17:50
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonsoir,
rien à ma connaissance ne permet de faire ceci nativement. Peut-être existe-t-il une extension ?
Cordialement,
Hors ligne
#3 Thu 12 January 2017 18:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3946
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Salut,
Il y a bien la variable @symbol_color qui permet de récupérer la couleur d'une entité, notamment pour étiqueter par exemple. Mais je ne pense pas qu'elle soit accessible depuis la table attributaire.
Hors ligne
#4 Thu 12 January 2017 18:34
- CGuillaume
- Participant actif
- Lieu: Annecy
- Date d'inscription: 3 Aug 2011
- Messages: 59
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonjour,
Super la fonction @symbol_color ! ça va me servir.
En revanche je n'ai pas réussi à la récupérer dans la table, label des analyses thématiques ou dans le composeur... et personne qui l'utilise dans cette fonction sur la toile j'ai l'impression.
Merci pour vos réponses, si quelqu'un à d'autres idées je suis preneur.
Bonne soirée
Hors ligne
#5 Fri 13 January 2017 09:19
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonjour,
Cette ressource vous sera peut-être utile : http://gis.stackexchange.com/questions/ … er-of-qgis ?
Hors ligne
#6 Fri 13 January 2017 10:38
- CGuillaume
- Participant actif
- Lieu: Annecy
- Date d'inscription: 3 Aug 2011
- Messages: 59
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonjour,
En farfouillant avec la console python j'ai réussi à sortir les infos voulues :
Valeur de la catégorie / nom de la couleur / rgba de la couleur
Code:
from qgis.core import * from qgis.gui import * layer = iface.activeLayer() categories = layer.rendererV2().categories() for category in categories: print category.value(), category.label(), category.symbol().color().name(), category.symbol().color().getRgb()
Plus qu'à sortir tout ça dans un fichier csv pour faire une jointure.
Source bien utile : https://snorfalorpagus.net/blog/2014/03 … n-plugins/
Dernière modification par CGuillaume (Fri 13 January 2017 10:39)
Hors ligne
#7 Fri 13 January 2017 11:20
- CGuillaume
- Participant actif
- Lieu: Annecy
- Date d'inscription: 3 Aug 2011
- Messages: 59
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Le final avec le csv, à lancer dans la console python de QGIS. Il peut certainement être optimisé mais le python n'est pas ma spécialité, donc je suis preneur de conseils .
Code:
# -*- coding: utf-8 -*- from qgis.core import * from qgis.gui import * import csv layer = iface.activeLayer() categories = layer.rendererV2().categories() chemin_fichier = 'C:/qgis/color.csv' file = open(chemin_fichier, 'wb') file.write(u'\ufeff'.encode('utf8')) # BOM (optionel...Permet a Excel d'ouvrir proprement le fichier en UTF-8) writer = csv.writer(file, delimiter = ';') # délimiteur ';' pour faciliter l'ouverture avec Excel writer.writerow(['Valeur', 'Couleur', 'RGB']) # Création des entêtes for category in categories: # Récupération des infos et écriture dans le csv list =[] list.append(category.value().encode('utf-8')) # Valeur list.append(category.symbol().color().name().encode('utf-8')) # Couleur hexadécimale list.append('rgb' + str(category.symbol().color().getRgb()).encode('utf-8')) # Couleur rgba writer.writerow(list) # On écrit le tout file.close() # Et bim QGIS c'est magique !! :)
Merci pour votre aide et à bientôt !
Hors ligne
#8 Fri 13 January 2017 22:43
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonsoir,
merci pour le partage.
Petite remarque :
votre script ne fonctionne que pour les analyses catégorisée.
Je verrai si j'ai le temps de vous donner une solution pour les autres cas.
Cordialemet,
Hors ligne
#9 Tue 17 January 2017 14:02
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
J'arrive un peu tard mais ce qui serait vraiment cool ce serait d'intégrer le script à la bibliothèque de Scripts de QGIS (Processing/Scripts/Tools/Get scripts from on-line collection), je pense que ça pourrait servir à d'autres utilisateurs.
D'ailleurs plus ou moins en lien avec votre demande, j'avais partagé deux scripts qui permettent de créer un style catégorisé sur une couche à partir d'un CSV contenant justement les infos que vous souhaitiez exporter (CSV_R-G-B_to_categorized_style & CSV_RGB_or_HEX_to_categorized_style).
Bonne après midi,
Florian Boret
Dream it, Make it, Share it
Hors ligne
#10 Wed 18 January 2017 18:45
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonsoir,
J'ai finalement pris le temps de créer un script QGIS en repartant de du code de Guillaume et comme évoqué par le jedi76 j'ai ajouté la possibilité de réaliser la même chose pour d'autres types de rendus (Ensemble de règles, style unique et gradué).
Florian Boret
Dream it, Make it, Share it
Hors ligne
#11 Wed 18 January 2017 22:51
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Bonsoir,
merci pour le partage Flo.
Bonne soirée,
Hors ligne
#12 Fri 20 January 2017 11:39
- CGuillaume
- Participant actif
- Lieu: Annecy
- Date d'inscription: 3 Aug 2011
- Messages: 59
Re: QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire
Génial merci pour les compléments, un petit script qui sera bien utile
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.xx: Récupérer code RGB ou autre dans la table attributaire - Sujet suivant