Ejemplo n.º 1
0
 def setStyleIcon(self, svg):
     #Dato il path di un'icona svg la setta come stile per le sole features selezionate nel layer dei beni
     vlayer = self.getLayerBeni()
     if len(vlayer.selectedFeatures()) == 1:
         svgStyle = {
             "name": svg,
             "outline": "#000000",
             "size": "15",
         }
         svgLayer = QgsSvgMarkerSymbolLayer.create(svgStyle)
         svgSymbol = QgsMarkerSymbol()
         svgSymbol.changeSymbolLayer(0, svgLayer)
         symbol = QgsSymbol.defaultSymbol(vlayer.geometryType())
         symbol.setColor(QColor("Blue"))
         centroid = QgsCentroidFillSymbolLayer()
         centroid.setSubSymbol(svgSymbol)
         selectedSymbol = QgsFillSymbol()
         selectedSymbol.changeSymbolLayer(0, centroid)
         renderer = QgsRuleBasedRenderer(symbol)
         rule = QgsRuleBasedRenderer.Rule(selectedSymbol,
                                          label="Selected",
                                          filterExp="is_selected()")
         renderer.rootRule().appendChild(rule)
         vlayer.setRenderer(renderer)
         vlayer.triggerRepaint()
    def testQgsCentroidFillSymbolLayer(self):
        """
        Create a new style from a .sld file and match test
        """
        mTestName = 'QgsCentroidFillSymbolLayer'
        mFilePath = QDir.toNativeSeparators('%s/symbol_layer/%s.sld' %
                                            (unitTestDataPath(), mTestName))

        mDoc = QDomDocument(mTestName)
        mFile = QFile(mFilePath)
        mFile.open(QIODevice.ReadOnly)
        mDoc.setContent(mFile, True)
        mFile.close()
        mSymbolLayer = QgsCentroidFillSymbolLayer.createFromSld(
            mDoc.elementsByTagName('PointSymbolizer').item(0).toElement())

        mExpectedValue = type(QgsCentroidFillSymbolLayer())
        mValue = type(mSymbolLayer)
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = QgsSimpleMarkerSymbolLayerBase.Star
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).shape()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = '#55aaff'
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).color().name()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = '#00ff00'
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).strokeColor().name()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = False
        mValue = mSymbolLayer.pointOnAllParts()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        ctx = QgsRenderContext()
        self.assertCountEqual(mSymbolLayer.usedAttributes(ctx), {})

        # test colors, need to make sure colors are passed/retrieved from subsymbol
        mSymbolLayer.setColor(QColor(150, 50, 100))
        self.assertEqual(mSymbolLayer.color(), QColor(150, 50, 100))
        self.assertEqual(mSymbolLayer.subSymbol().color(),
                         QColor(150, 50, 100))
        mSymbolLayer.subSymbol().setColor(QColor(250, 150, 200))
        self.assertEqual(mSymbolLayer.subSymbol().color(),
                         QColor(250, 150, 200))
        self.assertEqual(mSymbolLayer.color(), QColor(250, 150, 200))
Ejemplo n.º 3
0
            def createRenderer(self):
                renderer = QgsCategorizedSymbolRenderer()
                renderer.setClassAttribute('Value < 12')

                cf1 = QgsCentroidFillSymbolLayer()
                cf1.setSubSymbol(
                    QgsMarkerSymbol.createSimple({
                        'color': '#aa1111',
                        'outline_style': 'no',
                        'size': '8'
                    }))
                sym1 = QgsFillSymbol([cf1])

                cf2 = QgsCentroidFillSymbolLayer()
                cf2.setSubSymbol(
                    QgsMarkerSymbol.createSimple({
                        'color': '#1111dd',
                        'outline_style': 'no',
                        'size': '8'
                    }))
                sym2 = QgsFillSymbol([cf2])

                renderer.addCategory(QgsRendererCategory('1', sym1, '1'))
                renderer.addCategory(QgsRendererCategory('0', sym2, '0'))
                return renderer
Ejemplo n.º 4
0
            def createRenderer(self):
                renderer = QgsCategorizedSymbolRenderer()
                renderer.setClassAttribute('Name')

                cf1 = QgsCentroidFillSymbolLayer()
                cf1.setSubSymbol(
                    QgsMarkerSymbol.createSimple({
                        'color': '#33aa33',
                        'outline_style': 'no',
                        'size': '5'
                    }))
                sym1 = QgsFillSymbol([cf1])

                cf2 = QgsCentroidFillSymbolLayer()
                cf2.setSubSymbol(
                    QgsMarkerSymbol.createSimple({
                        'color': '#aa33aa',
                        'outline_style': 'no',
                        'size': '5'
                    }))
                sym2 = QgsFillSymbol([cf2])

                renderer.addCategory(QgsRendererCategory('Dam', sym1, 'Dam'))
                renderer.addCategory(QgsRendererCategory('Lake', sym2, 'Lake'))
                return renderer
Ejemplo n.º 5
0
        def testMap():
            # Parámetros mapa
            colorFill = mv.MAP_COLORS['Blau']
            colorOut = mv.MAP_CONTORNS['Blanc']
            inc = 8
            opacity = 0.55
            field = "RESULTAT"
            name = "DESCRIPCIO"
            decs = 0

            capa = leyenda.currentLayer()  # Capa de polígonos a mapificar
            geom = capa.geometryType()

            if (geom == QgsWkbTypes.GeometryType.PolygonGeometry):

                # Creamos simbología del punto centroide
                symbology = QgsCentroidFillSymbolLayer()
                symbology.setPointOnAllParts(False)
                symbology.setPointOnSurface(False)

                # Ajustamos valores del símbolo proporcional
                layerSymbol = symbology.subSymbol().symbolLayer(
                    0)  # QgsSimpleMarkerSymbolLayer
                layerSymbol.setFillColor(colorFill)
                layerSymbol.setStrokeColor(colorOut)
                layerSymbol.setStrokeStyle(Qt.SolidLine)
                layerSymbol.setStrokeWidth(1.0)
                layerSymbol.setStrokeWidthUnit(QgsUnitTypes.RenderPixels)
                expr = calcExpr(field, inc)
                prop = QgsProperty.fromExpression(expr)
                layerSymbol.setDataDefinedProperty(QgsSymbolLayer.PropertySize,
                                                   prop)

                # Crear símbolo y asignarle la simbología
                sym = QgsFillSymbol.createSimple({
                    'color':
                    '{}'.format(colorFill.name()),
                    'outline_color':
                    '{}'.format(colorOut.name())
                })
                sym.changeSymbolLayer(0, symbology)

                # Crear renderer y asignar a la capa
                renderer = QgsSingleSymbolRenderer(sym)
                capa.setRenderer(renderer)
                capa.setOpacity(opacity)
                expr = calcTip(field, name, decs)
                capa.setMapTipTemplate(expr)
                capa.triggerRepaint()

                return
Ejemplo n.º 6
0
    def testQgsCentroidFillSymbolLayer(self):
        """
        Create a new style from a .sld file and match test
        """
        mTestName = 'QgsCentroidFillSymbolLayer'
        mFilePath = QDir.toNativeSeparators('%s/symbol_layer/%s.sld' % (unitTestDataPath(), mTestName))

        mDoc = QDomDocument(mTestName)
        mFile = QFile(mFilePath)
        mFile.open(QIODevice.ReadOnly)
        mDoc.setContent(mFile, True)
        mFile.close()
        mSymbolLayer = QgsCentroidFillSymbolLayer.createFromSld(
            mDoc.elementsByTagName('PointSymbolizer').item(0).toElement())

        mExpectedValue = type(QgsCentroidFillSymbolLayer())
        mValue = type(mSymbolLayer)
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = QgsSimpleMarkerSymbolLayerBase.Star
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).shape()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = '#55aaff'
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).color().name()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = '#00ff00'
        mValue = mSymbolLayer.subSymbol().symbolLayer(0).strokeColor().name()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        mExpectedValue = False
        mValue = mSymbolLayer.pointOnAllParts()
        mMessage = 'Expected "%s" got "%s"' % (mExpectedValue, mValue)
        assert mExpectedValue == mValue, mMessage

        # test colors, need to make sure colors are passed/retrieved from subsymbol
        mSymbolLayer.setColor(QColor(150, 50, 100))
        self.assertEqual(mSymbolLayer.color(), QColor(150, 50, 100))
        self.assertEqual(mSymbolLayer.subSymbol().color(), QColor(150, 50, 100))
        mSymbolLayer.subSymbol().setColor(QColor(250, 150, 200))
        self.assertEqual(mSymbolLayer.subSymbol().color(), QColor(250, 150, 200))
        self.assertEqual(mSymbolLayer.color(), QColor(250, 150, 200))
Ejemplo n.º 7
0
    def calcRender(self, capa):

        renderer = None
        geom = capa.geometryType()

        if (geom == QgsWkbTypes.GeometryType.PolygonGeometry):

            # Creamos simbología del punto centroide
            symbology = QgsCentroidFillSymbolLayer()
            symbology.setPointOnAllParts(False)
            symbology.setPointOnSurface(False)

            # Ajustamos valores del símbolo proporcional
            self.setStrokeSymbology(symbology.subSymbol())

            # Crear símbolo y asignarle la simbología
            sym = QgsFillSymbol.createSimple({
                'color':
                '{}'.format(self.params.colorBase.name()),
                'outline_color':
                '{}'.format(self.params.colorContorn.name())
            })
            sym.changeSymbolLayer(0, symbology)

            # Crear renderer y asignar a la capa
            renderer = QgsSingleSymbolRenderer(sym)

            # from qgis.core import QgsDataDefinedSizeLegend
            # lgd = QgsDataDefinedSizeLegend()
            # lgd.setTitle('Titulo')
            # lgd.setClasses([
            #     QgsDataDefinedSizeLegend.SizeClass(1000, '1.000'),
            #     QgsDataDefinedSizeLegend.SizeClass(3000, '3.000'),
            #     QgsDataDefinedSizeLegend.SizeClass(6000, '6.000')])
            # lgd.setLegendType(QgsDataDefinedSizeLegend.LegendCollapsed)
            # lgd.setVerticalAlignment(QgsDataDefinedSizeLegend.AlignBottom)
            # renderer.setDataDefinedSizeLegend(lgd)

            capa.setRenderer(renderer)
            capa.setOpacity(self.params.opacity)
            capa.setMapTipTemplate(self.params.calcTip())
            capa.triggerRepaint()

        return renderer