Если вы публикуете карты в сети или выводите на печать то нередко они бывают однотипны по стилю и содержанию. Например для каждой административной единицы или района проведения работ. Создание таких карт вручную довольно хлопотное и ёмкое ко времени дело, тем более если вы собираетесь регулярно их обновлять. Для решения подобных задач в 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
.
county10
as the
Coverage layer. This will indicate that we want to create 1 map
each for every polygon feature in the county10
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")
Отрегулируйте размер шрифта по своим предпочтениям.
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.
county10
layer and select
Properties.$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
$now
function. This holds the current system time. The function
todate()
will convert this to a date string. Enter the expression as
below:concat('Created on: ', todate($now))
Изображения карт для сравнения.
This work is licensed under a Creative Commons Attribution 4.0 International License