【Qgis二次开发】在QgsVectorLayer下添加要素

【Qgis二次开发】在QgsVectorLayer下添加要素

最初的需求是在Qgis中,在QgsVectorLayer中的点下显示与之对应的影像。影像实现控制旋转、放大和缩小的功能(无需选中)。这里记录一下问题解决的过程。

尝试使用QgsMapItem绘制要素

最初的想法是使用QgsMapItem(继承于QGraphicsItem)添加到QgsMapCanvas中,然后设置其z-Value让他显示在Layer的下面,但是遇到了一些问题。
测试过程中发现:z值大于-10时,要素一直显示在layer之上;z值小于-10时,要素不见了,只有在mapcanvas刷新时闪烁一下。
这里把mapcanvas中的QGraphicsItem都拿出来看他们的z值显示如下(从items()中取出QGraphicsItem对象是按z值从大到小排序的):
在这里插入图片描述
这意味着图中值为-10的z值即为layer所在的QGraphicsItem,且该QGraphicsItem有一个背景色把视图区域都覆盖了。无奈,若不能去掉该背景颜色那就只能寻求其他的方法了。

尝试使用QgsVectorLayer图层属性中的符号化(symbol)绘制要素

在Qgis 3.6以上的版本中对应point数据的QgsVectorLayer图层可添加RasterImage的symbol(先

### 关于QGIS二次开发的教程 #### 插件开发基础 对于希望深入理解并实践QGIS插件开发者来说,可以从创建一个基本的QGIS插件模板入手[^2]。通过专用工具PB(Plugin Builder),能够快速生成所需的初始文件结构和代码框架。这不仅简化了前期准备工作,还提供了清晰的学习路径。 #### 动态加载机制 利用PR(Plugin Reloader)特性可以在不重启应用程序的情况下更新正在编辑中的自定义扩展模块。这一功能极大地提高了迭代效率,使得测试新特性和修复错误变得更加便捷高效。 #### 开发环境搭建 针对不同版本的QGIS平台,存在特定的操作流程来设置适宜的工作区。例如,在Windows操作系统上部署QGIS 1.8或2.9版时,需遵循官方文档指导完成必要的依赖项安装及路径配置工作[^1]。此外,当采用Qt Creator作为IDE进行项目构建时,则可能涉及到额外的步骤如复制指定目录下的支持库至目标位置以确保程序正常运行[^5]。 #### 实际案例分析 考虑一个简单的应用场景——修改地图上的点状图层样式。此过程涉及编写Python脚本来访问底层API接口,并调用相应的方法改变视觉呈现效果。下面给出了一段示范性的源码片段: ```python from qgis.core import QgsSymbol, QgsRendererCategory, QgsCategorizedSymbolRenderer def update_point_style(layer_name, new_color): layer = iface.activeLayer() if not isinstance(layer, QgsVectorLayer) or layer.name() != layer_name: raise ValueError('Selected layer is invalid.') categories = [] symbol = QgsSymbol.defaultSymbol(layer.geometryType()) symbol.setColor(new_color) category = QgsRendererCategory('', symbol, 'Default') categories.append(category) renderer = QgsCategorizedSymbolRenderer('', categories) layer.setRenderer(renderer) layer.triggerRepaint() update_point_style("example_points", QColor(0, 255, 0)) ``` 上述例子展示了如何更改名为`example_points`的数据集内所有要素的颜色属性为绿色。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值