obdela.runalg () кидає "TypeError: ловування класів, які не успадковують BaseException, не дозволено"


11

Привіт всім Я в чомусь новому з PyQGIS, і я намагався без успіху запустити скрипт у QGIS 3.0 (бажано, щоб він працював у 2.18) і завжди отримував ту саму помилку:

AttributeError: модуль 'обробка' не має атрибута 'runalg' Під час обробки вищевказаного винятку стався інший виняток: Traceback (останній останній виклик): Файл "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", рядок 91, у файлі exec runcode (код, self.locals) Файл" ", рядок 8, в TypeError: ловлення класів, які не успадковують з BaseException, не дозволено

Чи має це щось спільне з ПІТОНПАТУ? Я навіть не бачу переліку алгоритмів під час введення: treatment.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()

Щоб перелічити імена (ідентифікатори):

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 і trave.


Тепер документація 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', ...


Це прекрасно працює. Також як я можу побачити список та параметри алгоритмів? Я спробував обработку.alglist () і обработку.list (), але обидва видають схожу помилку.
LE_Geomatica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.