如何通过Python批量导出QGIS指定图层组内的所有图层为CSV文件
解决方案
以下是可直接运行的完整代码:
# 定义CSV导出保存路径,注意路径末尾需保留斜杠 pathToFile = "C:/Users/xxxx/Documents/test/" # 获取当前项目的图层树根节点 root = QgsProject.instance().layerTreeRoot() # 定位到test1分组 mygroup = root.findGroup("test1") # 遍历分组内所有图层 for tree_layer in mygroup.findLayers(): # 获取图层实例对象 vLayer = tree_layer.layer() # 可选判断:仅导出矢量图层,过滤栅格图层避免导出报错 if isinstance(vLayer, QgsVectorLayer): # 执行CSV导出 QgsVectorFileWriter.writeAsVectorFormat( vLayer, pathToFile + vLayer.name() + ".csv", "utf-8", vLayer.crs(), driverName="CSV" )
代码说明
- 你原有第二段代码最后一行把图层转成名字列表的操作是多余的,导出方法需要传入图层实例而非字符串名称,直接调用
findLayers()获取图层树节点后取对应图层实例即可 - 如果你确认test1分组下全是矢量图层,可以删除矢量类型判断的代码行
- 如果你使用QGIS 3.20及以上版本,更推荐使用新版本导出方法替换原有旧方法,替换部分示例如下:
# QGIS 3.20+ 版本导出替换代码 save_options = QgsVectorFileWriter.SaveVectorOptions() save_options.driverName = "CSV" save_options.fileEncoding = "utf-8" QgsVectorFileWriter.writeAsVectorFormatV3( vLayer, pathToFile + vLayer.name() + ".csv", QgsCoordinateTransformContext(), save_options )
内容的提问来源于stack exchange,提问作者Aham
相关产品推荐
相关产品推荐

