Actualmente estoy escribiendo un script independiente para modificar unas capas vectoriales para que tengan un patrón de relleno de vino en su interior. La geometría con la que estoy trabajando es un polígono. Sé cómo cambiar los colores del contorno y los colores de relleno simples; pero, ¿alguien sabe cómo añadir un patrón dentro del polígono?
Respuesta
¿Demasiados anuncios?Empieza con:
symbol = QgsSymbolV2.defaultSymbol(layer.geometryType())
renderer = QgsSingleSymbolRendererV2(symbol)
Ahora tienes 10 tipos de relleno:
- Relleno simple, QgsSimpleFillSymbolLayerV2
- Relleno de degradado, QgsGradientFillSymbolLayerV2
- Relleno de centroides, QgsCentroidFillSymbolLayerV2
- Relleno de patrón de línea, QgsLinePatternFillSymbolLayer
- Relleno de puntos, QgsPointPatternFillSymbolLayer
- Relleno SVG, QgsSVGFillSymbolLayer
- Contorno: línea de marcador, QgsMarkerLineSymbolLayerV2
- Contorno: línea simple, QgsSimpleLineSymbolLayerV2
- Relleno de forma, QgsShapeburstFillSymbolLayerV2
- Raster fill, QgsRasterFillSymbolLayer
Así que para el relleno simple será:
symbol_layer = QgsSimpleFillSymbolLayerV2.create(properties)
properties
es un diccionario {'color':'red', 'style': 'f_diagonal', ...}
por lo que aquí se puede elegir el parámetro "estilo" adecuado. Si no sabes nada de los parámetros, puedes dar estilo a tu capa en QGIS, exportar este estilo a un archivo .qml, y comprobar las etiquetas adecuadas para las palabras clave. Son las mismas que en pyqgis.
renderer.symbols()[0].changeSymbolLayer(0, symbol_layer)
layer.setRendererV2(renderer)