PYQGIS में loadNamedStyle का उपयोग करने के बाद किसी क्षेत्र में परिवर्तित मूल्यों के साथ सहजीवन को कैसे वर्गीकृत किया जाए?

Dec 16 2020

सबसे पहले, मैंने क्यूएमएल फ़ाइल के रूप में एक परत से एक परत शैली को निर्यात किया है जिसमें सिम्बॉलॉजी में ड्रॉ इफेक्ट्स (सिम्बोलोजी -> लेयर रेंडरिंग -> ड्रॉ इफेक्ट्स) शामिल हैं। ध्यान दें, मैंने इसे सहेजते समय सभी श्रेणियों की जाँच की है (छवि के नीचे देखें)।

फिर, मैंने उस मान को बदल दिया है जिस क्षेत्र में मैंने स्नातक की उपाधि प्राप्त की है। फिर मैंने 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 फ़ाइल में प्रभाव उसके बाद गायब हो गया है। मुझे भी नहीं लगता कि ऐसा करने का यह सबसे अच्छा तरीका है। क्या PYQGIS में QML फ़ाइल को लोड करने के बाद नए मूल्यों के साथ सहजीवन को वर्गीकृत करने का एक अधिक सुविधाजनक तरीका है?

जवाब

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

इस तरह, निर्धारित मापदंडों के लिए फिर से वर्गीकृत करने के लिए सहजीवन को ट्रिगर किया जा रहा है और साथ ही प्रतीक प्रभाव गायब नहीं होता है।