pyQgis一次性将多个txt坐标文件转为多个shp文件
时间: 2023-08-07 11:08:28 浏览: 170
批量将txt文本坐标点转成shp面
5星 · 资源好评率100%
可以使用 PyQGIS 完成这个任务。以下是一个示例代码,可以将指定文件夹中的所有 txt 文件转换为 shp 文件:
```python
import os
from qgis.core import QgsPoint, QgsVectorLayer, QgsFeature, QgsField, QgsGeometry, QgsVectorFileWriter
# 指定输入文件夹和输出文件夹
input_folder = r"path/to/input/folder"
output_folder = r"path/to/output/folder"
# 获取所有 txt 文件的文件名
txt_files = [f for f in os.listdir(input_folder) if f.endswith('.txt')]
# 循环处理每个 txt 文件
for txt_file in txt_files:
# 构建输入和输出文件路径
input_file = os.path.join(input_folder, txt_file)
output_file = os.path.join(output_folder, os.path.splitext(txt_file)[0] + '.shp')
# 创建点图层
layer = QgsVectorLayer("Point", "temp", "memory")
provider = layer.dataProvider()
# 添加字段
provider.addAttributes([QgsField("ID", QVariant.Int)])
# 打开 txt 文件并读取坐标信息
with open(input_file, 'r') as f:
for i, line in enumerate(f):
coords = line.strip().split(',')
x, y = float(coords[0]), float(coords[1])
# 创建 feature 并添加到图层中
feature = QgsFeature()
feature.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(x, y)))
feature.setAttributes([i])
provider.addFeatures([feature])
# 保存图层为 shp 文件
QgsVectorFileWriter.writeAsVectorFormat(layer, output_file, "utf-8", layer.crs(), "ESRI Shapefile")
# 删除临时图层
QgsProject.instance().removeMapLayer(layer)
```
这个示例代码会依次读取输入文件夹中的每个 txt 文件,将其中的坐标信息转换为点图层,并保存为 shp 文件。输出文件名与输入文件名相同,只是扩展名不同。你可以根据需要进行修改,比如更改图层名、字段名等等。
阅读全文