परत की विशेषता तालिका में रंग स्टाइल को कलर कॉलम में कॉपी कैसे करें?


15

मेरे पास QGIS में एक बहुभुज परत है जिसे मैंने प्रत्येक बहुभुज के लिए एक यादृच्छिक रंग शैली लागू किया है। परत के गुणों के तहत -> शैली मैंने एक वर्गीकृत शैली का चयन किया और फिर एक यादृच्छिक रंग रैंप उत्पन्न किया। मैंने लेयर टेबल में एक कलर कॉलम जोड़ा। क्या शैली में निर्दिष्ट रंग को स्वचालित रूप से प्रत्येक बहुभुज के लिए रंग स्तंभ में कॉपी करने का एक तरीका है "# ff0000"।

अंत में, मैं इसे जियोजोन परत के रूप में निर्यात करना चाहता हूं और इसे एक पत्रक मानचित्र में आयात करना चाहता हूं। रंग स्तंभ पत्रक में रंग सेट करेगा।

जवाबों:


22

आप इसके लिए PyQGIS का उपयोग कर सकते हैं (निश्चित रूप से इसके लिए सबसे अच्छा समाधान नहीं है, हालांकि)।

QGIS TOC में परत का चयन करें (या सक्रिय करें), QGIS पायथन कंसोल खोलें, और इस कोड को कॉपी करें:

prefix = "'"
layer = iface.activeLayer()
attr = layer.rendererV2().classAttribute()
attrColor = 'color' # Name of the field to store colors
fieldIndex = layer.dataProvider().fieldNameIndex(attrColor)
attrFeatMap = {}

for cat in layer.rendererV2().categories(): 
  expr = "\""+attr+"\"="+prefix+unicode(cat.value())+prefix
  for f in layer.getFeatures(QgsFeatureRequest(QgsExpression(expr))):
    attrMap = { fieldIndex : cat.symbol().color().name()}
    attrFeatMap[ f.id() ] = attrMap

layer.dataProvider().changeAttributeValues( attrFeatMap )

मैं मानता हूं कि रंगों को संग्रहीत करने के लिए आपके क्षेत्र को 'रंग' कहा जाता है। इसे चलाने के बाद, मैंने इसे प्राप्त कर लिया है:

यहाँ छवि विवरण दर्ज करें

अगर आपको कोई समस्या आती है तो मुझे बताएं।


वहाँ RGBI के लिए यह करने के लिए possibilite है?
डिओगो कैरिबे 19

ज़रूर। कॉल करने के बजाय cat.symbol().color().name()कुछ इस तरह करें:str(cat.symbol().color().red()) +','+ str(cat.symbol().color().green()) +','+ str(cat.symbol().color().blue())
जर्मेन कारिलो

अभी भी qgis 3.6 में मान्य है, एपीआई का नाम रेंडरर वी 2 के अलावा -> रेंडरर
सबास

यहाँ QGis 3.6 पर काम नहीं किया। मैंने रेंडरर को रेंडरर 2 नाम दिया है, लेकिन काम नहीं किया।
पालदिनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.