PyQGIS使用SVG作为点符号渲染
这个SVG的图像长这样:
使用下面代码可以将默认的点符号替换为自定义的SVG图片:
# 需要的包
from qgis.core import (
QgsSvgMarkerSymbolLayer, QgsMarkerSymbol, QgsSingleSymbolRenderer
)
from qgis.PyQt.QtCore import QPointF
# vl是一个QgsVectorLayer的对象
svg_size = 10
svg = QgsSvgMarkerSymbolLayer("***.svg") # 加载SVG的路径
svg.setSize(svg_size) # 设置大小
svg.setOffset(QPointF(0, -svg_size // 2)) # 设置偏移,因为这个SVG是定位点是在底部的
symbol = QgsMarkerSymbol()
symbol.appendSymbolLayer(svg) # 添加SVG的标记
symbol.deleteSymbolLayer(0) # 删除默认的原始标记
# print(symbol.symbolLayers())
renderer = QgsSingleSymbolRenderer(symbol)
vl.setRenderer(renderer)
vl.triggerRepaint()
结果如下: