Более

Используете qgis: lineintersection в консоли QGIS?


использование консоли для qgis: инструмент обработки пересечения линий приведен ниже

processing.runalg ('qgis: lineintersections', input_a, input_b, field_a, field_b, output)

и я загрузил слой полилинии в qgis и выполнил следующие команды в консоли

layer = qgis.utils.iface.activeLayer () provider = layer.dataProvider () columns = provider.fields () id = columns [0] processing.runalg ('qgis: lineintersections', layer, layer, id, id, ' выход' )

Инструмент lineintersection работает правильно, когда я использую его непосредственно в qgis, но я хочу запустить его в консоли, для чего я получаю ошибку, как показано ниже ...


Отслеживание (последний вызов последним): файл "", строка 1, в файле "C: / PROGRA ~ 1 / QGISWI ~ 1 / apps / qgis-ltr /./ python / plugins processing tools general.py", строка 71, в runalg alg = Processing.runAlgorithm (algOrName, None, * args) Файл "C: / PROGRA ~ 1 / QGISWI ~ 1 / apps / qgis-ltr /./ python / plugins processing core Processing.py ", строка 317, в runAlgorithm, если не param.setValue (args [i]): File" C: / PROGRA ~ 1 / QGISWI ~ 1 / apps / qgis-ltr /./ python / plugins processing core parameters. py ", строка 676, в setValue elif len (value)> 0: TypeError: объект типа 'QgsField' не имеет len ()


Я думаю, проблема в передаче значений в функции

Может кто подскажет решение?


Я попробовал этот код:

слой обработки импорта = qgis.utils.iface.activeLayer () path = '/home/zeito/pyqgis_data/my_output.shp' processing.runalg ('qgis: lineintersections', layer, layer, None, None, path)

для этой ситуации:

и это сработало. Вам не нужны идентификаторы (см. Ошибку «QgsField» не имеет len (), где, я думаю, проблема). С другой стороны, я использовал один абсолютный путь и имя выходного файла с соответствующим расширением (* .shp).


Смотреть видео: QGIS Basic #53: Intersection (October 2021).