Статьи
ГИС Туториалы

Атлас в QGIS — автоматизируем подготовку однотипных схем

Время прочтения: 5 минут

Введение

Возможно, вы натыкались при создании карт в QGIS на такой инструмент как “Атлас”, но из-за названия или других причин не пытались его использовать, оставив этот инструмент на откуп создателей старых добрых контурных карт для школьной географии. Но на самом деле атлас в QGIS — мощный инструмент автоматизации, который позволит вам делать не просто атласы в их классическом понимании, а множество однотипных изображений с разными участками территорий, например, выносками маленьких контуров земельного участка линейного объекта, что и будет продемонстрировано в статье.

Описание задачи

Попробуем разобраться, как работает атлас, на примере практической задачи. У нас есть земельный участок, состоящий из 63 контуров. Наша задача — сделать условную схему расположения этого участка, которая будет состоять из общей карты участка и отдельных чертежей на каждый из 63 контуров.
Есть 2 варианта решения задачи: зашарашить 64 схемы вручную, потратив кучу времени и сил, либо попробовать автоматизировать процесс с помощью атласа и потратить на это гораздо меньше времени!
Наш слой для практической задачи: полигональная геометрия, 63 объекта, для которых нам надо сделать наши схемы.

Подготовка

Перед тем, как делать наш атлас, нужно подготовить наш слой с участками к тому, что из него сделают 63 страницы атласа с каждым контуром на отдельной странице. Поэтому нам нужна отдельная колонка с уникальными номерами. В моем случае — это поле “Name”. Если у вас такой колонки нет, то можете создать новую и через калькулятор полей пронумеровать свои контуры земельных участков, используя команду @row_number. Учтите, что в таком случае ваши объекты получат свои уникальные номера, но их нумерация может быть никак не связана с пространственным расположением. Если же у вас нет своей нумерации объектов, но создать ее нужно в зависимости от расположения объектов по оси X или Y, то можете воспользоваться кодом ниже
array_find( 
    array_agg(x($geometry), -- список координат объекта по оси X, если нужно по оси Y, то просто поменяйте в строчках кода X на Y
    order_by:=-1*x($geometry)), -- сортировать по убыванию по оси X 
    y($geometry)) -- найти индекс значения в зависимости от координаты X
    +1 -- так как индексация начинается нуля, а пронумеровать значения необходимо с 1, то прибавляем 1.

Оформление атласа в QGIS

Убедившись, что наши объекты пронумерованы, создаем 2 макета в QGIS. Один для нашей общей схемы, а другой для атласа.
В этом уроке я не буду объяснять, как оформлять простой макет, а лишь покажу для примера как он выглядит. Из самого важного, что вам может потребоваться — нумерация листов, которую я сделал просто текстовым блоком, так как это будет первая страница нашего атласа. Номер участка указан для наглядности, и, если честно, я не понимаю, почему эти цифры никак не могут вот уже 20 лет уйти из моей памяти.
Теперь приступим к созданию атласа: заходим на наш специальный макет, сделанный для атласа, и пока не делаем ничего сверхъестественного, добавляем карту, расставляем текстовые блоки. Макет на карте нам пока не важен.
Выставлять сразу нужный масштаб карты пока необязательно. Добавив карту и раскидав текстовые блоки по местам с примерным содержанием (нумерацию мы тоже настроим автоматически), на верхней панели находим вкладку "Атлас", жмем на нее и во всплывшем меню нажимаем на “Настройки атласа”.
Справа внизу появилось меню “Атлас”. Ставим галочку “Создать атлас”. Выбираем в меню “Слой покрытия” наш слой с участками. В “Имя страницы” и “Сортировать по” выбираем колонку, в которой указаны номера контуров. Сортировку выбираем, если мы хотим, чтобы все было по порядку, и нумерация важна.
Теперь займемся автоматизацией текстовых блоков. Выбираем текстовый блок слева вверху (у вас может быть в другом месте) и после фразы “контур №” вставляем следующий код:
 [% @atlas_pagename %]
Это как раз переменная, которая сохраняет в себе имя страницы, которое у нас устанавливается номером контура участка.
Теперь установим нумерацию листов. Не забываем, что у нас уже есть номер один, а нумерация участков начинается с 1, а значит, если мы просто вставим код, как в предыдущем случае, то у нас будет 2 первых страницы, поэтому текстовый блок в свойствах элемента у нас будет выглядеть так:
Лист № [%@atlas_pagename + 1%]
Теперь наши текстовые блоки настроены, и мы вернемся к карте. Нам нужно, чтобы каждый контур был на отдельной картинке. Для этого выбираем нашу карту и идем в свойства элемента, ищем пункт “Настройка масштаба атласа” и выбираем “По размерам объектов с полем”.
Выбираем нужное нам количество процентов, чтобы участок был достаточно хорошо виден, и теперь все готово для нашего атласа.
Выбрав сверху вкладку “Атлас”, открываем предпросмотр атласа и любуемся тем, что получилось. После чего ищем кнопку экспорта атласа в PDF (см. скрин ниже).
Нажимаем на кнопку "Сохранить" и ждем, когда QGIS сохранит наш атлас
Наш атлас готов, отдельно выгружаем в PDF нашу основную страницу и объединяем файлы в один общий PDF. Сделать это можно онлайн, например, через Smart PDF или иные программы, которые позволяют онлайн объединять PDF.
Материал подготовил Александр Зуев