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

Простая сеточная карта в QGIS

Время прочтения: 5 минут
Сложность: подойдет для начинающих, но важно иметь представление о работе со слоями в QGIS
Визуализация пространственных данных большого объема — непростая задача. Если показать все данные сразу, читатель может потеряться, или еще хуже: одни символы на карте могут закрывать другие, просто потому что их много. Особенно от этого страдают точечные данные. Пример такого есть в посте с карточками в телеграм-канале:
Скриншот телеграм-поста с разными вариантами показать плотность точек на карте
Есть разные варианты решить эту проблему, и один из них — сеточная карта. Это достаточно простой вариант, который можно сделать в любой ГИС в несколько шагов. Ниже рассмотрим их подробнее на примере создания двух разных карт в QGIS.
А если вы хотите структурно подойти к теме и получить полное представление о ГИС с нуля на примере QGIS, вот для этого хорошие курсы: Введение в ГИС. Повышение квалификации и Введение в QGIS. Курсы может оплатить ваша компания — для этого обратитесь через отдельную форму на странице курса.

Зачем делать сеточные карты

Сеточные карты — это картографический прием, позволяющий показать плотность большого количества точечных объектов, представив их ячейками сетки. Чтобы создать такую карту, мы преобразуем данные в регулярную сетку многоугольников, для каждого из которых есть информация о том, сколько точек в него попали. Затем мы показываем цветом количество точек в ячейках. Это решает проблему перекрытия отдельных символов и помогает выделить важные закономерности.
При слове "сетка" у многих в голове возникают прямоугольники, и это действительно распространенный вид сеточных карт. Но можно использовать фигуры разных форм и размеров, и второй часто используемый вариант — шестиугольная сетка. Почему часто используют именно прямоугольники и шестиугольники? Потому что с этими формами легко повторять одну и ту же форму до бесконечности, покрывая области без наложений или пробелов.
Сетка, где каждая ячейка представляет собой определенную географическую область, помогает показать точечные данные в удобном виде
Пример из жизни. Больше всего мне пришлось взаимодействовать с сеточными картами, когда я работала в сфере экологии, а именно при визуализации данных об отдельных видах растений. Когда мы изучаем распространение живых организмов, часто имеем дело с большим количеством точек на большой территории. Сеточные карты в этом случае помогают показать, где вид встречается чаще.

Общий алгоритм создания сеточной карты в ГИС

Рабочий процесс в QGIS очень прост:
1) Создать сетку.
2) Посчитать количество точек в полигонах сетки.
3) Визуализировать!

Создаем сеточную карту пошагово – квадратные ячейки

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

Шаг 0. Загружаем слой точек

Здесь я взяла слой с POI из текста о данных из Overture Maps Foundation, потому что он был под рукой (у нас здесь безотходное производство ГИС-слоев). И это хороший пример большого количества точек, которые накладываются друг на друга. Сеточная карта здесь покажет плотность точек интереса на единицу площади, и мы нагляднее увидим разницу между районами города.
Много точек! Было бы здорово отобразить их в ячейках…
Рекомендую при работе обращать внимание на системы координат слоев. Их различие часто не приводит к проблемам, и QGIS вас поймет и так, но если возникают сложности, то проблему в первую очередь стоит искать в системах координат.

Шаг 1. Создаем сетку

Для этой цели можно использовать или встроенный инструмент QGIS, или плагин MMQGIS. Пока что воспользуемся инструментом QGIS, а вариант с плагином рассмотрим ниже.
В инструментах работы с векторными данными находим "Создать сетку" и в поле "Тип сетки" зададим прямоугольные ячейки.
Охват сетки можно взять с холста, нарисовать мышкой или получить из существующего слоя. Если нужен очень точный охват, чтобы ячейки сетки совпадали еще и с другими слоями, рекомендую заранее подготовить слой охвата на свою территорию.
В этом же окне выбираем подходящий размер ячеек. Он будет зависеть от масштаба, в котором вы работаете, количества точек и производительности компьютера. Небольшой район города? Подойдет масштаб в сотни метров. Крупный город? Возможно, подойдет километровая сетка. Небольшая страна? Десятки километров.
Задаем параметры выходного слоя и получаем сетку:
Полупрозрачная сетка поверх точек

Шаг 2. Подсчет точек в ячейке сетки

Теперь посчитаем количество точек, которые попадают в каждую ячейку. Для этого перейдем в верхнем меню в "Вектор" — "Анализ" — "Подсчет точек в полигоне". Так как перевод в разных версиях может быть разным, всегда можно положиться на название на английском "Count Points in Polygon" и найти его в общей панели инструментов:
Этот инструмент подсчитает количество точек для каждой ячейки в сетке
Выбираем входной слой полигонов и входной слой точек, прописываем параметры выходного слоя и выполняем. Можно оставить название нового поля по умолчанию (NUMPOINTS) или ввести свое.

Шаг 3. Визуализация

Итоговый файл выглядит так же, как и предыдущий, но теперь в его таблице атрибутов появился новый столбец с количеством точек в каждом полигоне. Остается только открыть свойства слоя и раскрасить новый слой по этому количеству, то есть по полю "NUMPOINTS":
Задаем градации, выбираем палитру градиента и получаем слой, показывающий плотность точек в виде сеточной карты. Чем темнее квадрат, тем выше количество точек.
Мне нравится делать клетки с минимальным значением прозрачными

Более сложная карта: шестиугольная сетка с количеством типов точек

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

Шаг 0. Данные

Чтобы показать это на понятном примере, я скачала файл из базы данных iNaturalist с разными видами рода Rubus: малина, костяника, морошка, княженика и ежевика. Вернее, этот файл у меня тоже остался после работы над курсом, и на нем удобно показать, в какой ячейке встречается один вид, а в какой пять.

Шаг 1. Сетка из шестиугольников

Для разнообразия рассмотрим пример с гексагональной сеткой и построим ее через MMQGIS. Встроенный инструмент QGIS тоже умеет делать шестиугольники, но лучше я покажу в этом тексте и работу с MMQGIS, чтобы рассмотреть больше вариантов.
MMQGIS — это плагин с целым набором инструментов для обработки векторных данных, не все из которых встроены в QGIS. Мы уже рассказывали про геокодирование с этим плагином, но у него еще много функций.
После установки плагина заходим сюда через MMQGIS — Create — Create Grid Layer
Здесь тоже все просто — плагин создает шейп-файл с сеткой. В меню "Geometry Type" выбираем шестиугольники и задаем их размер. Прописываем название и папку для нового слоя с сеткой, после установки параметров нажимаем "ОК".

Шаг 2. Считаем количество точек

Так же, как и в примере выше, открываем инструмент подсчета точек и создаем слой сетки, только уже будем считать количество отдельных типов точек. Для этого выбираем поле классификации:
В своем примере в "Поле классификации" я указываю название вида.

Шаг 3. Визуализируем сеточную карту

После нажатия "Выполнить" мы получили карту с шестиугольниками, которая показывает нам не количество точек, а количество отдельных категорий, которые попали в ячейку, от 1 до 5:
Пример с шестиугольными ячейками на базовой карте Carto Light. Ячейки без точек я снова сделала прозрачными, чтобы было понятнее
Вот и все! В этой статье мы рассмотрели базовые примеры сеточных карт, а если у вас более сложный запрос того, что отобразить в ячейках, многое можно сделать через калькулятор полей. Главное — понять, как присвоить полигонам-ячейкам нужное значение.
Разбиение на отдельные ячейки упрощает данные и скрывает часть информации. Если мы покажем все точки сразу, карта будет точнее, но сетка помогает посмотреть на точки стороны, показать дополнительные явления (как то же биоразнообразие) и помочь в анализе. Благодаря сеткам карты становятся более понятными и визуально привлекательными.
Почему скрытие информации бывает полезно. В обобщении сеточных карт есть и свои плюсы. Так как сетка скрывает данные о локации, это хороший способ скрыть точное местоположение объекта, например, если нужно показать расположение уязвимых видов, не открывая их координаты.
Интересна тема тесселяции и ячеек? Посмотрите также на текст "Новый вариант разбить карту на ячейки. Но причем здесь Эйнштейн?" — он про математические открытия и про то, что ячейки на картах могут быть самой необычной формы :)

Источники:

Материал подготовила Юлия Федорова