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か?


メソッド 'processing.getObject()'はQGISで引き続き使用できます。
xunilk 2017

1
まだqgis 3に移植しないでください-APIはフリーズしていないため、リリースが行われたときに自分で追加の作業を行うことになります!自分で仕事をしたい場合は、github.com
qgis /

回答:


4

QGIS githubプロジェクトのコピーをローカルに持っています。それは数か月前のものですが、これが変更された場所を見つけることができました。

これについて言及しているAPI変更のリストを確認すること価値があります

dataobjects.getLayerFromString()が削除されました。代わりにQgsProcessingUtils.mapLayerFromString()を使用してください。

git lineアノテーションを使用して、これを数か月前に行われた変更までたどることができました...

いくつかのメソッド(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

メソッド 'processing.getObject()'はQGISで引き続き使用できます。それはネット画像で観察できます:

ここに画像の説明を入力してください

したがって、回避策は次のとおりです。

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

1
processing.getObject()は現在のマスターでは使用できません。これは数か月後にQGIS v3.0になります。
ヘルマン・カリージョ

この質問にqgis-3.0のタグを付けるつもりでしたが、このタグがないことに気づきました。興味のあるところでは、どのプラグインを使用していましたか?
スティーブンケイ

@StevenKay、タグが付けられただけです。
ヘルマン・カリージョ

@GermánCarrillo知っています。申し訳ありませんが、パラメーターとしてuriの代わりにレイヤー参照(エラーの考えられる原因)を使用することに焦点を当てたため、3番は表示されませんでした。
xunilk 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.