Grałem z nowym rendererem klastra punktów w QGIS 3.0.2 i jest świetny - o wiele łatwiejszy (i szybszy) niż samodzielne tworzenie klastrów.
Aby pokazać, co mam na myśli, oto przykład wypadków drogowych w Edynburgu z wykorzystaniem danych STATS19 i promienia 30 m.
Nie mogę wymyślić, jak skonfigurować kolejność Z, aby największe klastry były rysowane przed mniejszymi klastrami.
Mam świadomość zmiennej @cluster_size - tego właśnie używam do skalowania i pokolorowania symboli. Do tego używam asystentów rozmiaru i koloru. Usunąłem znaczniki czcionek, aby usunąć tekst z każdego klastra.
Rozmiar markerów definiuje się w następujący sposób:
coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)
Kolor markerów definiuje się w następujący sposób:
coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')
Co próbowałem do tej pory: -
- Poziomy symboli - brak szczęścia; nie można wybrać nazwy zmiennej.
- Renderowanie warstw> Kontroluj kolejność renderowania operacji i wybierz sortowanie @cluster_size . Nie wydaje się mieć efektu.
- Styl stopniowany przy użyciu @cluster_size, ponieważ wyrażenie nie działa.
Czy ktoś wie, czy jest to możliwe, czy jest to ograniczenie w przypadku tego konkretnego mechanizmu renderującego?
Wiem, że jest na to wiele innych sposobów (buforowanie / łączenie przestrzenne, wtyczki), ale nowy moduł renderujący powinien być znacznie szybszy. Czy przeoczyłem coś oczywistego? :)
źródło
Odpowiedzi:
Wydaje się, że implementacja klastra punktów nie pozwala na to natywnie.
Rozważ renderer klastrów punktów - zasadniczo analizuje i grupuje dane punktów w czasie renderowania, tworząc nową pseudo warstwę. Ta warstwa nie jest dostępna dla użytkownika. Nie można zapytać o punkt skupiony. Nie można obliczyć pola @cluster_size atrybutu.
Moduł renderujący klaster punktów dziedziczy kolejność renderowania ze źródła za pomocą opcji Sterowanie kolejnością renderowania funkcji ( QgsFeatureRequest :: OrderByClause), pozostawiając otwartą możliwość pewnego sprytnego obejścia przy użyciu atrybutów i wyrażeń, jednak nie można zagwarantować, że pewne schematy porządkowania będą spójne.
Jako przykład rozważ warstwę punktową z renderowaniem uporządkowanym rosnąco według atrybutu „Szerokość geograficzna”. Punkty bardziej na północ są renderowane na szczytach punktów na południe. Moduł renderujący klaster punktów nie ma atrybutu „Współrzędne” dla swoich nowych funkcji, choć odziedziczy pewne pozory tej kolejności od źródła. Mogą wystąpić sytuacje, w których gromada bardziej na południe renderuje się na gromadzie bardziej na północ, z powodu kolejności pierwotnych punktów.
źródło