ดูเหมือนว่า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 อีกต่อไป
from PyQt5.QtCore import *
from qgis.core import *
#...
layer = processing.getObject(layer)
# -> ...module 'processing' has no attribute 'getObject'
มีวิธีการใช้ใหม่get.Object
หรือไม่?
คำตอบ:
ฉันมีสำเนาของโครงการ github QGIS ในพื้นที่เป็นเวลาไม่กี่เดือน แต่ฉันสามารถหาที่การเปลี่ยนแปลงนี้
ควรตรวจสอบรายการการเปลี่ยนแปลง APIซึ่งกล่าวถึงสิ่งนี้
dataobjects.getLayerFromString () ถูกลบแล้ว ใช้ QgsProcessingUtils.mapLayerFromString () แทน
การใช้คำอธิบายประกอบในบรรทัด git ฉันสามารถติดตามสิ่งนี้กลับไปสู่การเปลี่ยนแปลงได้เมื่อไม่กี่เดือนที่ผ่านมา ...
มันดูเหมือนว่าไม่กี่วิธี (รวมgetobject ) ถูก refactored ออกและแทนที่ด้วยเดียว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'])
วิธี 'processing.getObject ()' ยังคงมีอยู่ใน QGIS มันสามารถสังเกตได้ที่ภาพสุทธิ:
ดังนั้นวิธีแก้ปัญหามีดังนี้:
>>>import processing
>>>layer = processing.getObject("/home/zeito/pyqgis_data/polygon8.shp")
>>>layer
<qgis._core.QgsVectorLayer object at 0x9a9c0104>