Exemple #1
0
    def setSectorsStyle(self, layer):
        # get unique values
        field = 'Class'
        fni = layer.fields().indexFromName(field)

        if fni == -1:  # Hydraulic sectors
            field = 'SubNet'
            fni = layer.fields().indexFromName(field)

        unique_values = layer.dataProvider().uniqueValues(fni)

        # define categories
        categories = []
        for unique_value in unique_values:
            # initialize the default symbol for this geometry type
            symbol = QgsSymbol.defaultSymbol(layer.geometryType())

            # configure a symbol layer
            symbol_layer = None
            if layer.geometryType() == 0:  # Point
                layer_style = dict()
                layer_style['color'] = '%d, %d, %d' % (randrange(
                    0, 256), randrange(0, 256), randrange(0, 256))
                layer_style['size'] = str(2)
                symbol_layer = QgsSimpleMarkerSymbolLayer.create(layer_style)
            else:
                symbol = QgsLineSymbol().createSimple({})
                symbol.deleteSymbolLayer(0)
                # Line
                lineSymbol = QgsSimpleLineSymbolLayer()
                lineSymbol.setWidthUnit(2)  # Pixels
                lineSymbol.setWidth(1.5)
                lineSymbol.setColor(
                    QColor(randrange(0, 256), randrange(0, 256),
                           randrange(0, 256)))
                symbol.appendSymbolLayer(lineSymbol)

            # replace default symbol layer with the configured one
            if symbol_layer is not None:
                symbol.changeSymbolLayer(0, symbol_layer)

            # create renderer object
            category = QgsRendererCategory(unique_value, symbol,
                                           str(unique_value))
            # entry for the list of category items
            categories.append(category)

        # create renderer object
        renderer = QgsCategorizedSymbolRenderer(field, categories)

        # assign the created renderer to the layer
        if renderer is not None:
            layer.setRenderer(renderer)
 def setStyleLayer(self, layer):
     if self.dlg.checkBox_mask.isChecked():  # only border
         if layer.geometryType(
         ) == QgsWkbTypes.PolygonGeometry or layer.geometryType(
         ) == QgsWkbTypes.LineGeometry:
             properties = {
                 'color': self.mColor.name(),
                 'outline_width': '0.6'
             }
             symbol_layer = QgsSimpleLineSymbolLayer.create(properties)
             layer.renderer().symbols(
                 QgsRenderContext())[0].changeSymbolLayer(0, symbol_layer)
         elif layer.geometryType() == QgsWkbTypes.PointGeometry:
             properties = {
                 'size': '2',
                 'color': self.mColor.name(),
                 'outline_color': self.mColor.name(),
                 'outline_width': '0.6'
             }
             symbol_layer = QgsSimpleMarkerSymbolLayer.create(properties)
             layer.renderer().symbols(
                 QgsRenderContext())[0].changeSymbolLayer(0, symbol_layer)
     else:
         if self.colorIndex > (len(self.colorValues) - 1):
             self.colorIndex = 0
         color = QColor(self.colorValues[self.colorIndex])
         self.colorIndex += 1
         if layer.geometryType() == QgsWkbTypes.PolygonGeometry:
             layer.renderer().symbols(
                 QgsRenderContext())[0].symbolLayer(0).setStrokeWidth(0.4)
             layer.renderer().symbols(
                 QgsRenderContext())[0].symbolLayer(0).setBrushStyle(
                     Qt.Dense4Pattern)
             layer.renderer().symbols(
                 QgsRenderContext())[0].symbolLayer(0).setFillColor(color)
             layer.setFeatureBlendMode(13)
     self.iface.layerTreeView().refreshLayerSymbology(layer.id())