QGIS批量将Excel表格中的经纬度坐标点投到图层中

要在QGIS中批量将Excel表格中的经纬度坐标点投影到图层中并保存要素,你可以使用PyQGIS编程来完成。以下是一个简单的示例代码:


import csv
from qgis.core import QgsVectorLayer, QgsProject, QgsPointXY, QgsFields, QgsField, QgsFeature

# 设置Excel文件路径
excel_file = '/path/to/coordinates.xlsx'
# 设置输出图层文件路径
output_file = '/path/to/output_layer.shp'

# 读取Excel表格数据
with open(excel_file, 'r') as file:
    reader = csv.DictReader(file)
    coordinates = [(float(row['Longitude']), float(row['Latitude'])) for row in reader]

# 创建用于存储要素的图层
layer_fields = QgsFields()
layer_fields.append(QgsField('ID', QVariant.Int))  # 添加自定义字段,用于区分不同要素
layer = QgsVectorLayer('Point?crs=epsg:4326', 'Output Layer', 'memory')
layer.dataProvider().addAttributes(layer_fields)
layer.updateFields()

# 将坐标点添加为要素到图层中
for i, coordinate in enumerate(coordinates):
    feature = QgsFeature(layer.fields())
    feature.setGeometry(QgsPointXY(coordinate[0], coordinate[1]))
    feature.setAttribute('ID', i+1)  # 设置自定义字段值
    layer.dataProvider().addFeatures([feature])

# 保存输出图层
QgsProject.instance().addMapLayer(layer)
layer.dataProvider().createSpatialIndex()
layer.dataProvider().commitChanges()
QgsVectorLayerExporter.exportLayer(layer, output_file, 'utf-8', layer.crs(), 'ESRI Shapefile', onlySelected=False)

# 注意,上述代码需要确保已经安装并正确配置了QGIS Python环境,并导入了所需的库。请根据实际情况修改代码中的文件路径。

该代码使用了Python的`csv`库来读取Excel表格数据,并将经纬度坐标点转换为QGIS的`QgsPointXY`对象作为要素的几何属性。

猜你喜欢

转载自blog.csdn.net/weixin_58851039/article/details/131320521