def testSizeUnit(self): # test sizeUnit and setSizeUnit # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderMillimeters) markerSymbol.setSizeUnit(QgsUnitTypes.RenderMapUnits) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderMapUnits) self.assertEqual(markerSymbol.symbolLayer(0).sizeUnit(), QgsUnitTypes.RenderMapUnits) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) # should now be mixed size units self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderUnknownUnit) markerSymbol.setSizeUnit(QgsUnitTypes.RenderPixels) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderPixels) # all layers should have size unit set self.assertEqual(markerSymbol.symbolLayer(0).sizeUnit(), QgsUnitTypes.RenderPixels) self.assertEqual(markerSymbol.symbolLayer(1).sizeUnit(), QgsUnitTypes.RenderPixels) self.assertEqual(markerSymbol.symbolLayer(2).sizeUnit(), QgsUnitTypes.RenderPixels)
def testSizeMapUnitScale(self): # test sizeMapUnitScale and setSizeMapUnitScale # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.symbolLayer(0).setSizeMapUnitScale(QgsMapUnitScale(10000, 20000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(10000, 20000)) markerSymbol.setSizeMapUnitScale(QgsMapUnitScale(1000, 2000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) self.assertEqual(markerSymbol.symbolLayer(0).sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) # should take first layer's map unit scale self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) markerSymbol.setSizeMapUnitScale(QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) # all layers should have size unit set self.assertEqual(markerSymbol.symbolLayer(0).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.symbolLayer(1).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.symbolLayer(2).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000))
def testAngle(self): # test angle and setAngle # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=90)) self.assertEqual(markerSymbol.angle(), 90) markerSymbol.setAngle(100) self.assertEqual(markerSymbol.angle(), 100) self.assertEqual(markerSymbol.symbolLayer(0).angle(), 100) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=130)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=150)) # should take first layer's angle self.assertEqual(markerSymbol.angle(), 100) markerSymbol.setAngle(10) self.assertEqual(markerSymbol.angle(), 10) # layer angles should maintain relative angle self.assertEqual(markerSymbol.symbolLayer(0).angle(), 10) self.assertEqual(markerSymbol.symbolLayer(1).angle(), 40) self.assertEqual(markerSymbol.symbolLayer(2).angle(), 60)
def testSize(self): # test size and setSize # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) self.assertEqual(markerSymbol.size(), 10) markerSymbol.setSize(20) self.assertEqual(markerSymbol.size(), 20) self.assertEqual(markerSymbol.symbolLayer(0).size(), 20) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) self.assertEqual(markerSymbol.size(), 30) markerSymbol.setSize(3) self.assertEqual(markerSymbol.size(), 3) # layer sizes should maintain relative size self.assertEqual(markerSymbol.symbolLayer(0).size(), 2) self.assertEqual(markerSymbol.symbolLayer(1).size(), 1) self.assertEqual(markerSymbol.symbolLayer(2).size(), 3)
def testSize(self): # test size and setSize ms = QgsMapSettings() extent = QgsRectangle(100, 200, 100, 200) ms.setExtent(extent) ms.setOutputSize(QSize(400, 400)) context = QgsRenderContext.fromMapSettings(ms) context.setScaleFactor(96 / 25.4) # 96 DPI ms.setExtent(QgsRectangle(100, 150, 100, 150)) ms.setOutputDpi(ms.outputDpi() * 2) context2 = QgsRenderContext.fromMapSettings(ms) context2.setScaleFactor(300 / 25.4) # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) self.assertEqual(markerSymbol.size(), 10) self.assertAlmostEqual(markerSymbol.size(context), 37.795275590551185, 3) self.assertAlmostEqual(markerSymbol.size(context2), 118.11023622047244, 3) markerSymbol.setSize(20) self.assertEqual(markerSymbol.size(), 20) self.assertEqual(markerSymbol.symbolLayer(0).size(), 20) self.assertAlmostEqual(markerSymbol.size(context), 75.59055118, 3) self.assertAlmostEqual(markerSymbol.size(context2), 236.2204724409449, 3) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) self.assertEqual(markerSymbol.size(), 30) self.assertAlmostEqual(markerSymbol.size(context), 113.38582677165356, 3) self.assertAlmostEqual(markerSymbol.size(context2), 354.33070866141736, 3) markerSymbol.setSize(3) self.assertEqual(markerSymbol.size(), 3) # layer sizes should maintain relative size self.assertEqual(markerSymbol.symbolLayer(0).size(), 2) self.assertEqual(markerSymbol.symbolLayer(1).size(), 1) self.assertEqual(markerSymbol.symbolLayer(2).size(), 3) # symbol layer in different size markerSymbol.symbolLayer(1).setSize(15) self.assertAlmostEqual(markerSymbol.size(context), 56.69291338582678, 3) self.assertAlmostEqual(markerSymbol.size(context2), 177.16535433070868, 3) markerSymbol.symbolLayer(1).setSizeUnit(QgsUnitTypes.RenderPixels) self.assertAlmostEqual(markerSymbol.size(context), 15, 3) self.assertAlmostEqual(markerSymbol.size(context2), 35.43307086614173, 3) markerSymbol.symbolLayer(1).setSize(45) self.assertAlmostEqual(markerSymbol.size(context), 45, 3) self.assertAlmostEqual(markerSymbol.size(context2), 45, 3)
def testSizeUnit(self): # test sizeUnit and setSizeUnit # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderMillimeters) markerSymbol.setSizeUnit(QgsUnitTypes.RenderMapUnits) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderMapUnits) self.assertEqual( markerSymbol.symbolLayer(0).sizeUnit(), QgsUnitTypes.RenderMapUnits) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) # should now be mixed size units self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderUnknownUnit) markerSymbol.setSizeUnit(QgsUnitTypes.RenderPixels) self.assertEqual(markerSymbol.sizeUnit(), QgsUnitTypes.RenderPixels) # all layers should have size unit set self.assertEqual( markerSymbol.symbolLayer(0).sizeUnit(), QgsUnitTypes.RenderPixels) self.assertEqual( markerSymbol.symbolLayer(1).sizeUnit(), QgsUnitTypes.RenderPixels) self.assertEqual( markerSymbol.symbolLayer(2).sizeUnit(), QgsUnitTypes.RenderPixels)
def testSize(self): # test size and setSize # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) self.assertEqual(markerSymbol.size(), 10) markerSymbol.setSize(20) self.assertEqual(markerSymbol.size(), 20) self.assertEqual(markerSymbol.symbolLayer(0).size(), 20) # add additional layers markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) self.assertEqual(markerSymbol.size(), 30) markerSymbol.setSize(3) self.assertEqual(markerSymbol.size(), 3) # layer sizes should maintain relative size self.assertEqual(markerSymbol.symbolLayer(0).size(), 2) self.assertEqual(markerSymbol.symbolLayer(1).size(), 1) self.assertEqual(markerSymbol.symbolLayer(2).size(), 3)
def testAngle(self): # test angle and setAngle # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=90)) self.assertEqual(markerSymbol.angle(), 90) markerSymbol.setAngle(100) self.assertEqual(markerSymbol.angle(), 100) self.assertEqual(markerSymbol.symbolLayer(0).angle(), 100) # add additional layers markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=130)) markerSymbol.appendSymbolLayer( QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10, angle=150)) # should take first layer's angle self.assertEqual(markerSymbol.angle(), 100) markerSymbol.setAngle(10) self.assertEqual(markerSymbol.angle(), 10) # layer angles should maintain relative angle self.assertEqual(markerSymbol.symbolLayer(0).angle(), 10) self.assertEqual(markerSymbol.symbolLayer(1).angle(), 40) self.assertEqual(markerSymbol.symbolLayer(2).angle(), 60)
def testSizeMapUnitScale(self): # test sizeMapUnitScale and setSizeMapUnitScale # create a marker symbol with a single layer markerSymbol = QgsMarkerSymbol() markerSymbol.deleteSymbolLayer(0) markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.symbolLayer(0).setSizeMapUnitScale(QgsMapUnitScale(10000, 20000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(10000, 20000)) markerSymbol.setSizeMapUnitScale(QgsMapUnitScale(1000, 2000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) self.assertEqual(markerSymbol.symbolLayer(0).sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) # add additional layers markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=10)) markerSymbol.appendSymbolLayer(QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase.Star, color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0), size=30)) # should take first layer's map unit scale self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(1000, 2000)) markerSymbol.setSizeMapUnitScale(QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) # all layers should have size unit set self.assertEqual(markerSymbol.symbolLayer(0).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.symbolLayer(1).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000)) self.assertEqual(markerSymbol.symbolLayer(2).sizeMapUnitScale(), QgsMapUnitScale(3000, 4000))
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)