QGIS3 में QgsMapLayerRegistry हटा दी गई है?


21

है QgsMapLayerRegistryQGIS3 साथ pyqgis में availabe होने जा रहा

जब मैंने इसे QGIS अजगर कंसोल (2.99) में टाइप किया, तो अजगर इसे पहचानने लगता है क्योंकि यह स्वतः पूर्ण हो जाता है qgis.core.QgsMapLayerRegistry, लेकिन फिर एक त्रुटि देता है कि यह नहीं है:

Traceback (most recent call last):
  File "/usr/lib/python3.5/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
AttributeError: module 'qgis.core' has no attribute 'QgsMapLayerRegistry'

मैंने QGIS 2.99 के दो संस्करणों (01/07 में एक और 06/17 में) के साथ यह कोशिश की। दोनों संस्करण एक ही त्रुटि देते हैं। importया तो काम नहीं करता है:

>>>from qgis.core import QgsMapLayerRegistry
Traceback (most recent call last):
  File "/usr/lib/python3.5/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
ImportError: cannot import name 'QgsMapLayerRegistry'

है QgsMapLayerRegistryQGIS3 में हटा दिया?

जवाबों:


27

हाँ, इसे हटा दिया गया है, लेकिन विकल्प मौजूद हैं।

3.0 एपीआई के परिवर्तन यहाँ सूचीबद्ध हैं:

https://qgis.org/api/api_break.html

QgsMapLayerRegistry: इसकी कार्यक्षमता को स्थानांतरित कर दिया गया है QgsProject

मुख्य कारण यह है कि QgsMapLayerRegistry एक सिंगलटन है / और इसलिए केवल एक ही रजिस्ट्री कभी भी मौजूद हो सकती है। इस अड़चन को दूर करने के साथ, प्रमुख बाधाएं नई चीजों को लागू करने के तरीके से बाहर हैं जैसे कि कई परियोजनाएं अगल-बगल में खुलती हैं।


मुझे लगता है कि उत्तर अभी भी अधूरा है।
अभिजीत गुजर

2
मुझे लगता है कि आपको अधिक जानकारी देने की आवश्यकता है क्योंकि आपको लगता है कि उत्तर अभी भी अधूरा है।
मथियास कुह्न

यदि आप QgsProject.instance () का उपयोग करते हैं, तो यह सिंगलटन समस्या को कैसे हल करता है?
मिकी पेरेलस्टीन

यदि आप QgsProject.instance () का उपयोग नहीं करते हैं तो @MickeyPerlstein आप सही हैं। हालाँकि, स्टैंडअलोन ऐप को पहले से ही कई परियोजनाओं के साथ लागू किया जा सकता है और QGIS सर्वर कोड को इस दिशा में भी स्थानांतरित कर दिया गया है। लंबे समय में QgsProject.instance () पूरी तरह से गायब हो सकता है
मथायस कुह्न

मुझे समझ में नहीं आता है कि एक हिस्से पर एक सिंगलटन से दूसरे हिस्से पर सिंगलटन का उपयोग करने से कैसे बढ़ जाता है, कई उदाहरणों को चलाने की क्षमता को बदल देता है (कि वैसे भी एक ही सिंगलटन उदाहरण (परिभाषा के अनुसार) को पुन: प्राप्त करें ... यह एक के लिए अधिक समझ में नहीं आएगा ? कि उदाहरणों चल रहा हो जाता है सिंगलटन एप्लिकेशन यह भी बहुत आसान interopability और extensibilty (माइक्रोसॉफ्ट ऑफिस एसडीके की तरह की तरह है जहाँ आप कार्यालय के एक मौजूदा खुला उदाहरण से कनेक्ट या एक नया उदाहरण खोल सकते हैं अनुमति होगी
मिकी Perlstein

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