QGIS 3'te işleme.getObject ()


9

processing.getObject()QGIS'de artık mevcut değil gibi görünüyor .

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

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

Kullanmanın yeni bir yolu var mı get.Object?


'İşleme.getObject ()' yöntemi hala QGIS'de kullanılabilir.
xunilk

1
Henüz qgis 3'e geçmeyin - API donmadı, bu nedenle sürüm yapıldığında kendiniz için ekstra iş yapacaksınız! Kendinize iş yapmak istiyorsanız, devam eden iş işleme taşıma kılavuzu github.com/qgis/QGIS/pull/4841/files
ndawson

Yanıtlar:


4

QGIS github projesinin yerel olarak bir kopyası var, birkaç aylık ama bunun nerede değiştiğini bulabildim.

Bundan bahseden API değişiklikleri listesini kontrol etmeye değer

dataobjects.getLayerFromString () kaldırıldı. Bunun yerine QgsProcessingUtils.mapLayerFromString () öğesini kullanın.

Git satırı ek açıklamalarını kullanarak bunu birkaç ay önce yapılan bir değişikliğe kadar takip edebildim ...

(dahil olmak üzere birkaç yöntemler gibi gözükür getobject ) dışarı refactored ve tek ile değiştirilmiştir getLayerFromString () yönteminin

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.
    """
    ...

Ama o zamandan beri taşınmış olması için QgsProcessingUtils .

Yani kullanmayı deneyebilirsin QgsProcessingUtils.mapLayerFromString()

QGIS 2.x kullanıyorsanız, getObject () işlevini daha önce olduğu gibi kullanabilmeniz gerekir ( print(processing.__dict__['getObject'])


0

'İşleme.getObject ()' yöntemi hala QGIS'de kullanılabilir. Net görüntüde görülebilir:

resim açıklamasını buraya girin

Yani, geçici çözüm aşağıdaki gibidir:

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

1
processing.getObject () şu anki masterda mevcut değil, bu aylar içinde QGIS v3.0 olacak.
Germán Carrillo

Bu soru qgis-3.0 etiketlemek için gidiyordu ama bunun için bir etiket olmadığını fark ettim. Hangi eklentiyi orada kullanıyordunuz?
Steven Kay

@StevenKay, sadece etiketledim.
Germán Carrillo

@ GermánCarrillo Bunu biliyorum. Üzgünüm, ama ben 3 numaralı görmedim çünkü o onun sorguda parametre referans olarak uri (olası hata nedeni) yerine bir katman başvurusu kullandığına odaklanıyorum.
xunilk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.