Автоматизация создания карт с помощью Print Composer Atlas¶
Предупреждение
A new version of this tutorial is available at Автоматизация компоновки карты с помощью инструмента создания атласа (QGIS3)
Если вы публикуете карты в сети или выводите на печать то нередко они бывают однотипны по стилю и содержанию. Например для каждой административной единицы или района проведения работ. Создание таких карт вручную довольно хлопотное и ёмкое ко времени дело, тем более если вы собираетесь регулярно их обновлять. Для решения подобных задач в QGIS имеется инструмент «Atlas» который позволяет создавать шаблоны для карт что серьёзно упрощает их публикацию. Особенно когда речь заходит о большом количестве документов для разных местоположений. Если вы ещё не знакомы с основами работы «Компоновщика карт» (Print Composer) - настоятельно рекомендуется сначала ознакомиться с этим разделом: Создание карты tutorial.
Обзор задачи¶
В этом уроке показано, как создать карту водно-болотных угодий для каждого округа в штате Гавайи.
Вы научитесь также¶
Использовать стиль
Инвертированные полигоны
для заливки областей за пределами полигонов.Использовать выражения в стиле
Rule Based
для отображения только текущего объекта в Атласе.Применять выражения для создания динамических подписей в Компоновщике карт.
Получение данных¶
Мы будем использовать GIS Data Layers из State of Hawaii - Office of Planning
Загрузите слой Wetlands из категории Biologic and Ecologic
Загрузите слой Census County Boundaries 2010 из категории Cultural and Demographic.
Для удобства вы можете загрузить оба набора данных напрямую по ссылкам ниже:
Источник данных: [HAWAII]
Методика¶
Запустите QGIS и перейдите к
.

Перейдите к файлу
HI_Wetlands.shp.zip
и нажмите Open.

Выберите слой
HI_Wetlands_Poly
и нажмите OK.

Вы увидите многоугольники, представляющие водно-болотные угодья во всем штате Гавайи. Так как мы хотим получить отдельные карты водно-болотных угодий для каждого округа в штате, нам понадобится слой границ округов. Перейдите к
и найдите файлcounty10.shp.zip
. Нажмите Open.

Перейдите к
.

Оставьте название макета пустым и нажмите OK.

Перейдите к
.

Нарисуйте прямоугольник, удерживая левую кнопку мыши, там, где вы хотели бы вставить карту.

Прокрутите вкладку Item Properties вниз и поставьте галочку в поле Controlled by atlas. Это означает, что охват отображаемой карты будет определяться инструментом
Atlas
.

Switch to the Atlas generation tab. Check the Generate an atlas box. Select the
county10
as the Coverage layer. This will indicate that we want to create 1 map each for every polygon feature in thecounty10
layer. You can also check the Hidden coverage layer so that the features themselves will not appear on the map.

Вы заметите, что изображение карты не изменилось после настройки параметров инструмента Атлас. Перейдите к меню
.

Вы увидите, что карта обновилась, теперь она показывает, как будут выглядеть отдельные карты. Обратите внимание, что номер текущего объекта слоя покрытия показывается в правом нижнем углу.

Вы можете просмотреть, как будет выглядеть карта для каждого из полигонов округов. Перейдите к меню
.

Инструмент Атлас перерисует карту для охвата следующего объекта в слое покрытия.

Давайте добавим подписи к карте. Перейдите к меню
.

На вкладке Item properties нажмите кнопку Insert an expression….

Подпись карты может использовать атрибуты из слоя покрытия. Функция
concat
используется для объединения нескольких текстовых элементов в один. В данном случае мы присоединим значение атрибутаNAME10
слояcounty10
слоя с текстомCounty of
. Добавьте выражение, как показано ниже, и нажмите OK.
concat('County of ', "NAME10")
Отрегулируйте размер шрифта по своим предпочтениям.

Add another label and enter
Wetlands Map
under the Main properties. Since there is no expression here, this text will remain the same on all maps.

Перейдите к меню
и убедитесь, что подписи карты отображаются, как нужно. Вы заметите, что на карте водно-болотных угодий есть полигоны, которые идут через океан, что выглядит некрасиво. Мы можем изменить стиль, чтобы районы за пределами границ округа были скрыты.

Переключитесь на главное окно QGIS. Щелкните правой кнопкой мыши на слое
county10
и выберите Properties.

На вкладке Style выберите визуализацию Inverted polygons. Этот стиль настраивает отображение внешней части полигона - не внутренней. Выберите белый цвет заливки и нажмите OK.

Switch to the Print Composer window. If we want the effect of the inverted polygons to show, we need to uncheck the Hidden coverage layer box under Atlas generation. You will now see that the rendered image is clean and areas outside the coverage polygon is not visible.

There is one problem though. You can see areas of the map that are outside the coverage layer boundary but still visible. This is because Atlas doesn’t automatically hide other features. This can be useful in some cases, but for our purpose, we only want to show wetlands of the county whose map is being generated. To fix this, switch back to the main QGIS window and right-click the
county10
layer and select Properties.

In the Style tab, select Rule-based renderer as the Sub renderer. Double-click the area under Rule.

Click the … button next to Filter.

In the Expression string builder, expand the Atlas group of functions. The
$atlasfeatureid
function will return the currently selected feature. We will construct an expression that will select only the currently selected Atlas feature. Enter the expression as below:
$id = $atlasfeatureid

Back in the Print Composer window, click the Update preview button under Item properties tab to see the changes. Notice that now only the area covering the county boundary is shown.

We will now add another dynamic label to show the current date. Go to Insert an expression button.
and select the area on the map. Click

Expand the Date and Time functions group and you will find the
$now
function. This holds the current system time. The functiontodate()
will convert this to a date string. Enter the expression as below:
concat('Created on: ', todate($now))

Add another label citing the data source. You may also add other map elements such as a north arrow, scalebar etc. as described in Создание карты tutorial.

Once you are satisfied with the map layout, go to
.

Select a directory on your computer and click Choose.

The Atlas tool will now iterate through each feature in the coverage layer and create a separate map image based on the template we created. You can see the images in the directory once the process completes.

Изображения карт для сравнения.





If you want to report any issues with this tutorial, please comment below. (requires GitHub account)