Yo uso el siguiente para crear una Regla basada en el estilo de una capa dada, que incluye la definición de una etiqueta, la expresión y el color de relleno:
from PyQt4.QtGui import QColor
layer = qgis.utils.iface.activeLayer()
style_rules = (
('First', 'expression_1', '#dbffdb'),
('Second', 'expression_2', '#f0ab64'),
)
symbol = QgsSymbolV2.defaultSymbol(layer.geometryType())
renderer = QgsRuleBasedRendererV2(symbol)
root_rule = renderer.rootRule()
for label, expression, color_name in style_rules:
rule = root_rule.children()[0].clone()
rule.setLabel(label)
rule.setFilterExpression(expression)
rule.symbol().setColor(QColor(color_name))
root_rule.appendChild(rule)
root_rule.removeChildAt(0)
layer.setRendererV2(renderer)
layer.triggerRepaint()
Puedo definir el color de la frontera usando el método anterior? Si no, ¿cómo podría recorrer el símbolo de capas y aplicar un borde de color después de una regla basada en el estilo se ha establecido?
Traté de incorporar en style_rules
pero no se como configurarlo (en este caso, sólo quiero que el color del borde para que coincida con el relleno de polígono):
style_rules = (
('First', 'expression_1', '#dbffdb', '#dbffdb'),
('Second', 'expression_2', '#f0ab64', '#f0ab64'),
)
for label, expression, color_name, color_border in style_rules:
rule = root_rule.children()[0].clone()
rule.setLabel(label)
rule.setFilterExpression(expression)
rule.symbol().setColor(QColor(color_name))
root_rule.appendChild(rule)
EDITAR:
He mirado en la QgsSymbolV2 y QgsRuleBasedRendererV2 de clases, pero ninguno de los dos parece tener todo lo relacionado a la frontera. El QgsSimpleFillSymbolLayerV2 clase tiene un borderColor
función, así que ahora estoy preguntando si es que es posible definir un borde de color utilizando el QgsRuleBasedRendererV2 clase.