⏱ Время прочтения: 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. Мы уже рассказывали про геокодирование с этим плагином, но у него еще много функций.
Здесь тоже все просто — плагин создает шейп-файл с сеткой. В меню "Geometry Type" выбираем шестиугольники и задаем их размер. Прописываем название и папку для нового слоя с сеткой, после установки параметров нажимаем "ОК".
Шаг 2. Считаем количество точек
Так же, как и в примере выше, открываем инструмент подсчета точек и создаем слой сетки, только уже будем считать количество отдельных типов точек. Для этого выбираем поле классификации:
Шаг 3. Визуализируем сеточную карту
После нажатия "Выполнить" мы получили карту с шестиугольниками, которая показывает нам не количество точек, а количество отдельных категорий, которые попали в ячейку, от 1 до 5:
Вот и все! В этой статье мы рассмотрели базовые примеры сеточных карт, а если у вас более сложный запрос того, что отобразить в ячейках, многое можно сделать через калькулятор полей. Главное — понять, как присвоить полигонам-ячейкам нужное значение.
Разбиение на отдельные ячейки упрощает данные и скрывает часть информации. Если мы покажем все точки сразу, карта будет точнее, но сетка помогает посмотреть на точки стороны, показать дополнительные явления (как то же биоразнообразие) и помочь в анализе. Благодаря сеткам карты становятся более понятными и визуально привлекательными.
Почему скрытие информации бывает полезно. В обобщении сеточных карт есть и свои плюсы. Так как сетка скрывает данные о локации, это хороший способ скрыть точное местоположение объекта, например, если нужно показать расположение уязвимых видов, не открывая их координаты.
Интересна тема тесселяции и ячеек? Посмотрите также на текст "Новый вариант разбить карту на ячейки. Но причем здесь Эйнштейн?" — он про математические открытия и про то, что ячейки на картах могут быть самой необычной формы :)
Источники:
- Using a binning technique for point-based multiscale web maps – Kenneth Field – June 08, 2012
- Using QGIS to Create a Hexbin Map – Caitlin Dempsey — February 21, 2017 Updated:March 3, 2024
- Binning Spatial Data For Better Graphical Representation on Maps – Riya Ghosh – Jan 10, 2021
Материал подготовила Юлия Федорова