QGIS 3 में processing.getObject ()


9

ऐसा लगता है कि processing.getObject()अब QGIS में उपलब्ध नहीं है।

from PyQt5.QtCore import *
from qgis.core import *
#...
layer = processing.getObject(layer)

# -> ...module 'processing' has no attribute 'getObject'

क्या उपयोग करने का कोई नया तरीका है get.Object?


विधि 'प्रोसेसिंग.getObject ()' अभी भी QGIS में उपलब्ध है।
xunilk

1
अभी तक 3 qgis को पोर्ट न करें - एपीआई जमी नहीं है, इसलिए जब रिलीज हो जाएगी तो आप अपने लिए अतिरिक्त काम करेंगे! यदि आप अपने लिए काम करना चाहते हैं, तो प्रगति प्रसंस्करण पोर्टिंग गाइड में काम github.com/qgis/QGIS/pull/4841/files पर है
ndawson

जवाबों:


4

मेरे पास स्थानीय स्तर पर क्यूजीआईएस जीथब परियोजना की एक प्रति है, यह कुछ महीने पुरानी है लेकिन मैं यह खोजने में सक्षम था कि यह कहां बदल गया।

यह एपीआई परिवर्तनों की सूची की जाँच करने के लायक है , जिसमें इसका उल्लेख है

dataobjects.getLayerFromString () हटा दिया गया था। इसके बजाय QgsProcessingUtils.mapLayerFromString () का उपयोग करें।

Git लाइन एनोटेशन का उपयोग करते हुए मैं कुछ महीने पहले किए गए एक बदलाव में इसे वापस लाने में सक्षम था ...

ऐसा लगता है जैसे कुछ तरीके ( getObject सहित ) को बाहर निकाल दिया गया था और एक एकल getLayerFromString () विधि के साथ बदल दिया गया था

def getLayerFromString(string, forceLoad=True):
    """Returns an object (layer/table) given a source definition.

    if forceLoad is true, it tries to load it if it is not currently open
    Otherwise, it will return the object only if it is loaded in QGIS.
    """
    ...

लेकिन तब से इसे QgsProcessingUtils में स्थानांतरित कर दिया गया है ।

तो आप प्रयोग करके देख सकते हैं QgsProcessingUtils.mapLayerFromString()

यदि QGIS 2.x का उपयोग कर रहे हैं, तो आपको पहले की तरह getObject () का उपयोग करने में सक्षम होना चाहिए print(processing.__dict__['getObject'])


0

विधि 'प्रोसेसिंग.getObject ()' अभी भी QGIS में उपलब्ध है। इसे शुद्ध छवि में देखा जा सकता है:

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

इसलिए, समाधान इस प्रकार है:

>>>import processing
>>>layer =  processing.getObject("/home/zeito/pyqgis_data/polygon8.shp")
>>>layer
<qgis._core.QgsVectorLayer object at 0x9a9c0104>

1
प्रोसेसिंग.getObject () वर्तमान मास्टर में उपलब्ध नहीं है, जो महीनों में QGIS v3.0 होगा।
जर्मेन कैरिलो

मैं इस सवाल qgis-3.0 को टैग करने जा रहा था, लेकिन देखा कि इसके लिए कोई टैग नहीं है। ब्याज से बाहर क्या प्लगइन तुम वहाँ का उपयोग कर रहे थे?
स्टीवन

@StevenKay, ने इसे टैग किया है।
जर्मन कैरिलो

@ GermánCarrillo मुझे पता है कि। क्षमा करें, लेकिन मुझे नंबर 3 नहीं दिखाई दिया क्योंकि मैं इसमें ध्यान केंद्रित करता हूं कि उन्होंने अपने प्रश्न में एक लेयर रेफरेंस का उपयोग किया था बजाय एक यूआरआई के पैरामीटर (त्रुटि का संभावित कारण) के रूप में।
xunilk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.