Статьи

Создание тепловых карт в QGIS. Теория и практика

2025-11-10 14:56
Время прочтения: 4 минуты
Уровень знаний: для начинающих пользователей QGIS, которые имеют небольшой опыт в использовании программы
Вы наверняка сталкивались с тепловыми картами — изображениями, которые выглядят так, как будто на них смотрят через тепловизор. Это мощный и популярный инструмент визуализации точечных данных. Такие карты полезны, когда у вас есть слой или таблица с координатами точек и вы хотите наглядно показать, где их наибольшая концентрация. Такой способ используют для визуализации ДТП, очагов заболеваний, преступности или каких-либо видов человеческой активности.
В данной статье вы узнаете больше об алгоритме построения таких карт, а также о том, как можно строить их в QGIS.

Теория

Тепловые карты (heatmaps) — это способ визуализации точечных данных, причем плотных, чтобы отразить концентрацию определенных событий.
В основе этого лежит математика в виде алгоритма, который называется ядерная оценка плотности (Kernel Density Estimation). Я не буду прикладывать вам формулы, но кратко опишу, как работает алгоритм при построении тепловых карт.
На входе для построения тепловой карты нам нужен точечный слой, на выходе же мы получим растровый слой — то есть непрерывную поверхность (в определенных границах: экран монитора или граничных рамках слоя) из пикселей, для каждого из которых будет рассчитано значение.
Для работы алгоритма важны следующие показатели:
- координаты точек;
- количество точек;
- радиус (в некоторых других ГИС или инструментах может называться шириной полосы или bandwidth);
- форма функции ядра (kernel shape) — имеется в виду математическая функция — формула, а вернее часть формулы);
- веса (опционально).
Про форму функции ядра я расскажу подробнее в практической части статьи.
Алгоритм по построению тепловых карт работает примерно следующим образом: он строит растровый слой так, чтобы все точки из точечного слоя в него попадали. От точек строятся радиусы, размер которых задает пользователь. Для каждого пикселя пространства, используя формулу, рассчитываются значения: чем больше радиусов накрывает пиксель, тем больше его значения (если алгоритм не использует веса). После чего происходит раскрашивание пикселей: чем больше значение, тем темнее или ярче цвет, тут уже как настроите.
Веса влияют на расчет значений, но тут стоит понимать, что вес увеличивает значение в разы. Поэтому не используйте веса со значением ноль. А теперь перейдем к практической части статьи.

Практика

Есть два основных способа строить тепловые карты в QGIS: через стиль слоя и через отдельный встроенный модуль. Рассмотрим оба из них. Для примера я использовал слой точек с кафе Москвы (какой-то ее части), который скачал из OpenStreetMap с помощью плагина QuickOSM (ключ — amenity, значение — cafe). Про то, как можно качать данные из OpenStreetMap можете прочитать в нашей статье.
Чтобы построить тепловую карту через стиль слоя, заходим в свойства слоя (правая клавиша мыши на слой — Свойства слоя) — окно Стиль, вместо простой символики выбираем “Теплокарта”.
В свойствах слоя вы можете выбрать цветовой ряд, а если внизу в разделе “Отрисовка” установите непрозрачность менее 100 %, то сможете сделать так, чтобы тепло ваших точек было видно на карте.
В данном окне для нас самая важная настройка — “Радиус”. Это как раз тот самый радиус на основе которого рассчитываются значения пикселя. Внимательно следите за тем, какие единицы установлены в его значении. Если ваш проект будет в системе координат, у которой основные единицы — градусы (например WGS 84 EPSG 4326), то 10 градусов — это сотни километров и скорее всего вся ваша карта станет одного цвета.
Для такого способа важно понимать, что теплокарта рассчитывается не для всех точек, а для тех, что видно на экране проекта (либо на карте макета, если вы хотите сохранить карту). С одной стороны, это быстро и удобно — когда точек не очень много, можно анализировать ситуацию в разных масштабах и быстро переключаться между весами, если у вас есть разные варианты в разных колонках таблицы атрибутов (см. поле “Взвесить точки по…”).
Но есть и обратная сторона медали этого способа: если у вас будет слишком много точек, то вам будет тяжело делать примерно что угодно в QGIS, любое движение карты может привести к зависанию или даже вылету, и даже установить ползунок в меню “Качество отрисовки” на вариант “Самый быстрый” вас не спасет.
Вот тут как раз поможет второй способ построения тепловой карты в QGIS — используя модуль “Тепловая карта (оценка плотности ядер”. Для этого модуля не надо ничего скачивать, его можно найти в инструментах анализа.
В данном случае у нас настройки отличаются, пройдемся по самым важным из них для нас:
  • радиус, тот самый радиус, про который я упоминал;
  • через поля “Размер пикселя по …” можем установить размер пикселя нашего растра тепловой карты, лучше, чтобы он был меньше размера “Радиуса”, хотя бы в пару раз, лучше в несколько, иначе тепловая карту будет выглядеть набором закрашенных пикселей, а не сглаженной поверхностью;
  • Weight from field – здесь выбираем поле с весами, если у вас оно есть;
  • kernel shape — это как раз функция ядра, часть формулы используемой для расчета.
Что важно понимать о kernel shape. Это часть общей формулы алгоритма ядерной оценки плотности (Kernel Density Estimation), которая грубо говоря учитывает погрешность изменения значения пикселя в зависимости от расстояния до него от других точек. Разные значения kernel shape для нас в первую очередь влияет на то, как долго происходит расчет.
Есть мнение, что если распределение в пространстве определенного события, например, преступления, линейно, то лучше использовать Triangle (треугольную) форму функции ядра, потому что график от самого высокого значения изменяется линейно. То есть то, как распределяется событие в пространстве может быть аргументом для использования определенной kernel shape при построении тепловой карты (Источник изображения - https://en.wikipedia.org/wiki/Kernel_%28statistics%29#/media/File:Kernels.svg)
Самые долгие алгоритмы Kernel shape - Квартическая и Тривесовая. Епанченкова чуть побыстрее, а Треугольная и Прямоугольная - самые быстрые из предложенных.
Установив все интересующие нас значения нажимаем выполнить и получаем нашу тепловую карту.
Пока выглядит страшновато (я, кстати, тут вижу лицо птицы, а вы?), но это можно легко исправить.
Устанавливаем стиль слоя “Одноканальное псевдоцветное” и выбираем понравившийся цветовой ряд. Для нулевого значения цвета ставим максимальную прозрачность (два раза кликните на цвет и установить непрозрачность на 0 %) и в конце можете установить “Режим смешивания” - “Умножение”, чтобы было видно базовую карту. Вы можете сами поиграться с видами режима смешивания или настройкой стиля базовых карт, как и с настройками построения тепловой карты, для получения наилучшего результата.
Связанные статьи:
Материал подготовил Александр Зуев