Я хочу получить доступ к функции разнесения строк в Python вне QGIS из автономного скрипта.
Какой модуль мне нужно загрузить, чтобы использовать его?
Как я могу получить доступ processing
?
from qgis.core import *
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
processing.runalg('qgis:explodelines', layerInput, 'temp.shp')
qgis
pyqgis
qgis-processing
explode
ustroetz
источник
источник
import processing
.Ответы:
ОБНОВЛЕНИЕ 24.04.2018: Смотрите, как это сделать в QGIS v3.x здесь .
Для QGIS v2.x
Наконец-то нашли правильный способ запуска алгоритмов обработки с помощью автономных скриптов PyQGIS.
Используя плагин Processing версии 2.2.0-2, вы можете попробовать следующий скрипт:
Более новые версии обработки могут быть расположены по адресу
/usr/share/qgis/python/plugins
, поэтому вам может понадобитьсяsys.path.append('/usr/share/qgis/python/plugins')
соответственно.Я нашел рабочий пример в сообщении « Ошибка: алгоритм не найден» , который, в свою очередь, основан на обсуждении в списке рассылки Qgis-dev .
источник
'/home/user/.qgis2/python/plugins'
. Вы можете найти местоположение, открыв QGIS и нажавplugins/Manage and install plugins
прокрутку вниз до обработки, и вы увидите расположение установки в описании.cannot-create-a-qpixmap
этой автономной функции, но я вижу, что вы тоже решили эту проблему в этом вопросе gis.stackexchange.com/questions/188074/…layerInput
и изменив строку runalg на:general.runalg(*sys.argv[1:])
не говоря уже о том, что этот скрипт может быть основой для параллельной обработки ГИС в соответствии с этим вопросом: gis.stackexchange.com/questions/119961/…Пока я не найду общий способ сделать это, я расскажу вам обходной путь.
Я использую плагин Processing версии 2.2.0-2 (я предлагаю вам использовать эту версию), который установлен в
/home/germap/.qgis2/python/plugins/
на моем компьютере. Вам нужно знать расположение этой папки, потому что вы импортируете оттуда модуль обработки.Так как вы знаете провайдера (
qgis
) и алгоритм (explodelines
), вы можете/home/germap/.qgis2/python/plugins/processing/algs/qgis/
взять имя сценария разнесенных строк:Explode.py
эта информация позволяет импортировать алгоритм непосредственно в автономный скрипт Python.Итак, откройте консоль Python и скопируйте следующий скрипт (я использую GNU / Linux, поэтому переменные окружения устанавливаются по умолчанию, что позволяет мне легко импортировать библиотеки qgis и PyQt4):
Если вы не получаете сообщений об ошибках, это все. Выходной слой был сохранен в указанном вами выходном пути (
/home/user/data/out.shp
)Примечание. Что касается общего способа (т. Е. Вызова алгоритмов по имени), я обнаружил некоторые проблемы, которые необходимо решить перед публикацией. Как только я заставлю это работать, я отправлю это.
источник