Тепловые карты (heatmap) в CoGIS
Построение тепловых карт ("светлячков") на лету по векторным данным для визуального анализа данных.
Тепловая карта (heatmap) является инструментом визуального пространственного анализа результатом которого является растровая поверхность, cтроящаяся на лету.
Все расчеты и построения поверхности выполняются ГИС-сервером CoGIS, а не в браузере пользователя. Это, во-первых, позволяет с хорошей производительностью обрабатывать большие наборы данных и с комфортным для пользователя временем получать результат анализа, а, во-вторых, данная функциональность сразу доступна и в мобильных приложениях CoGIS Mobile и в любых других веб-приложениях, которые используют REST API ГИС-сервера.
Основой для вычислений и построений поверхностей пространственного анализа является точечный класс объектов или представление полигональных классов в виде их центроидов.
Что такое тепловая карта?
Тепловая карта (heatmap), она же карта интенсивности, используется в качестве визуального анализа для выявления областей с наибольшим числом «горячих» точек. Поскольку карта интенсивности отображает распределение точек, она лучше всего подходит для большого количества точек, когда их символы перекрываются. При этом результат зависит не только от плотности точек, но и их характеристик.
Визуально карты интенсивности отображают относительную плотность точек как динамическое растровое изображение, использующее цветовую схему для представления результата.
Каждый пиксель в выходном растре имеет значение, которое обозначает относительную плотность. Плотность основана на количестве объектов, близко расположенных друг к другу, и на выражении, построенном на атрибутах объекта, которое накладывает дополнительные веса при раскраске растра. Например, значениям карты интенсивности точечных объектов, представляющих населенные пункты, можно присвоить вес, соответствующий численности населения для того, чтобы населённые пункты с большей численностью проживания вносили больший вклад в вычисление плотности.
Немного об алгоритмах вычислений
Как же в CoGIS строятся поверхности и рассчитываются значения тепловой карты? Мы не будем описывать всё подробно, отметим только общие принципы построения растра:
- поиск объектов по заданной области (экстенту) с учетом фильтров
- передача координат точечных объектов и значений полей в алгоритм расчета для вычислений числового значения для каждого пикселя
- преобразование числового значения для каждого пикселя в цвет согласно цветовой шкале, заданной в картографическом проекте
Результатом алгоритмического расчета является числовое значение в каждом пикселе.
В основе вычислений лежит весовая функция (ядро), используемая при оценке распределений и параметров (ядерная оценка плотности, ядерная регрессия).
Алгоритм расчета цвета для каждого пикселя формируемого изображения карты:
- каждому объекту задаётся size expression, т. е. ширина влияния (радиус) и weight expression, т. е. вес как максимальное значение в точке объекта
- size expression задаётся в миллиметрах, однако через макрос @map_scale можно использовать вариант зависимости от масштаба (при приближении картинка растягивается, т. е. размер кружков в метрах на земле, а не в пикселях на любом масштабе)
- weight expression - это коэффициент для объекта (без него вес каждого объекта считается за 1, пока не проведена нормализация)
- вокруг каждой точки на пиксельной основе строится функция распределения согласно заданной функции ядра, что дает числовое распределение в заданном радиусе со значениями от 0 до указанного веса
- значения суммируются для каждого пикселя (при наложении влияния нескольких объектов)
- дальше значения нормализуются (линейно или логарифмически) для преобразования значений от минимума (не обязательно 0!) до максимума в диапазоне от 0 до 1, соответственно
Для расчетов плотности используются следующие весовые функции, которые можно определить в качестве параметра при настройке свойств слоя:
- Uniform (по умолчанию) - равномерное
- Triangular - треугольное
- Epanechnikov - параболическое
- Quartic - биквадратное
- Triweight - триквадратное
- Tricube - трикубическое
- Cosine - косинусоидальное
Одним из важных моментов в построении тепловой карты является нормализация значений относительно выборки текущих обрабатываемых данных, на выбор которых влияют пользовательские фильтры, текущий экстент карты или вносимые изменения в данные.
Пересчет относительной плотности при изменении экстента карты со сдвигом вправо
На рисунке выше видно, что при сдвиге экстента карты вправо произошел пересчет растровой поверхности на лету за счет нормализации значений, и клиенту ГИС-сервером уже выдана новая картинка. Это позволяет оценивать и анализировать данные относительно текущего состояния карты.
За настройку нормализации расчета весов отвечает свой параметр, который может принимать следующие значения:
- Linear (по умолчанию) - рассчитываемое значение нормализуется линейно (равномерно)
- Logarithm - рассчитываемое значение нормализуется по логарифму, средние значения приближены к максимальным
Еще один параметр для вычисления значений тепловой карты – это радиус поиска соседей. Для определения радиуса поиска соседей относительно основной точки (ядра) в ГИС-сервер можно передавать SQL-выражение, а не простое значение этого радиуса.
Отображение на интерактивной карте и настройки
Все настройки слоя для картографического сервиса выполняются в проекте QGIS, вместе с заданием символики и других свойств слоя.
Выбор весовой функции задаётся дополнительным параметром в настройках слоя проекта QGIS.
CoGIS не использует для вычислений или отрисовки библиотеки QGIS. QGIS используется только в качестве интерфейса определения параметров для картографического сервиса ГИС-сервера CoGIS, а сам проект.qgs - как контейнер для хранения этих параметров.
Согласно настройкам в проекте qgs-файла ГИС-сервер в реальном времени строит поверхности, упаковывает отрисованную картинку в растровый формат и передаёт клиенту в картографическое приложение для отображения на карте.
Построение поверхностей тепловых карт на лету позволяет анализировать данные, используя такие инструменты карты как:
- атрибутивные и пространственные фильтры
- смена масштабов и экстентов карты
- бегунок для работы с временнЫми данными
- инструменты редактирования для создания/редактирования/удаления данных
Ознакомиться с функционалом построения Тепловых карт можно в картографических приложениях на нашем демо-портале: