12 | Документация

Кластеризация

На уровне картографического проекта можно настроить кластеризацию объектов (группировку объектов и отображение групп в центроиде группы), которая будет поддерживаться при публикации проекта в CoGIS Server и добавлении такого сервиса к карте в CoGIS Portal .

Кластерный символ

Раскраска кластеру задается по всем правилам настройки условного знака. Маркер может быть Простой , Символьный , Растровый , SVG и составной, см. Рисунок 116 .
Рисунок 116 - Выбор маркера для кластера
Размер кластерного символа настраивается через Data defined override expression, см. Рисунок 117 .
Рисунок 117 - Настройка размера кластерного символа (1)
Для этого в контекстном меню Data defined override expression выбирается пункт Assistant, см. Рисунок 118 .
Рисунок 118 - Настройка размера кластерного символа (2)
В окне Размер символа настраивается размер.
Источник значений для расчета размера - переменная @cluster_size , которая содержит количество объектов, попавших в кластер.
Поля Values from (от) и To (до) обозначают количество объектов, которые могут попасть в кластер, см. Рисунок 119 .
Рисунок 119 - Настройка размера кластерного символа (3)
Таким образом через инструмент Assistant создается формула для расчета размера кластерного символа следующего вида:
coalesce(scale_linear(@cluster_size, 1, 4000, 4, 16), 0)
Формулу размера можно отредактировать или задать минуя Assistant , выбрав в контекстном меню Data defined override expression пункт Изменить, см. Рисунок 120 .
Рисунок 120 - Настройка размера кластерного символа (4)

Подпись кластера

Подпись количества объектов, попавших в кластер, задается в раскраске кластерного символа составным маркером, слоем Символьный маркер , см. Рисунок 121 .
Примечание: При выборе установки символики Point cluster Символьный маркер есть по умолчанию.
Рисунок 121 - Настройка подписи количества объектов в кластере
Размер символьного маркера задается по умолчанию аналогично размеру всего символа для кластера: такой же формулой, но с добавлением коэффициента:
0.5 *(coalesce(scale_linear(@cluster_size, 1, 4000, 4, 16), 0))
Дополнительная настройка подписи использует следующие параметры, см. Таблица 2 .
Таблица 2 - Параметры для дополнительной настройки подписи
Переменная
Описание
Значения
elitegis_clustering_need_to_scale_labels
масштабирование текста вместе с символом
true/false
elitegis_clustering_show_small_label
отображение мелкого текста
true/false
elitegis_clustering_need_to_round_cluster_size
Округление в подписи количества объектов в кластере (не более 4 символов)
true/false

Отрисовка исходных объектов (Renderer Settings)

Исходные объекты могут быть отрисованы следующими типами символик: Нет символов , Обычный знак , Уникальные значения , Градуированный знак и Правила .
В настройке Renderer Settings устанавливается раскраска для каждого из типов символик соответственно, как и для обычных не кластерных объектов (см. подробнее п. 5.2.10 ), см. Рисунок 122 .
Рисунок 122 - Отрисовка исходных объектов кластера

Расстояние

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

Видимость в пределах масштаба

Видимость в пределах масштаба в настройках QGIS влияет на видимость кластера.
Для настройки видимости исходных объектов используются дополнительные параметры,
без указания которых, исходные объекты отображаться на карте не будут. см. Таблица 3 .
Таблица 3 - Параметры для настройки видимости исходных объектов кластера
Переменная
Описание
elitegis_feature_min_scale
Значение минимального масштаба
elitegis_feature_max_scale
Значение максимального масштаба

Тип кластеризации

CoGIS Server поддерживает несколько алгоритмов для объединения объектов в кластер. Для выбора алгоритма используется дополнительный параметр: elitegis_clustering_clusterizer_type
Параметр может принимать следующие возможные значения: HexagonedSimple (по умолчанию), HexagonedDelaunay , Simple , Delaunay .

Символика ребра (Edge)

Для настройки символики ребра используется дополнительный слой (временный слой в QGIS), см. Рисунок 123 .
Рисунок 123 - Новый временный слой для ребер кластера
Тип геометрии временного слоя должен быть LineString , см. Рисунок 124 .
Рисунок 124 - Тип геометрии для временного слоя с ребрами кластера
Расположить созданный временный слой необходимо непосредственно ниже основного кластерного слоя, см. Рисунок 125 .
Рисунок 125 - Расположение слоя ребер кластера в дереве слоев проекта
В свойствах слоя во вкладке Переменные необходимо указать параметр elitegis_clustering_layer_type со значением edge :
Также необходимо настроить стиль (раскраску) ребра.
Возможно задать видимость в пределах масштаба для слоя. Если видимость в пределах масштаба не задана, это свойство берется от основного кластерного слоя.

Круговые диаграммы для кластера (Chart-диаграммы)

С помощью дополнительных слоев и параметров можно задать отображение кластера объектов в виде круговой диаграммы, динамически изменяющейся в зависимости от типов объектов, входящих в кластер. Пример такого отображения представлен на рисунке ниже, см. Рисунок 126 .
Рисунок 126 - Кластера рекламных конструкций на территории г. Новосибирска: каждый кластер представляет собой круговую диаграмму по распределению типов конструкций в кластере
Для настройки круговых диаграмм используются дополнительные постоянные слои.
Для создания такого слоя (настроечного слоя) можно дублировать основной кластерный слой, см. Рисунок 127 .
Рисунок 127 - Дублирование основного кластерного слоя для создания круговой диаграммы
При таком способе создания в настроечном слое сразу сохраняется необходимый источник данных и формула размера кластера.
Так же возможно добавить такой слой заново, воссоздав все настройки вручную.
Расположить настроечный слой необходимо под основным кластерным слоем.
В случае наличия слоя для ребер, расположение должно быть следующее, см. Рисунок 128 .
Рисунок 128 - Расположение настроечного слоя для круговых диаграмм относительно основного кластерного слоя и слоя ребер
В свойствах настроечного слоя во вкладке Переменные необходимо указать свойство: elitegis_clustering_layer_type со значением pie : .
Примечание: Таким образом указывается, что данный слой будет восприниматься CoGIS Server как настроечный и публиковаться в сервисе не будет.
Порядок отрисовки символов в кластере (может быть много уровней) представлен на рисунке ниже, см. Рисунок 129 .
Рисунок 129 - Порядок отрисовки символов в кластере

Раскраска сегментов (pies) в круговой диаграмме

Для настройки раскраски сегментов круговой диаграммы нужно убедиться, что в свойствах слоя в разделе Стиль указан тип символики Point cluster .
Далее в настройках Cluster symbol настраивается символ и размер диаграммы.
Для символа должно быть указано значение Простой маркер (символьный маркер необходимо удалить, в случае если он остался при дублировании исходного слоя).
Размер задаётся аналогичной формулой, как и в исходном слое, с добавлением коэффициента больше на единицу, для того чтобы круговая диаграмма была больше центрального символа, см. Рисунок 130 .
Рисунок 130 - Настройка символа для круговой диаграммы
Таким образом создается формула для расчета размера кластерного символа следующего вида:
1.3 *(coalesce(scale_linear(@cluster_size, 1, 4000, 4, 16), 0))
Для раскраски сегментов диаграммы используется тип отрисовки Уникальные значения . Каждому значению задается свой символ, из которого берется цвет сегмента для этого значения в круговой диаграмме, см. Рисунок 131 .
Рисунок 131 - Настройка цветов для сегментов круговой диаграммы на основе уникальных значений
Для определения значений для каждого сегмента также возможно использовать SQL-выражение. Это, например, позволяет объединить категории, см. Рисунок 132 .
Рисунок 132 - Настройка цветов для сегментов круговой диаграммы с помощью SQL-выражений
Видимость в пределах масштаба для каждого элемента по умолчанию берется из основного слоя. Но её так же можно задать и отдельно для каждого уровня круговой диаграммы.

Круговая диаграмма для одиночного кластера

Символика для отображения круговой диаграммы для одиночного кластера (объекта, который не попал ни в один кластер) задается через параметр elitegis_clustering_single_feature_draw_mode .
Параметр может принимать следующие значения:
  • Simple - используется символ из раскраски исходных объектов без «подсветки»;
  • Cluster - используется символ как у кластера с подписью «1» и подсветкой из chart-диаграммы;
  • Simplechart - используется символ из раскраски исходных объектов и подсветкой из круговой диаграммы.

Группировка кластеров по атрибуту

CoGIS Server поддерживает возможность группировать кластеры по значению из определенного поля, то есть не объединять объекты в один кластер, если у них разный атрибут.
Задается через параметр:
elitegis_clustering_group_by: <Имя поля>
Для группировки по масштабу существует возможность задать диапазон масштабов, в котором применяется группировка.
Параметры: elitegis_clustering_group_min_scale и elitegis_clustering_group_max_scale.

Размер кластера по сумме значений из числового поля

По умолчанию размер кластера и значение в подписи зависят от количества объектов, попавших в кластер. Существует возможность задавать размер кластера на основе суммы значений из указанного поля всех объектов, попавших в кластер, и выводить это значение в подпись кластера.
Задается через параметр со значением имени поля, из которого берется значение для определения размера кластера:
elitegis_clustering_value_expression: <Имя поля>

Настройка идентификации кластера

Возможность настроить результат идентификации кластера задается через параметр elitegis_clustering_identify_mode со следующими значениями:
  • features - выдается список все объектов попавших в кластер;
  • cluster - выдается информация о кластере с экстентом для приближения;
  • mixed (по умолчанию) - смешанный.
Для смешанного типа идентификации можно настроить дополнительные параметры:
  • elitegis_clustering_identify_features_min_scale - самый мелкий масштаб, при котором при идентификации будет выдаваться список объектов, попавших в кластер, по умолчанию 0 (т. е. всегда будет выдан экстент)
  • elitegis_clustering_identify_features_max_count - максимальное количество объектов в кластере, чтобы возвращать список объектов, а не экстент всех объектов, попавших в кластер, по умолчанию 1.