Cuando se tienen rasgos solapados en una misma capa la opción que funciona para separarlos es mediante un renderer de tipo QgsCategorizedSymbolRendererV2. Para ello, primero hay que crear los símbolos y después las categorías correspondientes a éstos. Para instanciar el renderer se le pasa como parámetro el label del campo objeto de la categorización. Finalmente, se añaden las categorías al renderer, este último a la capa y se "refresca" (método 'triggerRepaint' de QgsVectorLayer) para visualizar los resulatdos.
El código completo es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | layer = iface.activeLayer() symbols = [] symbol = QgsLineSymbolV2.createSimple({'color':'green', 'width':'1', 'offset':'1'}) symbols.append(symbol) symbol = QgsLineSymbolV2.createSimple({'color':'red', 'width':'1', 'offset':'0'}) symbols.append(symbol) symbol = QgsLineSymbolV2.createSimple({'color':'blue', 'width':'1', 'offset':'-1'}) symbols.append(symbol) # creating categories categories = [ QgsRendererCategoryV2(i, symbol, str(i)) for i, symbol in enumerate(symbols) ] renderer = QgsCategorizedSymbolRendererV2('id') for category in categories: renderer.addCategory(category) layer.setRendererV2(renderer) layer.triggerRepaint() |
Cuando se ejecuta el código anterior, para un vectorial de tres rasgos completamente solapados, el resultado es el esperado; tal como se observa en la imagen siguiente:
No hay comentarios:
Publicar un comentario