def buildRenderer(self, xAttr, yAttr): color = QColor(randint(0, 255), randint(0, 255), randint(0, 255)) symbol = QgsMarkerSymbolV2.createSimple({}) symbol.deleteSymbolLayer(0) prop = QgsDataDefined() prop.setField("size") prop.setActive(True) symbol_layer = QgsSimpleMarkerSymbolLayerV2() symbol_layer.setColor(color) symbol_layer.setOutputUnit(QgsSymbolV2.MapUnit) symbol_layer.setDataDefinedProperty("size", prop) symbol.appendSymbolLayer(symbol_layer) symbol_layer = QgsVectorFieldSymbolLayer() symbol_layer.setColor(color) symbol_layer.VectorFieldType(QgsVectorFieldSymbolLayer.Cartesian) symbol_layer.AngleUnits(QgsVectorFieldSymbolLayer.Degrees) symbol_layer.setScale(2.0) symbol_layer.setXAttribute(xAttr) symbol_layer.setYAttribute(yAttr) subSymbol = self.subRenderer(color) symbol_layer.setSubSymbol(subSymbol) symbol.appendSymbolLayer(symbol_layer) renderer = QgsSingleSymbolRendererV2(symbol) return renderer
def testPolarRadians(self): # test rendering s = QgsMarkerSymbol() s.deleteSymbolLayer(0) field_marker = QgsVectorFieldSymbolLayer() field_marker.setXAttribute('x') field_marker.setYAttribute('y') field_marker.setVectorFieldType(QgsVectorFieldSymbolLayer.Polar) field_marker.setScale(1) field_marker.setAngleUnits(QgsVectorFieldSymbolLayer.Radians) field_marker.setSubSymbol(QgsLineSymbol.createSimple({'color': '#ff0000', 'width': '2'})) s.appendSymbolLayer(field_marker.clone()) g = QgsGeometry.fromWkt('Point(5 4)') fields = QgsFields() fields.append(QgsField('x', QVariant.Double)) fields.append(QgsField('y', QVariant.Double)) f = QgsFeature(fields) f.setAttributes([6, 135]) f.setGeometry(g) rendered_image = self.renderFeature(s, f) assert self.imageCheck('radians_polar', 'radians_polar', rendered_image)
def testMapRotation(self): # test rendering with map rotation s = QgsMarkerSymbol() s.deleteSymbolLayer(0) field_marker = QgsVectorFieldSymbolLayer() field_marker.setXAttribute('x') field_marker.setYAttribute('y') field_marker.setScale(4) field_marker.setSubSymbol(QgsLineSymbol.createSimple({'color': '#ff0000', 'width': '2'})) s.appendSymbolLayer(field_marker.clone()) g = QgsGeometry.fromWkt('Point(5 4)') fields = QgsFields() fields.append(QgsField('x', QVariant.Double)) fields.append(QgsField('y', QVariant.Double)) f = QgsFeature(fields) f.setAttributes([2, 3]) f.setGeometry(g) rendered_image = self.renderFeature(s, f, map_rotation=45) assert self.imageCheck('rotated_map', 'rotated_map', rendered_image)