麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS教程」QGIS工程批量导出图层并转换格式的方法汇总

在之前使用QGIS处理CAD的dwg数据的时候,好不容易处理完,想导出SHP格式,但是导入的分组实在是太多了,一个个图层导出非常麻烦,点的手疼,有没有什么批量导出的方法呢?

小编研究了一下,找到了如下的几个解决方案,有相同需求的小伙伴可以尝试下。

方法一:插件 Batch Vector Layer Saver

这个是适用于QGIS的插件,安装完成之后,依次点击 矢量 -- Batch Vector Layer Save

对话框如上图所示,设置好格式和导出目录即可。

PS:QGIS的插件就是灵活啊。

方法二:使用QGIS自带的批量运行功能

直接在QGIS的工具中搜索 导出,找到 将矢量要素保存到文件 这个工具

选择 以批处理方式运行

选中需要处理的图层,最后批量导出即可。

方法三:使用Python脚本

当然如果既没插件又没自带工具,就可以自己写代码了,QGIS支持Python脚本,打开 插件 -- Python控制台,输入如下代码:

import os
from qgis.core import QgsVectorLayer

# 要导出的图层列表
layer_list = [layer1, layer2, layer3]  # 替换为要导出的图层对象

# 导出文件夹路径
output_folder = 'path/to/output/'  # 替换为实际的输出文件夹路径

# 遍历图层列表
for layer in layer_list:
    # 确保图层有效
    if isinstance(layer, QgsVectorLayer) and layer.isValid():
        # 构建导出文件路径
        layer_name = layer.name()
        output_path = os.path.join(output_folder, f'{layer_name}.shp')

        # 使用图层提供程序进行导出
        QgsVectorFileWriter.writeAsVectorFormat(layer, output_path, 'utf-8', layer.crs(), 'ESRI Shapefile')

        # 输出导出结果
        if QgsVectorLayer(output_path, layer_name, 'ogr').isValid():
            print(f'{layer_name} 导出成功!')
        else:
            print(f'{layer_name} 导出失败!')

在上述代码中,首先定义了要导出的图层列表 layer_list,可以根据自己的需求修改和添加图层对象。然后,指定了导出文件夹路径 output_folder,请将其替换为实际的目标文件夹路径。接下来,通过遍历图层列表,使用 QgsVectorFileWriter.writeAsVectorFormat() 方法将每个图层导出为Shapefile格式,导出文件的命名方式为图层名称 + ".shp"。最后,根据导出结果输出相应信息。 PS:要确保图层对象有效,并且目标文件夹存在并有写入权限。

该方法转载自:https://blog.csdn.net/weixin_58851039/article/details/131508602

总结

小编最后使用的是方法二,方法一简单,但小编已经装了太多插件了,就没继续安装了,方法三最灵活,后面有高级导出的需求小编再用。

全部QGIS笔记

QGIS 学习笔记汇总

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)