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 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 smile

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. smile

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

PA
Membre
Lieu: Paris
Date d'inscription: 5 Sep 2005
Messages: 3259
Site web

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 ?


Pierre-André Le Ny
Modérateur QGIS, Données, Coin de l'OpenSource
Aidez l'association GeoRezo !

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. smile

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 wink.

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 wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB