Я поиграл с новым рендерером точечных кластеров в QGIS 3.0.2, и это здорово - намного проще (и быстрее), чем кластеризация самостоятельно.
Чтобы показать, что я имею в виду, вот пример дорожно-транспортных происшествий в Эдинбурге с использованием данных STATS19 и радиуса 30 метров.
Я не могу понять, как настроить z-порядок так, чтобы самые большие кластеры были нарисованы перед меньшими.
Мне известна переменная @cluster_size - это то, что я использую для масштабирования и раскраски символов. Для этого я использую помощников по размеру и цвету. Я удалил маркеры шрифта, чтобы удалить текст из каждого кластера.
Размер маркеров определяется следующим образом:
coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)
Цвет маркеров определяется следующим образом:
coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')
Что я пробовал до сих пор: -
- Уровни символов - не повезло; невозможно выбрать имя переменной.
- Слой рендеринга> Управление порядком рендеринга объектов и выберите @cluster_size в качестве сортировки. Похоже, не имеет эффекта.
- Градуированный стиль с использованием @cluster_size в качестве выражения не работает.
Кто-нибудь знает, возможно ли это, или это ограничение с этим конкретным средством визуализации?
Я знаю, что есть много других способов сделать это (буфер / пространственное соединение, плагины), но новый рендерер должен быть намного быстрее. Или я упустил что-то очевидное? :)
источник
Ответы:
Кажется, что реализация точечного кластера не допускает этого изначально.
Рассмотрим рендерер точечного кластера - он по существу анализирует и кластеризует точечные данные во время рендеринга, создавая новый псевдослой. Этот слой недоступен для пользователя. Нельзя запросить кластерную точку. Нельзя в поле вычислить атрибут @cluster_size .
Средство рендеринга кластера точек наследует порядок рендеринга из источника, используя порядок рендеринга элемента управления ( QgsFeatureRequest :: OrderByClause), оставляя открытой возможность некоторого умного обходного пути с использованием атрибутов и выражений, однако определенные схемы упорядочения не гарантируются согласованными.
В качестве примера рассмотрим точечный слой с рендерингом по возрастанию с помощью атрибута «Широта». Более северные точки оказываются поверх более южных точек. Средство визуализации кластера точек не имеет атрибута «Локатор» для своих новых функций, хотя оно унаследует некоторое подобие этого порядка из источника. Могут быть случаи, когда более южный кластер оказывается поверх более северного кластера из-за порядка исходных точек.
источник