Пакетная обработка в QGIS – запускаем один процесс сразу для нескольких слоев
Время прочтения: 3 минуты
Признаюсь, обычно я из тех людей, кому проще все сделать руками. Люблю полный контроль над происходящим :) Но когда слоев много, и с ними нужно сделать одно и то же, я сдаюсь слое на шестом. А для кого-то и третий одинаковый процесс – повод для автоматизации.
Хорошо, что в QGIS есть такая штука, как batch processing или обработка в пакетном режиме. Это не самая заметная опция, но она многое значит на практике.
В этот раз статья короткая: что это такое, три примера и как не запутаться в названиях полученных слоев. Поехали!
Что такое пакетный процесс в QGIS
Batch processing или пакетная обработка в QGIS – это метод автоматизации, при котором мы выполняем одну операцию для множества слоев одновременно. Задаем параметры любого процесса сразу для нескольких слоев, нажимаем на кнопку запуска один раз и получаем сразу несколько новых слоев на выходе.
Большинство операций в QGIS можно выполнить как пакетный процесс, то есть не с одним набором входных данных, а с несколькими. Это удобно при обработке больших объемов данных, особенно когда мощности компьютера позволяют.
Как запустить пакетную обработку
Щелкните правой кнопкой мыши на название процесса в панели инструментов и выберите пункт "Выполнить как пакетный процесс" в появившемся окне меню.
Другой вариант запустить обработку для множества слоев сразу – найти эту опцию внизу окна почти любого открытого инструмента. В том же окне, где мы обычно запускаем алгоритмы, мы можем выполнить их как пакетный процесс.
Если есть много слоев, и для них нужно выполнить одну и ту же операцию – используйте пакетную обработку.
Если есть много слоев, для которых нужно выполнить целый ряд одинаковых операций – создавайте геомодели ✨ Кстати, модели тоже можно запускать в пакетном режиме.
Пример пакетной обработки
Ситуация: есть несколько разных слоев с дорогами, и мне нужно сделать одну и ту же операцию – буфер вокруг них. Можно соединить слои в один и запустить один раз, но если на выходе нам нужны отдельные слои, придется искать другое решение.
Открываем окно пакетной обработки, как на скрине выше. В нем мы видим те же отдельные поля, что и в обычном инструменте буферизации, поменялось только их расположение. Теперь они расположены в строку, и для каждого слоя нужно добавить свою отдельную строку через значок зеленого плюса. Каждая строка таблицы соответствует одному запуску алгоритма, а в ячейках находятся параметры отдельных запусков.
Если мы поменяем размер буфера в верхней строке, он поменяется только в ней, а в других останется тем же. Чтобы выставить значение параметра сразу для всех строк, сделаем автозаполнение по отдельной строке:
Проставляем все нужные параметры и папку, куда сохранить готовые слои, и запускаем. В остальном алгоритмы в пакетном режиме проходят так же, как и при однократных процессах. Логи после операции покажут, все ли прошло хорошо. Если увидите красный текст в логах, легко отследить, на каком слое проблема.
Мой любимый пример – это быстрое сохранение сразу нескольких временных слоев, которые образовались в процессе работы. Нахожу "Экспорт векторных объектов" в панели инструментов – ПКМ – выполнить как пакетный процесс – указываю векторные слои и куда сохранить результат. Другое интересное применение: обрезка одного большого слоя по множеству отдельных мелких слоев-масок. Возможностей много!
Таким же образом можно запускать даже процессы в плагинах, когда они есть в панели инструментов:
Названия слоев на выходе
Чтобы не запутаться в названиях итоговых слоев, надо заранее прописать путь и понятные имена файлов. К счастью, это тоже можно автоматизировать. Нажав на три точки рядом с полем для пути слоя на выходе, выбираем папку и прописываем начало для названия каждого слоя, у меня это будет "buffer_ :
Дальше окно предложит нам параметры автозаполнения названия. Выбираем "Использовать значения параметра" и "Исходный слой":
Получаем красивые и понятные новые названия:
Важно! Есть известный и частый баг на Windows: пакетная обработка застревает в случайном месте. Чтобы перезапустить процесс, не задавая все параметры заново, начните закрывать QGIS, и в появившемся окошке остановите текущую задачу. QGIS останется открытым, и можно запустить этот же процесс заново. Даже в самой последней версии 3.38 мне приходилось запускать процесс несколько раз таким образом, но в итоге все получалось.
Источник информации и способ погрузиться в тем глубже: Документация QGIS