0

0

使用 PyQGIS 为每个图层组生成地图主题

霞舞

霞舞

发布时间:2025-09-14 20:56:13

|

321人浏览过

|

来源于php中文网

原创

使用 pyqgis 为每个图层组生成地图主题

本文档旨在指导用户如何使用 PyQGIS 脚本为 QGIS 项目中的每个图层组自动创建地图主题。通过脚本控制图层的可见性,并利用 QgsMapThemeCollection 类,可以高效地管理和切换不同的地图显示状态,从而提升地图项目的组织性和可交互性。

使用 PyQGIS 脚本生成地图主题

以下代码展示了如何使用 PyQGIS 为 QGIS 项目中的每个图层组自动创建地图主题。该脚本遍历项目中的所有图层组,为每个组创建一个地图主题,该主题仅显示该组中的图层。

# 获取项目图层树的根节点
root = QgsProject.instance().layerTreeRoot()
# 获取所有图层组
groups = root.findGroups()
# 获取所有图层
AllLayers = root.findLayers()
# 获取地图主题集合
mapThemesCollection = QgsProject.instance().mapThemeCollection()

# 隐藏所有图层
for layer in AllLayers:
    layer.setItemVisibilityChecked(False)
# 隐藏所有图层组
for group in groups:
    group.setItemVisibilityChecked(False)

# 遍历每个图层组
for group in groups:
    # 显示当前图层组
    group.setItemVisibilityChecked(True)
    # 获取当前图层组中的所有图层
    groupLayers = group.findLayers()
    # 显示当前图层组中的所有图层
    for groupLayer in groupLayers:
        groupLayer.setItemVisibilityChecked(True)
    # 为当前图层组创建地图主题
    mapThemeRecord = QgsMapThemeCollection.createThemeFromCurrentState(
        QgsProject.instance().layerTreeRoot(),
        iface.layerTreeView().layerTreeModel()
    )
    # 将地图主题添加到地图主题集合中,以图层组的名称作为主题名称
    mapThemesCollection.insert(str(group), mapThemeRecord)

代码解释:

  1. 获取项目元素:

    迦恩计算机资源网源码(图书销售类)
    迦恩计算机资源网源码(图书销售类)

    采用三层架构开发,前台集成了产品在线展示,用户注册、在线调查、在线投稿后台有类别管理\图书管理\订单管理\会员管理\配送范围管理\邮件列表\广告管理\友情链接管理等后台添加图书时自动生成缩略图和文字水印主要参考了petshop的设计架构、使用了Asp.net2.0中很多MemberShip、master等新功能后台管理地址/web/admin/ 超级管理员账号密码均为aspx1特别提示:该系统需要

    下载
    • QgsProject.instance().layerTreeRoot(): 获取当前 QGIS 项目的图层树根节点,是后续操作的基础。
    • root.findGroups(): 查找图层树根节点下的所有图层组。
    • root.findLayers(): 查找图层树根节点下的所有图层。
    • QgsProject.instance().mapThemeCollection(): 获取当前 QGIS 项目的地图主题集合,用于存储和管理创建的地图主题。
  2. 设置初始可见性:

    • 循环遍历所有图层和图层组,将它们的可见性设置为 False,确保在创建每个主题之前,所有图层都处于隐藏状态。
  3. 遍历图层组并创建主题:

    • 外层循环遍历每个图层组。
    • group.setItemVisibilityChecked(True): 显示当前正在处理的图层组。
    • group.findLayers(): 查找当前图层组下的所有图层。
    • 内层循环遍历当前图层组中的所有图层,并将它们的可见性设置为 True,确保只有当前图层组及其包含的图层是可见的。
    • QgsMapThemeCollection.createThemeFromCurrentState(...): 基于当前图层树的状态(即哪些图层可见)创建一个新的地图主题。
    • mapThemesCollection.insert(str(group), mapThemeRecord): 将新创建的地图主题添加到地图主题集合中。这里使用图层组的名称作为地图主题的名称,方便后续识别和管理。

注意事项

  • iface 对象: 代码中使用了 iface 对象,它代表 QGIS 的主界面。 确保在 QGIS 环境中运行此脚本,或者在独立脚本中使用 QgisInterface 类来模拟 iface 对象。 在 QGIS 插件或控制台中运行此脚本通常不需要额外处理。
  • 图层和图层组的命名: 建议图层和图层组使用有意义的名称,以便更好地组织和管理地图主题。
  • 性能: 对于包含大量图层和图层组的项目,此脚本可能需要一些时间才能完成。 可以考虑优化代码,例如使用更高效的查找方法或并行处理。
  • 依赖: 该脚本依赖于 PyQGIS 库,确保 QGIS 环境配置正确,并且可以访问 PyQGIS 模块。

总结

通过这个脚本,可以自动化地为 QGIS 项目中的每个图层组创建地图主题,极大地简化了地图项目的管理和维护。 这种方法特别适用于需要频繁切换不同图层组合的项目,例如地质调查、城市规划等。 掌握这种方法,可以显著提高 QGIS 的使用效率,并提升地图项目的专业性。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

32

2025.12.13

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

28

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

378

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

115

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

9

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号