mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-05 00:09:32 -04:00
Add tests for rendering with extent buffer
This commit is contained in:
parent
e4c1598720
commit
98d20ee479
@ -16,21 +16,27 @@ from qgis.PyQt.QtCore import QDir, QSize
|
||||
from qgis.PyQt.QtGui import QColor
|
||||
|
||||
from qgis.core import (
|
||||
edit,
|
||||
Qgis,
|
||||
QgsCategorizedSymbolRenderer,
|
||||
QgsCentroidFillSymbolLayer,
|
||||
QgsCoordinateReferenceSystem,
|
||||
QgsFeature,
|
||||
QgsFeatureRendererGenerator,
|
||||
QgsFillSymbol,
|
||||
QgsGeometry,
|
||||
QgsGeometryGeneratorSymbolLayer,
|
||||
QgsLineSymbol,
|
||||
QgsMapClippingRegion,
|
||||
QgsMapSettings,
|
||||
QgsMarkerSymbol,
|
||||
QgsPointXY,
|
||||
QgsRectangle,
|
||||
QgsRendererCategory,
|
||||
QgsRuleBasedRenderer,
|
||||
QgsSingleSymbolRenderer,
|
||||
QgsSymbol,
|
||||
QgsRenderContext,
|
||||
QgsVectorLayer,
|
||||
)
|
||||
import unittest
|
||||
@ -927,6 +933,100 @@ class TestQgsVectorLayerRenderer(QgisTestCase):
|
||||
)
|
||||
)
|
||||
|
||||
def testRenderWithExtentBuffer(self):
|
||||
def createFeature(x: float, y: float) -> QgsFeature:
|
||||
feat = QgsFeature()
|
||||
feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(x, y)))
|
||||
|
||||
return feat
|
||||
|
||||
def createSymbol() -> QgsMarkerSymbol:
|
||||
sym = QgsMarkerSymbol.createSimple({'color': '#33aa33', 'outline_style': 'no', 'size': '5'})
|
||||
return sym
|
||||
|
||||
def createGeometryGenerator() -> QgsGeometryGeneratorSymbolLayer:
|
||||
geomgen = QgsGeometryGeneratorSymbolLayer.create(
|
||||
{'geometryModifier': 'make_point($x + if($x <= 0, 5, -5), $y)'}
|
||||
)
|
||||
geomgen.setSymbolType(QgsSymbol.SymbolType.Marker)
|
||||
geomgen.setSubSymbol(QgsMarkerSymbol.createSimple({'color': '#ff00ff', 'outline_style': 'no', 'size': '6'}))
|
||||
|
||||
return geomgen
|
||||
|
||||
point_layer = QgsVectorLayer("Point?crs=EPSG:3857", "point layer", "memory")
|
||||
|
||||
with edit(point_layer):
|
||||
point_layer.addFeature(createFeature(-15.999, 8))
|
||||
point_layer.addFeature(createFeature(-16.001, 6))
|
||||
point_layer.addFeature(createFeature(-13, 4))
|
||||
point_layer.addFeature(createFeature(-10, 2))
|
||||
point_layer.addFeature(createFeature(17, 0))
|
||||
point_layer.addFeature(createFeature(4, -2))
|
||||
point_layer.addFeature(createFeature(15.999, -4))
|
||||
point_layer.addFeature(createFeature(17, -6))
|
||||
point_layer.addFeature(createFeature(15.999, -8))
|
||||
|
||||
sym1 = createSymbol()
|
||||
sym1.appendSymbolLayer(createGeometryGenerator())
|
||||
|
||||
renderer1 = QgsSingleSymbolRenderer(sym1)
|
||||
point_layer.setRenderer(renderer1)
|
||||
|
||||
mapsettings = QgsMapSettings()
|
||||
mapsettings.setOutputSize(QSize(400, 400))
|
||||
mapsettings.setOutputDpi(96)
|
||||
mapsettings.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:3857'))
|
||||
mapsettings.setExtent(QgsRectangle(-10, -10, 10, 10))
|
||||
mapsettings.setLayers([point_layer])
|
||||
|
||||
self.assertTrue(
|
||||
self.render_map_settings_check(
|
||||
'buffer_extent_zero',
|
||||
'buffer_extent_zero',
|
||||
mapsettings,
|
||||
)
|
||||
)
|
||||
|
||||
sym2 = createSymbol()
|
||||
sym2.appendSymbolLayer(createGeometryGenerator())
|
||||
sym2.setExtentBuffer(1)
|
||||
|
||||
renderer2 = QgsSingleSymbolRenderer(sym2)
|
||||
point_layer.setRenderer(renderer2)
|
||||
|
||||
self.assertTrue(
|
||||
self.render_map_settings_check(
|
||||
'buffer_extent',
|
||||
'buffer_extent',
|
||||
mapsettings,
|
||||
)
|
||||
)
|
||||
|
||||
def testRenderWithExtentBufferNegative(self):
|
||||
poly_layer = QgsVectorLayer(os.path.join(TEST_DATA_DIR, 'polys.shp'))
|
||||
self.assertTrue(poly_layer.isValid())
|
||||
|
||||
sym1 = QgsFillSymbol.createSimple({'color': '#ff00ff', 'outline_color': '#000000', 'outline_width': '1'})
|
||||
sym1.setExtentBuffer(-13.5)
|
||||
|
||||
renderer = QgsSingleSymbolRenderer(sym1)
|
||||
poly_layer.setRenderer(renderer)
|
||||
|
||||
mapsettings = QgsMapSettings()
|
||||
mapsettings.setOutputSize(QSize(400, 400))
|
||||
mapsettings.setOutputDpi(96)
|
||||
mapsettings.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:3857'))
|
||||
mapsettings.setExtent(QgsRectangle(-13875783.2, 2266009.4, -8690110.7, 6673344.5))
|
||||
mapsettings.setLayers([poly_layer])
|
||||
|
||||
self.assertTrue(
|
||||
self.render_map_settings_check(
|
||||
'negative_buffer_extent',
|
||||
'negative_buffer_extent',
|
||||
mapsettings
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
BIN
tests/testdata/control_images/vectorlayerrenderer/expected_buffer_extent/expected_buffer_extent.png
vendored
Normal file
BIN
tests/testdata/control_images/vectorlayerrenderer/expected_buffer_extent/expected_buffer_extent.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 9.0 KiB |
Loading…
x
Reference in New Issue
Block a user