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있습니까?


QGIS에서 'processing.getObject ()'메소드를 계속 사용할 수 있습니다.
xunilk

1
아직 qgis 3으로 포팅하지 마십시오. API가 고정되지 않았으므로 릴리스가 완료되면 추가 작업을 수행하게됩니다! 직접 작업을하려는 경우 진행중인 작업 포팅 안내서는 github.com/qgis/QGIS/pull/4841/files
ndawson

답변:


4

로컬에 QGIS github 프로젝트의 사본이 있는데 몇 개월이되었지만 이것이 변경된 곳을 찾을 수있었습니다.

API 변경 목록을 확인 하는 것이 좋습니다.

dataobjects.getLayerFromString ()이 제거되었습니다. 대신 QgsProcessingUtils.mapLayerFromString ()을 사용하십시오.

자식 줄 주석을 사용 하여 몇 달 전에 변경 한 내용을 다시 추적 할 수있었습니다 ...

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

QGIS에서 'processing.getObject ()'메소드를 계속 사용할 수 있습니다. 순 이미지에서 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오

따라서 해결 방법은 다음과 같습니다.

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

1
현재 마스터에서는 processing.getObject ()를 사용할 수 없으며 몇 개월 안에 QGIS v3.0이됩니다.
Germán Carrillo

이 질문에 qgis-3.0 태그를하려고했지만 이것에 대한 태그가 없다는 것을 알았습니다. 관심있는 플러그인은 무엇입니까?
Steven Kay

@StevenKay는 태그가 있습니다.
Germán Carrillo

@ GermánCarrillo 알고 있습니다. 죄송하지만 질문에 레이어 참조를 매개 변수로 사용하는 대신 레이어 참조를 사용했기 때문에 3 번은 보지 못했습니다 (오류의 원인이 될 수 있음).
xunilk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.