Aunque puedan parecer similares los objetos QgsGraduatedSymbolRendererV2, a diferencia de los QgsCategorizedSymbolRendererV2, no pueden ser instanciados de la misma forma. Para crear el renderer en un sólo paso es necesario obtener primero una rampa de colores (objeto de la clase QgsVectorGradientColorRampV2) que automáticamente generará los símbolos de acuerdo al campo elegido en la tabla de atributos y el número de clases establecidos. El método para colocar el estilo de borde a 'no pen' está en los símbolos (QgsFillSymbolV2 para capas de tipo polígono) y corresponde, para esta tarea, a 'setOutputUnit(1)'. El código completo se encuentra a continuación:
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 | from qgis.PyQt.QtGui import QColor layer = iface.activeLayer() fieldName = "FID" provider = layer.dataProvider() numberOfClasses = 10 color1 = QColor("red") color2 = QColor("green") ramp = QgsVectorGradientColorRampV2(color1, color2) renderer = QgsGraduatedSymbolRendererV2.createRenderer(layer, fieldName, numberOfClasses, QgsGraduatedSymbolRendererV2.Quantile, QgsSymbolV2.defaultSymbol(layer.geometryType()), ramp) symbols = renderer.symbols() for symbol in symbols: symbol.setOutputUnit(1) #1 is for no pen layer.setRendererV2( renderer ) layer.triggerRepaint() |
Para está situación:
después de ejecutado el código anterior en la Python Console de QGIS se obtiene el renderizado deseado.
No hay comentarios:
Publicar un comentario