「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笔记
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。