Cómo desplegar simultáneamente en QGIS polilíneas que se solapan mediante PyQGIS

Cuando se trata de representar rutas de medios de transporte es muy probable que se use la capa de vialidad como plantilla (vectoriales tipo polilínea). Esto traerá como consecuencia que los shapefiles se solapen en diferentes tramos de la ruta haciendo imposible la visualización simultánea en estos sino modificamos su simbología por defecto. Para ello, hay que recurrir a la opción ‘offset’ de la simbología que, en PyQGIS, se accede a través de incluirla explícitamente en las opciones de diccionario del método ‘createSimple’ de los objetos de la clase QgsLineSymbolV2.

La opción ‘offset’ simplemente desplazará (en mm o unidades de mapa) paralelamente los shapefiles la cantidad numérica que se especifique; un float encerrado entre comillas simples que también puede ser negativo. Para probar el codigo de PyQGIS voy a emplear tres shapefiles tipo línea que se solapan completamente; tal como se observa en la imagen a continuación:

offset1

El código a probar es el siguiente:

from PyQt4.QtGui import *

mc=iface.mapCanvas()

layers=[]
renderer = []

n = mc.layerCount()

symbol = range(n)

symbol[0] = QgsLineSymbolV2.createSimple({'color':'green',
                                       'width':'1',
                                       'offset':'1.0'})

symbol[1] = QgsLineSymbolV2.createSimple({'color':'red',
                                       'width':'1',
                                       'offset':'0.0'})

symbol[2] = QgsLineSymbolV2.createSimple({'color':'blue',
                                       'width':'1',
                                       'offset':'-1.0'})


for i in range(n):
    layers.append(mc.layer(i))

for layer in layers:
    renderer.append(layer.rendererV2())

for i in range(n):
    renderer[i].setSymbol(symbol[i])

iface.mapCanvas().refresh()

for layer in layers:
    iface.legendInterface().refreshLayerSymbology(layer)

cuya ejecución en la Python Console de QGIS produjo el siguiente resultado:

offset4

El ‘offset’ de la capa central (line4) es cero y sirve como eje de desplazamiento (porque el número total de capas es impar) de las otras 2; line2 (‘offset’ positivo) y line5 (‘offset’ negativo).

Esta entrada fue publicada en PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

2 respuestas a Cómo desplegar simultáneamente en QGIS polilíneas que se solapan mediante PyQGIS

  1. Nelson Silva dijo:

    Hola José, es posible hacer un offset, basado en un campo de la tabla de atributos?

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