QGIS 3.0 Point Cluster Renderer, ist es möglich, die Renderreihenfolge (Z-Reihenfolge) zu steuern?

19

Ich habe mit dem neuen Punktcluster-Renderer in QGIS 3.0.2 experimentiert und es ist großartig - viel einfacher (und schneller) als das Clustering selbst durchzuführen.

Um zu zeigen, was ich meine, hier ein Beispiel für Verkehrsunfälle in Edinburgh mit STATS19-Daten und einem Radius von 30 Metern.

Bildbeschreibung hier eingeben

Ich kann nicht herausfinden, wie die Z-Reihenfolge eingerichtet wird, damit die größten Cluster vor kleineren Clustern dargestellt werden.

Mir ist die Variable @cluster_size bekannt - sie wird zum Skalieren und Färben der Symbole verwendet. Hierfür benutze ich die Größen- und Farbassistenten. Ich habe die Schriftmarkierungen entfernt, um den Text aus jedem Cluster zu entfernen.

Die Größe der Marker ist wie folgt definiert:

coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)

Die Farbe der Marker ist wie folgt definiert:

coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')

Was ich bisher versucht habe: -

  • Symbolebenen - Kein Glück; Ein Variablenname kann nicht ausgewählt werden.
  • Layer-Rendering> Steuern der Feature-Rendering-Reihenfolge und wählen Sie @cluster_size als Sortierung. Scheint keinen Effekt zu haben.
  • Abgestufter Stil mit @cluster_size, da der Ausdruck nicht funktioniert.

Weiß jemand, ob dies möglich ist, oder ist dies eine Einschränkung bei diesem bestimmten Renderer?

Ich weiß, dass es noch viele andere Möglichkeiten gibt (Buffer / Spatial Join, Plugins), aber der neue Renderer sollte viel schneller sein. Oder habe ich etwas offensichtliches übersehen? :)

Steven Kay
quelle
Dies funktioniert wahrscheinlich unter Berücksichtigung der Reihenfolge in der Attributtabelle. Vielleicht ordnen Sie sie in aufsteigender Reihenfolge an, damit die größten als die neuesten angezeigt werden? Wenn es keine Funktion zum Sortieren von Merkmalen nach Attributen gibt, können Sie das MMQGIS-Plugin ausprobieren (sofern es für QGIS 3 verfügbar ist)
Revo
danke @Revo. Es scheint möglich zu sein, die Größe und Sortierung eines Attributs (einschließlich Cluster Point Renderer) vorzunehmen, dies funktioniert jedoch nur auf einer Skala. Ich habe versucht, cluster_size zu verwenden, da sich die Clustergrößen dynamisch ändern, wenn ich mit dem Clusterpunkt-Renderer zoome. Ich werde einen Blick auf MMQGIS werfen (es ist für QGIS 3 verfügbar)
Steven Kay

Antworten:

2

Es scheint, als ob die Implementierung des Punkt-Clusters dies nicht nativ zulässt.

Betrachten Sie den Punktcluster-Renderer - er analysiert und gruppiert Punktdaten beim Rendern und erstellt so eine neue Pseudoebene. Diese Ebene ist für den Benutzer nicht zugänglich. Ein Clustered Point kann nicht abgefragt werden. Ein @cluster_size- Attribut kann nicht vor Ort berechnet werden.

Der Punktclusterrenderer erbt die Renderreihenfolge von der Quelle mithilfe der Steuerelement- Feature- Renderreihenfolge ( QgsFeatureRequest :: OrderByClause), wobei die Möglichkeit einer cleveren Umgehung mithilfe von Attributen und Ausdrücken offen bleibt. Bestimmte Sortierschemata sind jedoch nicht garantiert konsistent.

Betrachten Sie als Beispiel eine Punktebene mit einem Rendering, das nach dem Attribut "Latitude" aufsteigend sortiert ist. Die nördlicheren Punkte werden auf südlicheren Punkten gerendert. Der Punktcluster-Renderer verfügt über kein Latitude-Attribut für seine neuen Funktionen, erbt jedoch einen gewissen Anschein dieser Reihenfolge von der Quelle. Es kann Fälle geben, in denen ein südlicherer Cluster aufgrund der Reihenfolge der ursprünglichen Punkte auf einem nördlicheren Cluster gerendert wird.

Kristalline Einheit
quelle
Vielen Dank. Das ist eine sehr klare Erklärung, die auch meine Frage beantwortet, ob es möglich ist, ein Attribut aus den gruppierten Punkten zu berechnen, dh eine Summe der Grundgesamtheit, die jedem ursprünglichen Punkt zugeordnet ist. Ganz klar noch nicht ....? Es wäre jedoch eine sehr nützliche Funktion. Gibt es eine Idee, wie dies mit einer intelligenten Problemumgehung erreicht werden kann (für die allerdings keine Codierung erforderlich ist, da ich (noch) nicht gut darin bin), auch nicht statisch? Ich habe Mühe, ein Tool zu finden, mit dem Punkte ähnlich gruppiert werden können wie mit Cluster-Renderer
dorakiara,
Im Allgemeinen können Sie dies erreichen, indem Sie die Aktionen des Cluster-Renderers in Verbindung mit der Funktion zum Steuern der Feature-Renderreihenfolge mithilfe von Attributen replizieren. Ein grober erster Durchgang könnte darin bestehen, eine Punktebene zu puffern und Punkte in den gepufferten Polygonen als Attribut in der Punktebene zu zählen. Steuern Sie die Renderreihenfolge nach diesem Attribut aufsteigend. Ein bisschen umständlich und wird nicht unbedingt in verschiedenen Maßstäben funktionieren.
CrystallineEntity
Ich möchte Sie auch dazu ermutigen, eine Featureanforderung zu stellen, die die @ cluster_size-Methode für die Funktion "Renderreihenfolge von Features steuern" verfügbar macht.
CrystallineEntity