processing.runalg () พ่น“ TypeError: การจับคลาสที่ไม่สืบทอดจาก BaseException ไม่ได้รับอนุญาต”


11

สวัสดีทุกคนฉันกำลังใหม่กับ PyQGIS และฉันพยายามเรียกใช้สคริปต์ใน QGIS 3.0 โดยไม่ประสบความสำเร็จ (มันวิ่งอย่างสมบูรณ์ใน 2.18) และได้รับข้อผิดพลาดเดียวกันเสมอ:

AttributeError: โมดูล 'กำลังประมวลผล' ไม่มีคุณลักษณะ 'runalg' ในระหว่างการจัดการกับข้อยกเว้นข้างต้นเกิดข้อยกเว้นอื่น: การติดตามย้อนกลับ (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", บรรทัดที่ 91, ใน runcode exec (รหัส, self.locals) ไฟล์" ", บรรทัดที่ 8, ใน TypeError: ไม่อนุญาตให้รับคลาสที่ไม่ได้รับสืบทอดจาก BaseException

สิ่งนี้เกี่ยวข้องกับ PYTHONPATH หรือไม่? ฉันไม่สามารถเห็นรายการอัลกอริทึมเมื่อพิมพ์: processing.alglist ()

คำตอบ:


10

นี่ไม่ใช่คำตอบสำหรับคำถามดั้งเดิม แต่เป็นคำถามติดตามในความคิดเห็น ("ฉันจะดูรายการและตัวเลือกของอัลกอริทึมได้อย่างไร")

ใน QGIS 3 อัลกอริทึมการประมวลผลสามารถแสดงรายการในคอนโซล QGIS Python (Python 3) โดยใช้ (ดูhttps://gis.stackexchange.com/a/274902/22646และhttps://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

ในการแสดงชื่อ (ID):

for alg in QgsApplication.processingRegistry().algorithms(): print(alg.id())

การขอความช่วยเหลือสำหรับอัลกอริทึม (รวมถึงพารามิเตอร์อินพุตและเอาต์พุต):

processing.algorithmHelp("qgis:union")

นอกจากนี้ยังมี:

processing.algs.help.shortHelp.keys()
print("\n".join(processing.algs.help.shortHelp.keys()))

แต่ดูเหมือนจะไม่รวมอัลกอริทึมจากตัวอย่างเช่น gdal และ grass


ขณะนี้เอกสาร QGIS ได้รับการอัปเดตแล้ว (ดูdocs.qgis.org/testing/en/docs/user_manual/processing/… )
Håvard Tveite

14

ใน QGIS 3 processing.runใช้

ตัวอย่างเช่น

QGIS 2.x processing.runalg('gdalogr:convertformat', ...

QGIS 3.0 processing.run('gdal:convertformat', ...


มันใช้งานได้ดีอย่างสมบูรณ์แบบ ฉันจะดูรายการและตัวเลือกของอัลกอริทึมได้อย่างไร ฉันได้ลอง processing.alglist () และ processing.list () แต่ทั้งคู่มีข้อผิดพลาดที่คล้ายกัน
LE_Geomatica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.