Статьи
Картография Дизайн Туториалы

Пять способов показать плотность точек на карте

Время прочтения: 7 минут
Слои с большим количеством точек могут быть обманчивы. То, что кажется всего несколькими точками на небольшой площади, на самом деле может быть несколькими тысячами.
Motor vehicle crashes in New York City (2020).
Более 103 000 дорожно-транспортных происшествий в Нью-Йорке. Без агрегирования точек трудно увидеть их относительную плотность, особенно когда множество объектов накладываются друг на друга.
Рассмотрим пять техник визуализации точечных данных с высокой плотностью на примере карт дорожно-транспортных происшествий в Нью-Йорке: (1) прозрачность; (2) тепловая карта; (3) кластеризация; (4) биннинг или сеточное картирование и (5) свечение.
Оригинальный текст написан для демонстрации возможностей ArcGIS Maps SDK, но эти советы подходят для визуализации большого количества точечных данных независимо от инструмента.

(1) Прозрачность

Любой слой с перекрывающимися элементами можно показать эффективнее, если установить у символов высокую прозрачность. Чем выше плотность, тем более высокий порог прозрачности подойдет для объектов (в примере с сотней тысяч точек ДТП лучше всего работает прозрачность от 95% до 99%).

Прозрачность в мелком масштабе

The density of motor vehicle crashes in New York City (2020) visualized with per-feature opacity.
Плотность автомобильных аварий в Нью-Йорке (2020 год), визуализированная с помощью непрозрачности каждого элемента.
Когда точки накладываются друг на друга, прозрачность каждого объекта имеет эффект наложения, то есть области с большей плотностью точек выделяются на карте ярче, чем области с меньшей плотностью, где символы становятся почти прозрачными. Отдельные точки при этом различаются с трудом, зато хорошо видны области с высокой плотностью перекрывающихся точек.

Прозрачность в крупном масштабе

На следующем изображении показано, как это выглядит, если увеличить масштаб.
The density of motor vehicle crashes in Bronx, New York City (2020) visualized with per-feature opacity.
Плотность дорожно-транспортных происшествий в Бронксе, Нью-Йорк, визуализированная с помощью непрозрачности каждого элемента.
Для интерактивных карт в этом случае можно установить визуальную переменную, чтобы при изменении масштаба менялся и размер точек. Без этого точки с фиксированным размером в мелком масштабе начнут накладываться друг на друга, и в результате получится сгусток точек, как на изображении в начале статьи.
Even when opacity is applied to individual symbols, it is difficult to view patterns in the density of points when the size of points doesn't vary by scale.
Когда размер точек не зависит от масштаба, трудно увидеть закономерности в их плотности, даже когда отдельные символы непрозрачны
Когда использовать этот стиль: на картах мелкого масштаба.
Эта техника хорошо работает на картах мелкого масштаба, когда расположение отдельных точек не так важно, как визуализация общей плотности. Чуть хуже она работает на крупномасштабных картах, когда пользователя, например, больше интересует местоположение отдельных аварий: при значении прозрачности 97,5% ему будет сложно увидеть отдельные точки.

(2) Тепловая карта

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

Тепловая карта в мелком масштабе

The density of motor vehicle crashes in New York City (2020) visualized as a heatmap.
Плотность автомобильных аварий в Нью-Йорке (2020 год), визуализированная в виде тепловой карты.

Тепловая карта в крупном масштабе

Тепловую карту эффективно использовать и для крупномасштабных карт, но значения рендера должны быть обновлены, чтобы визуализация более соответствовала масштабу.
The density of motor vehicle crashes in Bronx, New York City (2020) visualized as a heatmap.
Плотность дорожно-транспортных происшествий в Бронксе, Нью-Йорк (2020), визуализированная в виде тепловой карты.
Если не обновить стиль, то интерполированная поверхность распространяется на такие области, как здания и парки, где аварии произойти не могут.
The density renderer calculated for the entire city of New York is inappropriate when viewing at a larger scale, like this one. Parts of the heatmap creep into areas where crashes cannot occur.
Рендер плотности, рассчитанный для всего Нью-Йорка, не подходит для отображения в крупном масштабе. Части тепловой карты проникают в зоны, где аварии не могут произойти.
Например, свойство referenceScale рендера HeatmapRenderer позволяет привязать визуализацию к определенному масштабу. Это делает тепловую карту статичной, поэтому вид плотности остается неизменным при увеличении и уменьшении масштаба.
Когда использовать этот стиль: для визуализации непрерывных данных.
Эта техника хорошо работает в любом масштабе, где точки накладываются друг на друга. В зависимости от данных, может быть более целесообразно визуализировать отдельные точки с помощью отдельных символов-маркеров в более крупных масштабах, когда точки не перекрываются. Сохранение тепловой карты в крупных масштабах целесообразно, когда точки представляют собой отдельные наблюдения для непрерывных данных, таких как загрязнение воздуха.

(3) Кластеризация

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

Кластеры точек в мелком масштабе

The density of motor vehicle crashes in New York City (2020) visualized with clustering.
Плотность автомобильных аварий в Нью-Йорке, визуализированная с помощью кластеризации.

Кластеры точек в крупном масштабе

The density of motor vehicle crashes in Bronx, New York City (2020) visualized with clustering.
Плотность автомобильных аварий в Бронксе, визуализированная с помощью кластеризации.
Когда использовать этот стиль: для уменьшения визуального беспорядка и просмотра разномасштабных деталей.
Эта техника хорошо работает на всех масштабах. Она лучше всего подходит для визуализации отдельных точек, в отличие от методов с интерполяцией (таких как тепловая карта). При визуализации данных, связанных с линейной сетью, например, автомобильных аварий на дорогах, использование меньшего радиуса кластера приведет к понятному отображению кластеров на дорогах и перекрестках.
Кластеризация также позволяет отображать дополнительную информацию в дополнение к плотности, например, преобладающую категорию точек в кластере, свойства точек внутри кластера (в виде круговой диаграммы) или другие данные о точках.

(4) Биннинг

Биннинг (или сеточное картирование) объединяет данные в заранее определенные географические ячейки, эффективно представляя точечные данные в виде слоя полигонов с сеткой. Для визуализации бинов используется цветовая шкала, которая может отображать количество точек в ячейке или их свойства. Для группировки ячеек также можно использовать любой стиль, подходящий для полигональных слоев. JavaScript Maps API использует для создания бинов систему геокодирования geohash.
Выбор подходящего размера ячеек сетки зависит от масштаба просмотра и необходимого разрешения данных.

Биннинг в мелком масштабе

Ниже показаны автомобильные аварии, отсортированные по фиксированному уровню (fixedBinLevel), равному 6.
The density of motor vehicle crashes in New York City (2020) visualized with binning.
Плотность дорожно-транспортных происшествий в Нью-Йорке (2020 год), изображенная с помощью биннинга.

Биннинг в крупном масштабе

Как и при выборе соответствующего радиуса для кластеризации или тепловой карты, размер каждого бина должен быть определен с учетом предполагаемого масштаба. На следующем изображении показаны автомобильные аварии, разбитые на бины при фиксированном уровне бина 7. Такой размер более уместен при увеличении масштаба, поскольку он показывает более точное распределение плотности аварий вдоль дорог.
The density of motor vehicle crashes in Bronx, New York City (2020) visualized with binning.
Плотность дорожно-транспортных происшествий в Нью-Йорке, визуализированная с помощью биннинга.
Когда использовать этот стиль: для визуализации плотности на основе географической сетки.
В отличие от кластеризации, которая агрегирует данные в пространстве экрана, биннинг всегда визуализирует плотность на основе географических границ, что делает визуализацию одинаковой в различных масштабах. Поскольку кластеры по умолчанию не показывают географическое положение отдельных объектов, неясно, где именно находятся точки. Ячейки дают немного больше точности.
Биннинг также подойдет, когда требуется отобразить на карте дополнительную информацию, например, указать преобладающую категорию точек, добавить круговые диаграммы или другую информацию.

(5) Свечение

Свечение (bloom) – это визуальный эффект, который делает символы ярче в зависимости от их плотности. Свечение имеет добавочный эффект, поэтому области, где перекрывается больше объектов, будут светиться ярче и интенсивнее. Особенно хорошо это заметно на темном фоне.

Свечение в крупном масштабе

На крупномасштабных картах области с более высокой плотностью мест дорожно-транспортных происшествий выглядят ярче. Однако, поскольку различия в плотности малозаметны, вариации на этой карте не столь очевидны, как при других методах, например, при кластеризации.
The density of motor vehicle crashes in New York City (2020) visualized with bloom.
Плотность автомобильных аварий в Нью-Йорке (2020 год), визуализированная с помощью свечения (bloom).

Свечение в мелком масштабе

Несмотря на то, что свечение визуально привлекает внимание, бывает очень трудно заставить его “работать” в нескольких масштабах. Например, при уменьшении масштаба трудно увидеть перекрестки с более высокой плотностью аварий.
The density of motor vehicle crashes in Bronx, New York City (2020) visualized with bloom.
Плотность дорожно-транспортных происшествий, визуализированная с помощью свечения. Эта карта хороша для демонстрации мест, где происходят ДТП, но неудачна, если вы пытаетесь передать плотность. Перекрывающиеся точки становятся слишком скрытыми.
Когда использовать этот стиль: для ярких различий в плотности при ограниченном диапазоне масштабов.
Свечение воспринимается легче, когда есть яркие различия в плотности. Если плотность более детализирована, различия в яркости трудно интерпретировать.
Кстати, в статье про режимы смешивания мы подробно рассказали, как сделать неоновое свечение точек в QGIS.

Заключение

При выборе способа визуализации плотности точек всегда задавайте себе вопросы:
  • В каком масштабе или диапазоне масштабов целесообразно показать плотность?
  • В каком масштабе или диапазоне визуализация плотности важна для конечного пользователя?
  • Есть ли масштаб, при котором просмотр отдельных мест становится важным?
  • Точки показывают непрерывное или дискретное явление? Если непрерывное, то диапазон значений мал или велик?
  • Нужно ли наносить на карту другую атрибутивную информацию кроме плотности?
Выбор метода зависит от личных предпочтений картографа. У каждой техники найдутся преимущества и ограничения, поэтому следует обдуманно выбирать, чем можно пренебречь, а что оставить на карте.
Оригинал: Five ways to visualize point density using the same dataset – Kristian Ekenes – ArcGIS Blog – 03/01/2023.
Материал подготовила Ксения Михайлова