Como classificar a simbologia com valores alterados em um campo após usar loadNamedStyle em PYQGIS?
Em primeiro lugar, exportei um estilo de camada de uma camada como um arquivo QML incluindo efeitos de desenho (simbologia -> renderização de camada -> efeitos de desenho) na simbologia. Observe que, eu verifiquei todas as categorias ao salvá-lo (veja a imagem abaixo).
Em seguida, alterei os valores no campo com o qual configurei uma Simbologia Graduada. Então tentei carregar o arquivo QML com loadNamedStyle(). Não mudou a legenda e as classes automaticamente. Portanto, tentei algumas coisas para atualizar isso automaticamente.
field = 'SPREAD'
stylepath = '/path_to_my_layer_style.qml'
layer = iface.activeLayer()
layer.loadNamedStyle(stylePath)
renderer = layer.renderer()
sym = renderer.sourceSymbol()
grad = renderer.sourceColorRamp()
renderVal = renderer.createRenderer(layer,field,5,0,sym,grad)
layer.setRenderer(renderer)
Funcionou. No entanto, os efeitos naquele arquivo QML desapareceram depois disso. Também não acho que essa seja a melhor maneira de fazer isso. Existe uma maneira mais conveniente de classificar a simbologia com novos valores após carregar o arquivo QML no PYQGIS?
Respostas
Ok, encontrei uma solução. Aqui está como eu fiz,
layer.loadNamedStyle(stylePath)
renderer = layer.renderer()
renderer.updateClasses(layer,0,5) # Update the QgsGraduatedSymbologyRenderer.mode and set the classes up to 5
renderer.updateRangeLabels() # Update label range
renderer.updateColorRamp() # Update the color ramp
iface.layerTreeView().refreshLayerSymbology(layer.id()) # Refresh legend on the interface
layer.reload()
Desta forma, a simbologia está sendo acionada para classificar novamente para os parâmetros determinados e também os efeitos do símbolo não desaparecem.