def testConvert(self): """ test renderer conversion """ # same type, should clone r = QgsPointDisplacementRenderer() self._setProperties(r) c = QgsPointDisplacementRenderer.convertFromRenderer(r) self._checkProperties(c) # test conversion from cluster renderer r = QgsPointClusterRenderer() r.setTolerance(5) r.setToleranceUnit(QgsUnitTypes.RenderMapUnits) r.setToleranceMapUnitScale(QgsMapUnitScale(5, 15)) m = QgsMarkerSymbol() m.setColor(QColor(0, 255, 0)) r.setClusterSymbol(m) sym1 = QgsMarkerSymbol.createSimple({'color': '#fdbf6f'}) renderer = QgsSingleSymbolRenderer(sym1) r.setEmbeddedRenderer(renderer) # want to keep as many settings as possible when converting between cluster and displacement renderer d = QgsPointDisplacementRenderer.convertFromRenderer(r) self.assertEqual(d.tolerance(), 5) self.assertEqual(d.toleranceUnit(), QgsUnitTypes.RenderMapUnits) self.assertEqual(d.toleranceMapUnitScale(), QgsMapUnitScale(5, 15)) self.assertEqual(d.centerSymbol().color(), QColor(0, 255, 0)) self.assertEqual(d.embeddedRenderer().symbol().color().name(), '#fdbf6f')
def testMultiPoint(self): """ Test multipoint handling """ layer = QgsVectorLayer('Multipoint?field=cat:string', '', 'memory') self.assertTrue(layer.isValid()) f = QgsFeature(layer.fields()) f.setAttributes(['a']) f.setGeometry(QgsGeometry.fromWkt('MultiPoint(5 5, 5 6, 9 9)')) layer.dataProvider().addFeature(f) f.setAttributes(['b']) f.setGeometry(QgsGeometry.fromWkt('MultiPoint(2 1, 2 2, 5 5)')) layer.dataProvider().addFeature(f) f.setAttributes(['c']) f.setGeometry(QgsGeometry.fromWkt('MultiPoint(9 1)')) layer.dataProvider().addFeature(f) renderer = QgsPointDisplacementRenderer() sym1 = QgsMarkerSymbol.createSimple({ 'color': '#ff00ff', 'size': '3', 'outline_style': 'no' }) sym_renderer = QgsCategorizedSymbolRenderer() sym_renderer.setClassAttribute('cat') sym1.setColor(QColor(255, 0, 0)) sym_renderer.addCategory(QgsRendererCategory('a', sym1.clone(), 'a')) sym1.setColor(QColor(0, 255, 0)) sym_renderer.addCategory(QgsRendererCategory('b', sym1.clone(), 'b')) sym1.setColor(QColor(0, 0, 255)) sym_renderer.addCategory(QgsRendererCategory('c', sym1.clone(), 'c')) renderer.setEmbeddedRenderer(sym_renderer) renderer.setCircleRadiusAddition(2) renderer.setCircleWidth(1) renderer.setCircleColor(QColor(0, 0, 0)) renderer.setCenterSymbol( QgsMarkerSymbol.createSimple({ 'color': '#ffff00', 'size': '3', 'outline_style': 'no' })) renderer.setToleranceUnit(QgsUnitTypes.RenderMapUnits) renderer.setTolerance(2) layer.setRenderer(renderer) rendered_layers = [layer] mapsettings = QgsMapSettings() mapsettings.setOutputSize(QSize(400, 400)) mapsettings.setOutputDpi(96) mapsettings.setExtent(QgsRectangle(0, 0, 10, 10)) mapsettings.setLayers(rendered_layers) renderchecker = QgsMultiRenderChecker() renderchecker.setMapSettings(mapsettings) renderchecker.setControlPathPrefix('displacement_renderer') renderchecker.setControlName('expected_displacement_multipoint') result = renderchecker.runTest('expected_displacement_multipoint') self.report += renderchecker.report() self.assertTrue(result)