def testConvertFromEmbedded(self): """ Test converting an embedded symbol renderer to a rule based renderer """ points_layer = QgsVectorLayer('Point', 'Polys', 'memory') f = QgsFeature() f.setGeometry(QgsGeometry.fromWkt('Point(-100 30)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({'name': 'triangle', 'size': 10, 'color': '#ff0000', 'outline_style': 'no'})) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-110 40)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({'name': 'square', 'size': 7, 'color': '#00ff00', 'outline_style': 'no'})) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-90 50)')) f.setEmbeddedSymbol(None) self.assertTrue(points_layer.dataProvider().addFeature(f)) renderer = QgsEmbeddedSymbolRenderer(defaultSymbol=QgsMarkerSymbol.createSimple({'name': 'star', 'size': 10, 'color': '#ff00ff', 'outline_style': 'no'})) points_layer.setRenderer(renderer) rule_based = QgsRuleBasedRenderer.convertFromRenderer(renderer, points_layer) self.assertEqual(len(rule_based.rootRule().children()), 3) rule_0 = rule_based.rootRule().children()[0] self.assertEqual(rule_0.filterExpression(), '$id=1') self.assertEqual(rule_0.label(), '1') self.assertEqual(rule_0.symbol().color().name(), '#ff0000') rule_1 = rule_based.rootRule().children()[1] self.assertEqual(rule_1.filterExpression(), '$id=2') self.assertEqual(rule_1.label(), '2') self.assertEqual(rule_1.symbol().color().name(), '#00ff00') rule_2 = rule_based.rootRule().children()[2] self.assertEqual(rule_2.filterExpression(), 'ELSE') self.assertEqual(rule_2.label(), 'All other features') self.assertEqual(rule_2.symbol().color().name(), '#ff00ff')
def testPoints(self): points_layer = QgsVectorLayer('Point', 'Polys', 'memory') f = QgsFeature() f.setGeometry(QgsGeometry.fromWkt('Point(-100 30)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({'name': 'triangle', 'size': 10, 'color': '#ff0000', 'outline_style': 'no'})) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-110 40)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({'name': 'square', 'size': 7, 'color': '#00ff00', 'outline_style': 'no'})) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-90 50)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({'name': 'circle', 'size': 9, 'color': '#0000ff', 'outline_style': 'no'})) self.assertTrue(points_layer.dataProvider().addFeature(f)) renderer = QgsEmbeddedSymbolRenderer(defaultSymbol=QgsMarkerSymbol.createSimple({'name': 'star', 'size': 10, 'color': '#ff0000', 'outline_style': 'no'})) points_layer.setRenderer(renderer) self.mapsettings.setLayers([points_layer]) renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(self.mapsettings) renderchecker.setControlPathPrefix('embedded') renderchecker.setControlName('expected_embedded_points') res = renderchecker.runTest('embedded_points') TestQgsEmbeddedSymbolRenderer.report += renderchecker.report() self.assertTrue(res)
def testLines(self): line_layer = QgsVectorLayer('LineString', 'Polys', 'memory') f = QgsFeature() f.setGeometry(QgsGeometry.fromWkt('LineString(-100 30, -120 30)')) f.setEmbeddedSymbol(QgsLineSymbol.createSimple({'line_width': 3, 'line_color': '#ff0000'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('LineString(-110 40, -130 40)')) f.setEmbeddedSymbol(QgsLineSymbol.createSimple({'line_width': 1.5, 'line_color': '#00ff00'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('LineString(-90 50, -140 50)')) f.setEmbeddedSymbol( QgsLineSymbol.createSimple({'line_width': 2, 'line_color': '#0000ff', 'line_style': 'dash'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) renderer = QgsEmbeddedSymbolRenderer(defaultSymbol=QgsLineSymbol.createSimple({'line_width': 10, 'line_color': '#ff0000'})) line_layer.setRenderer(renderer) self.mapsettings.setLayers([line_layer]) renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(self.mapsettings) renderchecker.setControlPathPrefix('embedded') renderchecker.setControlName('expected_embedded_lines') res = renderchecker.runTest('embedded_lines') TestQgsEmbeddedSymbolRenderer.report += renderchecker.report() self.assertTrue(res)
def testFills(self): line_layer = QgsVectorLayer('Polygon', 'Polys', 'memory') f = QgsFeature() f.setGeometry(QgsGeometry.fromWkt('Polygon((-100 30, -120 30, -110 20, -100 30))')) f.setEmbeddedSymbol(QgsFillSymbol.createSimple({'color': '#ff0000', 'outline_style': 'no'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Polygon((-110 40, -130 40, -120 50, -110 40))')) f.setEmbeddedSymbol(QgsFillSymbol.createSimple({'color': '#00ff00', 'outline_style': 'no'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Polygon((-90 50, -140 50, -110 60, -90 50))')) f.setEmbeddedSymbol(QgsFillSymbol.createSimple({'color': '#0000ff', 'outline_style': 'no'})) self.assertTrue(line_layer.dataProvider().addFeature(f)) renderer = QgsEmbeddedSymbolRenderer(defaultSymbol=QgsFillSymbol.createSimple({'color': '#ffff00', 'outline_style': 'no'})) line_layer.setRenderer(renderer) self.mapsettings.setLayers([line_layer]) renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(self.mapsettings) renderchecker.setControlPathPrefix('embedded') renderchecker.setControlName('expected_embedded_polys') res = renderchecker.runTest('embedded_polys') TestQgsEmbeddedSymbolRenderer.report += renderchecker.report() self.assertTrue(res)
def testConvertFromEmbedded(self): """ Test converting an embedded symbol renderer to a categorized renderer """ points_layer = QgsVectorLayer('Point', 'Polys', 'memory') f = QgsFeature() f.setGeometry(QgsGeometry.fromWkt('Point(-100 30)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({ 'name': 'triangle', 'size': 10, 'color': '#ff0000', 'outline_style': 'no' })) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-110 40)')) f.setEmbeddedSymbol( QgsMarkerSymbol.createSimple({ 'name': 'square', 'size': 7, 'color': '#00ff00', 'outline_style': 'no' })) self.assertTrue(points_layer.dataProvider().addFeature(f)) f.setGeometry(QgsGeometry.fromWkt('Point(-90 50)')) f.setEmbeddedSymbol(None) self.assertTrue(points_layer.dataProvider().addFeature(f)) renderer = QgsEmbeddedSymbolRenderer( defaultSymbol=QgsMarkerSymbol.createSimple({ 'name': 'star', 'size': 10, 'color': '#ff00ff', 'outline_style': 'no' })) points_layer.setRenderer(renderer) categorized = QgsCategorizedSymbolRenderer.convertFromRenderer( renderer, points_layer) self.assertEqual(categorized.classAttribute(), '$id') self.assertEqual(len(categorized.categories()), 3) cc = categorized.categories()[0] self.assertEqual(cc.value(), 1) self.assertEqual(cc.label(), '1') self.assertEqual(cc.symbol().color().name(), '#ff0000') cc = categorized.categories()[1] self.assertEqual(cc.value(), 2) self.assertEqual(cc.label(), '2') self.assertEqual(cc.symbol().color().name(), '#00ff00') cc = categorized.categories()[2] self.assertEqual(cc.value(), None) self.assertEqual(cc.label(), '') self.assertEqual(cc.symbol().color().name(), '#ff00ff')