Создание атласов в QGIS

Как уже писал, в Oslandia сдержали обещание и во время 8й встречи разработчиков QGIS модуль Atlas был интегрирован в компоновщик карт QGIS.

Это стало возможным благодаря финансовой поддержке (хотя полную сумму собрать так и не удалось) следующих людей и организаций:

Принцип работы остался прежним: создаём компоновку, указываем слой-покрытие, по объектам которого будут сгенерированы итоговые файлы, и на выходе получаем набор карт. Кроме того, появилась возможность создавать сложные подписи используя всю мощь QgsExpression и атрибутивные данные слоя-покрытия.

Рассмотрим процесс создания атласа подробнее (описание от разработчиков).

Создаём проект

Сначала необходимо подготовить проект: импортировать необходимые слои, настроить оформление и т.д. Для примера я взял Geosample

Слой-покрытие

Это слой будет задавать границы областей, выводимых на печать. Другими словами, для каждого объекта слоя будет создан файл, содержащий часть карты под этим объектом. Хотя поддерживаются все типы геометрий, по очевидным причинам лучше всего использовать полигональные слои.

Слой-покрытие может содержать любое количество полей с произвольными именами.

Свой слой я создал при помощи инструмента «Polygon from layer extent». В качестве исходного слоя выбран слой admin, переключатель «Calculate extent for each feature separately» установлен в «Yes». На выходе получил полигональный файл с 4мя объектами (по числу объектов в исходном слое). К имеющимся полям добавил ещё одно, с названиями административных единиц.

Шаблон атласа

Теперь можно заняться созданием шаблона атласа в компоновщике. Не стоит пугаться слова «шаблон» — это обычная компоновка.

У меня получилась вот такая картинка

Большая карта будет отображать информацию, соответствующую каждому объекту слоя-покрытия, вторая, маленькая, карта является обзорной. На листе также нашлось место для легенды и нескольких подписей: номер страницы, название административной единицы, площадь и периметр ограничивающего прямоугольника а также счетчик объектов атласа.

Несколько слов стоит сказать о подписях. Они теперь могут содержать выражения QgsExpression, а также использовать данные из слоя-покрытия. Кроме того, добавлено несколько специальных функций:

  • $feature и $numfeatures для вывода порядкового номера и общего числа объектов слоя-покрытия соответственно
  • $page и $numpages для вывода номера текущей страниц и общего числа страниц соответственно

Создание атласа

Прежде всего необходимо узнать идентификатор карты, для которой будет создаваться атлас. Для этого достаточно задержать курсор над картой, и дождаться появления всплывающей подсказки с нужной информацией. В моём случае это была «Map 0».

Переключаемся на вкладку «Atlas generation» и начинаем настраивать:

  • в выпадающем списке «Composer map» указываем карту, для которой будет создан атлас
  • в выпадающем списке «Coverage layer» указывается слой-покрытие
  • установкa флажка «Hidden coverage layer» запрещает отрисовку слоя-покрытия
  • поле «Margin around coverage» позволяет управлять шириной зоны перекрытия (полезно при склейке больших карт, распечанных на листах малого формата)
  • флажок «Fixed scale», как следует из названия, устанавливает фиксированный масштаб карты для всех объектов слоя-покрытия. При смене объектов они будут центрироваться в пределах карты. Выбор правильного масштаба в этом случае лежит на пользователе
  • в поле «Output filename expression» задаётся шаблон имени файлов атласа. Поддерживаются все возможности QgsExpression
  • назначения флажка «Single file export when possible» в дополнительных объяснениях не нуждается. Необходимо только отметить, что данная возможность поддерживается пока только при использовании PDF

Вот и все. Осталось указать каталог для сохранения результата.