Propiedades de marcadores (vectoriales tipo punto) asociadas a expresiones en PyQGIS

En un post pasado se escribió sobre la posibilidad en PyQGIS de asociar el comportamiento de la simbología a parámetros incluidos en los campos de atributos de una capa vectorial de puntos que representaban, por ejemplo, localidades con una determinada dirección y velocidad del viento. En QGIS es posible hacerlo en las opciones avanzadas de la pestaña de simbología que se encuentra asociada a las propiedades de capa. Sólo se ponen a disposición las opciones de ángulo y tamaño. Sin embargo, las posibilidades de programación mediante PyQGIS son mayores.

Las opciones completas para la clase QgsMarkerSymbolV2 en cuanto al enlace de su comportamiento mediante expresiones es la siguiente:

    angle_expression
    color_border_expression
    color_expression
    horizontal_anchor_point_expression
    name_expression
    offset_expression
    outline_width_expression
    size_expression
    vertical_anchor_point_expression

El vectorial de puntos del post pasado había quedado de esta forma:

marker2

Vamos a crear dos campos en su tabla de atributos para hacer posible la modificación del ángulo de rotación de las flechas (MARKER_ANG) y la estratificación mediante un color (MARKER_COL). La tabla de atributos luce así después de crear el campo (MARKER_ANG) y rellenarlo con valores arbitrarios y el campo MARKER_COL con los colores blue, magenta, yellow, red y cyan.

properties

La programación en la Python Console es la siguiente:

>>>symbol = QgsMarkerSymbolV2.createSimple({'name':'arrow',
...'angle_expression': '(MARKER_ANG/5)*ID',
...'color_expression':'MARKER_COL',
...'size':'10',
...'outline_width':'0'
...})
>>>rp=iface.activeLayer()
>>>renderer=rp.rendererV2()
>>>renderer.setSymbol(symbol)
>>>iface.mapCanvas().refresh()
>>>iface.legendInterface().refreshLayerSymbology(rp)

Observen que para ‘angle_expression’ se colocó deliberadamente esto ‘(MARKER_ANG/5)*ID’; para que se compruebe que el sistema es capaz de realizar cálculos incluyendo otros campos y operaciones matemáticas (incluso con funciones complejas). El resultado fue el siguiente:

properties2

Pueden modificar ‘(MARKER_ANG/5)*ID’ por ‘MARKER_ANG’ (la adecuada), correr nuevamente las instrucciones y verificar que cambian las orientaciones. Si los cambios se hacen directamente en la tabla de atributos las modificaciones son en tiempo real.

Con este comportamiento de la simbología es posible representar en un sólo vectorial propiedades complejas.

Esta entrada fue publicada en Código Python, PyQGIS, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Propiedades de marcadores (vectoriales tipo punto) asociadas a expresiones en PyQGIS

  1. Pingback: Propiedades de marcadores (vectoriales tipo pun...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s