processing.runalg ()에서 "TypeError : BaseException에서 상속되지 않은 클래스를 잡는 것은 허용되지 않습니다."


11

안녕하세요, 저는 PyQGIS를 처음 접했고 QGIS 3.0에서 스크립트를 성공적으로 실행하려고 시도했지만 (2.18에서 정상적으로 실행 됨) 항상 같은 오류가 발생합니다.

AttributeError : 모듈 'processing'에 'runalg'속성이 없습니다. 위 예외를 처리하는 동안 다른 예외가 발생했습니다. 역 추적 (최근 호출) : 파일 "C : \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ runcode exec (code, self.locals)의 91 행, code.py ", TypeError의 8 행, 파일 : BaseException에서 상속되지 않은 클래스를 잡는 것은 허용되지 않습니다.

이것은 PYTHONPATH와 관련이 있습니까? 입력 할 때 알고리즘 목록도 볼 수 없습니다 : processing.alglist ()

답변:


10

이것은 원래 질문에 대한 답이 아니라 주석의 후속 질문에 대한 답입니다 ( "알고리즘의 목록과 옵션을 어떻게 볼 수 있습니까?").

QGIS 3에서 처리 알고리즘은 QGIS Python 콘솔 (Python 3)에서 https://gis.stackexchange.com/a/274902/22646https://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.