Procesador de clúster de punto QGIS 3.0, ¿es posible controlar el orden de representación (orden z)?

19

He estado jugando con el nuevo renderizador de clúster de puntos en QGIS 3.0.2 y es genial, mucho más fácil (y más rápido) que tener que hacer el agrupamiento usted mismo.

Para mostrar lo que quiero decir, aquí hay un ejemplo de accidentes de tráfico en Edimburgo utilizando datos STATS19 y un radio de 30 m.

ingrese la descripción de la imagen aquí

No puedo averiguar cómo configurar el orden z para que los grupos más grandes se dibujen frente a los grupos más pequeños.

Soy consciente de la variable @cluster_size : es lo que estoy usando para escalar y colorear los símbolos. Para esto estoy usando los asistentes de tamaño y color. Eliminé los marcadores de fuente para eliminar el texto de cada grupo.

El tamaño de los marcadores se define de la siguiente manera:

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

El color de los marcadores se define de la siguiente manera:

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

Lo que he probado hasta ahora:

  • Niveles de símbolo : sin suerte; incapaz de seleccionar un nombre de variable.
  • Representación de capas> Orden de representación de características de control y elija @cluster_size como ordenar. No parece tener un efecto.
  • Estilo graduado usando @cluster_size ya que la expresión no funciona.

¿Alguien sabe si esto es posible o es una limitación con este renderizador en particular?

Sé que hay muchas otras formas de hacer esto (búfer / unión espacial, complementos), pero el nuevo renderizador debería ser mucho más rápido. ¿O he pasado por alto algo obvio? :)

Steven Kay
fuente
Probablemente funciona teniendo en cuenta el orden en la tabla de atributos. ¿Quizás los organice en orden ascendente para que los más grandes se muestren como los más nuevos? Si no existe la función 'Ordenar características por atributo', puede probar el complemento MMQGIS (si está disponible para qgis 3)
Revo
gracias @Revo. Parece posible dimensionarlo y clasificarlo en un atributo (incluso con el renderizador de Cluster Point), pero eso solo funciona en una escala. Intenté usar cluster_size porque los tamaños de clúster cambian dinámicamente a medida que acerco / alejo usando el renderizador de puntos de clúster. Echaré un vistazo a MMQGIS (está disponible para QGIS 3)
Steven Kay

Respuestas:

2

Parece que la implementación del clúster de puntos no permite esto de forma nativa.

Considere el procesador de grupos de puntos : esencialmente analiza y agrupa los datos de puntos en el momento del procesamiento, creando una nueva pseudocapa. Esta capa no es accesible para el usuario. No se puede consultar un punto agrupado. No se puede calcular en el campo un atributo @cluster_size .

El renderizador de clúster de puntos hereda el orden de representación de la fuente utilizando el orden de representación de la función Control ( QgsFeatureRequest :: OrderByClause) dejando abierta la posibilidad de una solución alternativa inteligente usando atributos y expresiones, sin embargo, no se garantiza que ciertos esquemas de ordenación sean consistentes.

Como ejemplo, considere una capa de puntos con representación ordenada ascendente por un atributo "Latitud". Los puntos más al norte se representan sobre los puntos más al sur. El renderizador de clúster de puntos no tiene un atributo "Latitud" para sus nuevas características, aunque heredará cierta apariencia de ese orden de la fuente. Puede haber casos en que un grupo más al sur se representa sobre un grupo más al norte, debido al orden de los puntos originales.

Entidad cristalina
fuente
Gracias. Esa es una explicación muy clara, que también responde a mi pregunta si es posible calcular un atributo a partir de los puntos agrupados, por ejemplo, una suma de la población asociada a cada punto original. Claramente no ... todavía? Sin embargo, sería una característica muy útil. ¿Alguna idea de cómo se puede lograr esto con alguna solución inteligente (que no requiere codificación, ya que no soy (¿todavía, de nuevo?) Bueno en eso), incluso de forma estática? Estoy luchando por encontrar una herramienta para agrupar puntos de manera similar a como lo hace el renderizador de
clústeres
En términos generales, puede abordar esto mediante la replicación de lo que hace el renderizador de clúster junto con la función 'Orden de representación de características de control' utilizando atributos. Un primer paso aproximado podría ser almacenar una capa de puntos, contar puntos en los polígonos almacenados como un atributo en la capa de puntos. Controle el orden de renderizado por este atributo ascendente. Un poco engorroso y no necesariamente funcionará a diferentes escalas.
CrystallineEntity
También le recomendaría que haga una solicitud de función, que expondría el método @cluster_size a la función 'Orden de representación de funciones de control'.
CrystallineEntity