Создание тепловых карт (QGIS3)

Тепловые карты - один из лучших способов визуализации плотных точечных данных. Тепловая карта (основанная на интерполяции) полезна при определении плотности расположения объектов. Чаще всего тепловые карты используются для отображения сведений о преступности, ДТП, плотности застройки и т. д.. В QGIS имеется генератор (renderer) тепловых карт и алгоритм обработки Heatmap (Kernel Density Estimation) , который позволяет создавать растровые изображения на базе точечного слоя.

Обзор задания

Мы будем работать с датасетом, содержащим места преступлений в Суррее (Великобритания): создадим тепловую карту. для определения районов с наибольшей плотностью преступлений.

Также Вы научитесь

  • Использовать виртуальные поля и условные выражения.

Получение данных

Ресурс data.police.uk предоставляет сведения об уличных преступлениях, их исходе и позволяет загружать данные в формате CSV. Загрузите информацию по Surrey Police и распакуйте архив для получения данных в формате CSV.

Вы можете напрямую скачать копию набора данных, пройдя по ссылке ниже:

2019-02-surrey-street.csv

Источник данных [POLICEUK]

Методика

  1. Для начала загрузим слой карты-подложки OpenStreetMap, а после импортируем CSV. Во вкладке Browser найдите раздел XYZ Tiles.

../../_images/170.png
  1. Разверните его, чтобы найти слой тайлов OpenStreetMap. Перетащите этот слой в полотно карты. Далее загрузим файл CSV. Нажмите на кнопку Open Data Source Manager.

../../_images/238.png
  1. Перейдите во вкладку Delimited Text. Мы импортируем данные о преступлениях, которые хранятся в формате CSV. Рядом с File name щелкните по и найдите загруженный файл 2019-02-surrey-street.csv. Поля X field и Y field в разделе Geometry Definition теперь содержат данные из столбцов Longitude и Latitude. Параметр Geometry CRS следует оставить по умолчанию:EPSG:4326 - WGS 84. Панель Sample data содержит примеры данных, чтобы Вы удостоверились, что они считались корректно. Нажмите click Add и Close.

../../_images/326.png
  1. В панели QGIS Layers теперь появятся 2 слоя: OpenStreetMap и 2019-02-surrey-street. Щёлкните правой кнопкой мыши по слою 2019-02-surrey-street и выберите Zoom to Layer.

../../_images/412.png
  1. Теперь поверх слоя OpenStreetMap на карте отображается точечный слой с местами преступлений. Измените увеличение и охват, чтобы внимательно изучить данные. Точки расположены так плотно, что довольно трудно понять, где плотность преступлений выше. Именно для этого нам нужна тепловая карта. Выберите слой 2019-02-surrey-street и нажмите Open the Layer Styling panel.

../../_images/511.png
  1. В стиле отрисовки слоя выберите Heatmap. Панель Layer Styling panel - интерактивная, так что изменения сразу отобразятся в окне карты. Теперь слой будет по-умолчанию отображаться в градациях серого.

../../_images/611.png
  1. Обычно для тепловых карт используют оранжево-красную или бело-красную палитры: чем выше плотность точек, тем больше тепла. Щелкните по выпадающему меню Color ramp и выберите цветовой ряд Reds.

../../_images/711.png
  1. Теперь нужно указать Radius. Этот параметр задает зону влияния каждой точки. Значение этого параметра будет зависеть от типа исходных данных. В нашем случае предположим, что каждое преступление влияет на зону радиусом 5 км вокруг себя. Заметим (см. правый нижний угол области просмотра), что система координат проекта EPSG: 3857. Единицами измерения в этой системе координат являются метры, поэтому радиус зададим 5000 метров. Еще один, скрытый параметр - это Kernel shape. Это функция, определяющая влияние каждой точки за пределом выбранного радиуса. Рендерер тепловой карты использует функцию``Quartic``. Можно также указать другие типы функций для генерации тепловой карты: Triangular, Uniform, Triweight или Epanechnikov. Подробнее см. этот пост.

../../_images/811.png
  1. Визуализация в стиле тепловой карты готова. Мы также можем отрегулировать прозрачность отрисовки Opacity в разделе Layer Rendering . Установите прозрачность на 60 %, чтобы под тепловой картой была видна подложка.

../../_images/911.png
  1. В большом количестве случаев плотности точек для анализа будет достаточно. Но порой важна каждая точка сама по себе. Например, насильственные преступления должны при анализе иметь больший вес, чем кражи. Одновременно, к одной и той же точке может относиться несколько преступлений, и это тоже надо учитывать. Для учета подобных факторов можно создать отдельное поле с весом для каждой точки. Добавим столбец с весами, чтобы подчеркнуть разное влияние точек на общую картину. Щёлкните правой кнопкой мыши``2019-02-surrey-street`` и выберите Open Attribute Table.

../../_images/1015.png
  1. В исходных данных есть поле Crime type. Используем его для того, чтобы разбить преступления на категории и присвоить больший вес насильственным преступлениям.

../../_images/1118.png
  1. Щелкните Open field calculator.

../../_images/1216.png
  1. Теперь введем формулу, задающую вес преступления в зависимости от Crime type. В QGIS есть удобный способ добавлять поля, полученные в результате вычислений через Virtual Fields. Виртуальное поле сохраняется в проекте QGIS и не вносит изменений в исходные данные. Также оно считается динамически и с ним можно работать как с любым атрибутом. Укажите weight в качестве Output field name и задайте значение Whole number (integer) в Output field type. В редакторе Expression editor введите следующее выражение. Мы используем УСЛОВИЕ для определения зависимости значения веса от определенных условий. Нажмите Click OK.

CASE
WHEN "Crime type" LIKE 'Violence%' THEN 10
WHEN "Crime type" LIKE 'Criminal%' THEN 5
ELSE 1
END
../../_images/1314.png
  1. Каждому объекту будет присвоен новый атрибут, соответствующий его весу.

../../_images/1413.png
  1. Вернитесь в панель Layer Styling, щелкните по выпадающему меню Weight points by и выберите только что созданное поле weight.

../../_images/1512.png
  1. Теперь стиль отображения тепловой карты изменился в соответствии с весом точки. Закройте панель Layer Styling.

../../_images/1611.png
  1. Если Вам требуется сохранить тепловую карту как постоянный растровый слой или поменять оформление карты (например, алгоритм отрисовки или радиус), можно воспользоваться инструментом Heatmap (Kernel Density Estimation) в Панели Инструментов (Processing Toolbox). Сейчас мы опробуем его. Перейдите к разделу: Processing –> Toolbox.

../../_images/1712.png
  1. Перед созданием тепловой карты, нужно перепроецировать данные в плоскую систему координат. Поскольку в вычислениях участвуют расстояния, не вполне корректно использовать географическую систему координат (с широтой и долготой). В поиске найдите алгоритм Vector general ‣ Reproject layer.

../../_images/1810.png
  1. Нажмите Select CRS в диалоговом окне Reproject layer для выбора Target CRS. Отыщите EPSG:27700 OSGB 1936 / British National Grid. Это система координат хорошо подходит для Великобритании. Нажмите Run.

../../_images/199.png
  1. В панели Layers появится новый слой Reprojected. Чтобы скрыть старый слой 2019-02-surrey-street, снимите галочку напротив него.

../../_images/209.png
  1. Теперь найдите алгоритм Interpolation ‣ Heatmap (Kernel Density Estimation).

../../_images/2114.png
  1. В диалоговом окне Heatmap (Kernel Density Estimation) укажем те же параметры, что и раньше. В поле Radius укажите 5000 метров, а в поле Weight from field - weight. Также задайте Pixel size X и Pixel size Y равными 50 метрам. Оставьте значение Kernel shape по умолчанию (Quartic). Нажмите Run.

../../_images/2211.png

Примечание

Параметр Radius from field позволяет динамически задавать радиус поиска для каждой точки. Этот параметр можно использовать вместе с Weight from field для контроля за распространением влияния каждой точки.

  1. Когда обработка завершится, в проект будет загружен новый растровый слой OUTPUT. Стиль оформления по умолчанию у него не очень презентабельный: Singleband gray. Нажмите Open the Layer Styling panel для изменения стиля слоя.

../../_images/239.png
  1. Поменяйте цветовой ряд на Singleband Pseudocolor и выберите палитру Reds. Теперь слой похож на тепловую карту, которую мы создавали в начале упражнения.

../../_images/249.png

Примечание

Заметим, что у слоя OUTPUT` в панели Layers есть легенда, которой нет у старого слоя 2019-02-surrey-street. Довольно часто специалисты сталкиваются отсутствием легенды у тепловых карт. Она может потребоваться, например, при выводе на печать в Print Layout. Эта проблема решается созданием аналогичной растровой тепловой карты.


If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)