Last active
April 23, 2021 15:47
-
-
Save Korto19/18baf0c687bbac1bd37a726eb155e1fd to your computer and use it in GitHub Desktop.
A QGIS field calculator expression to get the color of a categorized item
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from qgis.gui import * | |
from qgis.utils import iface | |
@qgsfunction(args='auto', group='Custom') | |
def get_catg_color(value, feature, parent): | |
""" | |
Restituisce il colore RGBA dell'elemento categorizzato: | |
il campo in input e' quello utilizzato per la categorizzazione | |
Per i campi della categorizzazione numerici formattatarli opportunamente e | |
utilizzare la stessa espressione per catturarne il colore | |
Returns the RGBA color of the categorized element: | |
the input field is the one used for categorization | |
For numeric categorization fields, format them appropriately and | |
use the same expression to get its color | |
<h2>Example usage:</h2> | |
<ul> | |
<li>get_color("Area") -> '228,52,199,255'</li> | |
<li>get_color(to_string(format_number("Area",2))) -> '228,52,199,255'</li> | |
</ul> | |
""" | |
layer = iface.activeLayer() | |
renderer = layer.renderer() | |
if layer.renderer().type() == "categorizedSymbol": | |
campo = renderer.legendClassificationAttribute() | |
for cat in renderer.categories(): | |
if str(value) == cat.value(): | |
colorato = cat.symbol().symbolLayer(0).properties()['color'] | |
break | |
return colorato |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment