Bagaimana cara mengklasifikasikan simbologi dengan nilai-nilai yang diubah dalam suatu bidang setelah menggunakan loadNamedStyle di PYQGIS?

Dec 16 2020

Pertama-tama, saya telah mengekspor gaya lapisan dari lapisan sebagai file QML termasuk efek gambar (simbologi -> rendering lapisan -> efek gambar) dalam simbologi. Perhatikan bahwa, saya telah memeriksa semua kategori saat menyimpannya (lihat gambar di bawah).

Kemudian, saya telah mengubah nilai di bidang yang telah saya konfigurasikan dengan Lulus Simbologi. Kemudian saya mencoba memuat file QML dengan loadNamedStyle(). Itu tidak mengubah legenda dan kelas secara otomatis. Oleh karena itu, saya telah mencoba beberapa hal untuk memperbaruinya secara otomatis.

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)

Berhasil. Namun, efek dalam file QML tersebut telah hilang setelah itu. Saya juga tidak berpikir ini adalah cara terbaik untuk melakukan itu. Apakah ada cara yang lebih mudah untuk mengklasifikasikan simbologi dengan nilai baru setelah memuat file QML di PYQGIS?

Jawaban

1 meteergen Dec 16 2020 at 18:37

Oke, saya menemukan solusinya. Inilah yang saya lakukan,

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

Dengan cara ini, simbologi dipicu untuk mengklasifikasikan kembali parameter yang ditentukan dan juga efek simbol tidak hilang.