En ocasiones una nube de puntos puede impedirnos leer con claridad un mapa, especialmente cuando trabajamos a escalas pequeñas en las que una gran extensión puede mostrar una gran cantidad de elementos que se representan muy próximos sin dejarnos ver los elementos subyacentes.
Para facilitar la lectura bajo esta nube de puntos, QGIS 3 dispone de un modo de representación “Point Clúster” (Agrupación de Puntos), desarrollado por la empresa North Road a través de una campaña de “crowdfunding”. Este modo de renderizado permite la agrupación de varios puntos próximos en un solo marcador.
Para representar una capa de puntos de este modo, debemos acceder a la pestaña simbología en la ventana de propiedades de la capa. Seleccionamos el renderizador “Agrupación de Puntos”.
Este modo de representación nos permite controlar:
1. Simbología del “Clúster”: Podemos elegir la simbología del clúster o punto de agrupación. Por defecto, vendrá representado mediante un símbolo complejo constituido por un símbolo de marcador sencillo y un símbolo de Carácter (letra, numero o símbolo). El símbolo de carácter permite informar del número de elementos agregados bajo dicho clúster.
2. Distancia de tolerancia: Podemos especificar la distancia dentro de la cual los puntos se agrupa bajo un mismo punto de agrupación. El resto de puntos que se encuentren a una distancia superior se representaran de acuerdo a lo establecido en el parámetro “Renderizador” de esta misma ventana. Esta distancia puede ser expresada en distintas unidades (milímetros, puntos, pixeles, unidades de mapa o pulgadas). Debemos tener claro que si la distancia es expresada en unidades de mapa, el numero de clúster no va a cambiar, aunque cambiemos la escala del mapa.
3. Renderizador: Permite establecer la simbología de aquellos puntos aislados que no se encuentre dentro del radio definido para el clúster. Estos puntos pueden ser representados como siempre, mediante “Símbolos sencillos”, por “Categorías”, mediante simbología “Graduada” o “Basada en reglas”.
A la hora de definir la simbología del “Clúster” o punto de agrupación, observaras que gran parte de los parámetros pueden ser controlados mediante “Suplantación definida por datos”, esto implica que el valor que define dicho parámetro puede ser establecido mediante la selección de un campo de la tabla de atributos, una variable de expresión o la construcción de una expresión compleja (editar).
Por este motivo, resulta de gran utilidad el empleo de las variables de expresión “@cluster_size” y “@cluster_color”.
La variable “@cluster_size” nos devuelve la cantidad de puntos que han sido agrupados bajo un determinado clúster. Esta variable puede ser útil para definir el tamaño del símbolo Clúster. También se emplea cuando en la composición del símbolo empleamos un “Marcador de tipos de letra”, de modo que el carácter numérico que se representa indica el número de puntos agrupados.
En el siguiente ejemplo podemos ver como el tamaño del símbolo clúster puede ser proporcional al número de puntos agrupados, empleando la función Scale_linear().
Para ello podemos emplear las funciones scale_linear() y scale_exp().
– scale_linear(): Permite obtener la transformación de un valor de entrada (en este caso la función @cluster_size) dentro de un dominio de valores determinado, a un valor de salida mediante una transformación lineal, que estará dentro de un determinado rango de valores de salida definidos.
– scale_exp(): Análoga a la función scale_linear(), obtenemos la transformación de un valor de entrada (@cluster_size), pero en este caso mediante una transformación exponencial. La forma de la curva exponencial vendrá definida por el valor del exponente que debe ser positivo. Valores de exponente altos producen transformaciones leves mientras los valores de entrada se localizan en las zonas baja del dominio y produce transformaciones más intensas para los valores de entrada que se localizan en las zonas más alta del dominio (forma de la curva “ease in”). En cambio, valores de exponente menores de 1, producen transformaciones intensas para valores de entrada que se localizan en las zonas bajas del dominio y la intensidad de la transformación se atenúa cuando los valores de entrada se localizan en las zonas altas del dominio (forma de la curva “ease out”).
La variable “@cluster_color”, en el caso de que todos los puntos agrupados bajo un mismo clúster pertenezcan a la misma categoría o clase, y por tanto compartan la misma simbología, la variable @cluster_color tomará el color de dicha categoría o clase, con el fin de que el símbolo clúster pueda ser representado con este mismo color. En el caso de que los puntos agrupados pertenezcan a distintas clases o categorías esta variable será nula.
En el siguiente ejemplo podemos comprobar como mediante el empleo de la variable @cluster_color los puntos de agrupación que están constituidos por una misma clase o categoría heredan el color distintivo de la misma.
Finalmente vamos a ver cómo podemos establecer el color del clúster en base al número de puntos que agrupa, de modo que a mayor número de puntos el clúster se represente mediante un aumento en la intensidad del color dentro de una gama cromática.
Para ello solo tenemos que acceder a las propiedades del símbolo del clúster y definir el parámetro “color” mediante una expresión.
Existen diversas funciones que pueden ser empleadas para la definición del color, dos de ellas son color_hsva() y ramp_color().
- color_hsva(): Nos devuelve una coordenada de color expresa en el mapa de color HSV, al cual podemos dotar de cierta transparencia al poder incluir la coordenada Alpha. Definimos las coordenadas Hue (tono), Value (valor) y Alpha (transparencia) como valores fijos, mientras que la coordenada Saturación va ir variando de un modo exponencial con la variable @cluster_size.
- ramp_color(): Nos devuelve una coordenada de color dentro de una rampa de color definida y a la cual identificamos por su nombre (en este caso la rampa de color es ‘Plasma’). El valor que identifica la coordenada de color dentro de la rampa ira variando de un modo exponencial con la variable @cluster_size.
Si quieres empezar a formarte en el manejo de Quantum GIS tienes un amplia oferta de cursos en nuestro apartado de cursos de QGIS.
Buenas tardes:
Excelente artículo y explicado de forma muy sencilla.
Siguiendo tus pasos he creado una simbología para una campa de puntos.
Luego he exportado a SLD para luego simbolizar la misma capa en Geoserver. Y, lamentablemente, la propiedad de agrupar no se refleja en el SLD. Simboliza los puntos sin agrupar.
¿Sabes algún método para generar el mismo comportamiento desde un SLD en Geoserver?
«Point Stacker» no devuelve la información alfanumérica del punto (ni agrupados ni cuando llegas al zoom determinado que está como único).
Un saludo y gracias.
Buenas tardes,
Es posible que tenga que editar el código de la simbología SLD, desde la web de GeoServer hay mucha ayuda en este sentido: https://docs.geoserver.org/latest/en/user/styling/sld/index.html
Un saludo.
Hola, hay alguna forma de generar los clusters usando atributos no solo espaciales si no también temporales. Por ejemplo, identificar agrupamientos de puntos, donde los puntos estan separados por 20 m o menos y por 36 h o menos. Sería el caso de puntos generados por un collar con gps en un animal. Gracias
Buenos días, información enviada a su correo, un saludo.