Personalizando simbología en vectoriales de punto mediante PyQGIS

Para personalizar la simbología en vectoriales de punto mediante PyQGIS hay que recurrir al método ‘createSimple’ de la clase QgsMarkerSymbolV2. Este método usa keywords en un diccionario para definir la apariencia del nuevo símbolo (symbol). Las keywords para cada symbol son:

    angle: especificado en grados.
    color: especificado usando cualquiera de los constructores para QColor.
    color_border: igual que el anterior.
    horizontal_anchor_point: número entero.
    name: nombre del marcador (circle, square, triangle, star, arrow).
    offset: especificado como un par de enteros x,y.
    offset_unit: MM o MapUnit.
    outline_width: valor entero
    outline_width_unit: MM o MapUnit.
    scale_method: diámetro o área.
    size: valor entero.
    size_unit: MM o MapUnit.
    vertical_anchor_point: valor entero

Para probar un estilo propio decidí cargar un vectorial de puntos aleatorios conjuntamente con una rejilla (grid) para que le sirviera como contraste de fondo. La imagen es la siguiente:

marker1

Después de hacer capa activa la de puntos (ojo que en la imagen superior está la grid como capa activa), corrí estos comandos en la Python Console:

>>>symbol = QgsMarkerSymbolV2.createSimple({'name':'arrow',
...                                         'angle': '45',
...                                         'color':'red',
...                                         'color_border':'orange',
...                                         'size':'10',
...                                         'outline_width':'1'
...                                         })
>>>rp=iface.activeLayer()
>>>renderer=rp.rendererV2()
>>>renderer.setSymbol(symbol)
>>>iface.mapCanvas().refresh()
>>>iface.legendInterface().refreshLayerSymbology(rp)

El resultado fue el siguiente:

marker2

Puede servir, por ejemplo, para señalar la dirección y velocidad del viento. Los ángulos y la velocidad los tomaría de la tabla atributiva mediante una ‘angle_expression’ y una ‘size_expresion’. Hacer algo como esto con la oferta de QGIS no es tan complicado pero programando con PyQGIS resulta muy sencillo.

Por otra parte, si nos gusta este estilo se puede guardar en nuestro directorio de estilos como por ejemplo:

>>>rp.saveNamedStyle('c:/Users/Styles/arrows_red_orange.qml')
(u'Created default style file as c:/Users/Styles\\arrows_red_orange.qml', True)

y para recuperarlo sería con:

>>>rp.loadNamedStyle('c:/Users/Styles/arrows_red_orange.qml')
>>>iface.mapCanvas().refresh()
>>>iface.legendInterface().refreshLayerSymbology(rp)
Esta entrada fue publicada en Código Python, PyQGIS, SIG, Software Libre. Guarda el enlace permanente.

3 respuestas a Personalizando simbología en vectoriales de punto mediante PyQGIS

  1. Pingback: Propiedades de marcadores (vectoriales tipo punto) asociadas a expresiones en PyQGIS | El Blog de José Guerrero

  2. Pingback: Personalizando simbología en vectoriales...

  3. Muy útil esta información!! Muchas gracias!!
    Aprovecho para preguntarte si quizás has encontrado la manera de configurar las etiquetas (labels).
    He tratado un poco pero no logro configurarlas en offset.
    Gracias

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