def renderPolygon(self, output_polygon): # create a black dotted outline symbol layer symbol = QgsFillSymbol().createSimple({ 'color': 'grey', 'outline_width': '0' }) symbol.setOpacity(0.2) # create renderer and change the symbol layer in its symbol output_polygon.renderer().setSymbol(symbol) # add catchment to the canvas QgsProject.instance().addMapLayer(output_polygon)
def testOpacityWithDataDefinedColor(self): poly_shp = os.path.join(TEST_DATA_DIR, 'polys.shp') poly_layer = QgsVectorLayer(poly_shp, 'Polys', 'ogr') self.assertTrue(poly_layer.isValid()) s = QgsFillSymbol() s.deleteSymbolLayer(0) random_fill = QgsRandomMarkerFillSymbolLayer(1, seed=481523) marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Circle, 6) marker.setColor(QColor(255, 0, 0)) marker.setStrokeWidth(1) marker.setDataDefinedProperty( QgsSymbolLayer.PropertyFillColor, QgsProperty.fromExpression("if(Name='Dam', 'red', 'green')")) marker.setDataDefinedProperty( QgsSymbolLayer.PropertyStrokeColor, QgsProperty.fromExpression("if(Name='Dam', 'magenta', 'blue')")) marker_symbol = QgsMarkerSymbol() marker_symbol.changeSymbolLayer(0, marker) marker_symbol.setOpacity(0.5) random_fill.setSubSymbol(marker_symbol) s.appendSymbolLayer(random_fill.clone()) s.setOpacity(0.5) poly_layer.setRenderer(QgsSingleSymbolRenderer(s)) ms = QgsMapSettings() ms.setOutputSize(QSize(400, 400)) ms.setOutputDpi(96) ms.setExtent(QgsRectangle(-118.5, 19.0, -81.4, 50.4)) ms.setLayers([poly_layer]) # Test rendering renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(ms) renderchecker.setControlPathPrefix('symbol_randommarkerfill') renderchecker.setControlName('expected_randommarker_opacityddcolor') res = renderchecker.runTest('expected_randommarker_opacityddcolor') self.report += renderchecker.report() self.assertTrue(res)
def testOpacityWithDataDefinedColor(self): poly_shp = os.path.join(TEST_DATA_DIR, 'polys.shp') poly_layer = QgsVectorLayer(poly_shp, 'Polys', 'ogr') self.assertTrue(poly_layer.isValid()) layer = QgsSimpleFillSymbolLayer() layer.setStrokeStyle(Qt.NoPen) layer.setColor(QColor(200, 250, 50)) layer.setDataDefinedProperty( QgsSymbolLayer.PropertyFillColor, QgsProperty.fromExpression("if(Name='Dam', 'red', 'green')")) layer.setDataDefinedProperty( QgsSymbolLayer.PropertyStrokeColor, QgsProperty.fromExpression("if(Name='Dam', 'magenta', 'blue')")) symbol = QgsFillSymbol() symbol.changeSymbolLayer(0, layer) symbol.setOpacity(0.5) poly_layer.setRenderer(QgsSingleSymbolRenderer(symbol)) ms = QgsMapSettings() ms.setOutputSize(QSize(400, 400)) ms.setOutputDpi(96) ms.setExtent(QgsRectangle(-118.5, 19.0, -81.4, 50.4)) ms.setLayers([poly_layer]) # Test rendering renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(ms) renderchecker.setControlPathPrefix('symbol_simplefill') renderchecker.setControlName('expected_simplefill_opacityddcolor') res = renderchecker.runTest('expected_simplefill_opacityddcolor') self.report += renderchecker.report() self.assertTrue(res)