Как классифицировать символы с измененными значениями в поле после использования loadNamedStyle в PYQGIS?

Dec 16 2020

Прежде всего, я экспортировал стиль слоя из слоя в виде файла QML, включая эффекты рисования (символы -> рендеринг слоя -> эффекты рисования) в символах. Обратите внимание, что я проверил все категории при сохранении (см. Изображение ниже).

Затем я изменил значения в поле, в котором я настроил градуированные символы. Затем я попытался загрузить файл QML с расширением loadNamedStyle(). Это не меняет легенду и классы автоматически. Поэтому я попробовал несколько вещей, чтобы обновить это автоматически.

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)

Это сработало. Однако после этого эффекты в этом файле QML исчезли. Я тоже не думаю, что это лучший способ сделать это. Есть ли более удобный способ классифицировать символы с новыми значениями после загрузки файла QML в PYQGIS?

Ответы

1 meteergen Dec 16 2020 at 18:37

Хорошо, я нашел решение. Вот как я это сделал,

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() 

Таким образом, символы запускаются для повторной классификации определенных параметров, а также эффекты символов не исчезают.