QGIS批量将EXCEL中内容连接到对应矢量要素属性表中

要在QGIS中批量将Excel表格中的内容连接到对应矢量要素的属性表中,可以使用PyQGIS编程来完成。以下是详细的示例代码:


from qgis.core import QgsVectorLayer, QgsProject
import csv

# 设置矢量图层文件路径
layer_file = '/path/to/your_vector_layer.shp'
# 设置Excel文件路径
excel_file = '/path/to/your_excel_file.xlsx'
# 设置用于连接的字段名称(Excel和矢量图层共享字段)
join_field = 'common_field'

# 加载矢量图层
layer = QgsVectorLayer(layer_file, 'Vector Layer', 'ogr')

# 创建字典以存储Excel中的数据(根据连接字段)
excel_data = {}
with open(excel_file, 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        key = row[join_field]
        excel_data[key] = row

# 开启编辑模式
layer.startEditing()

# 遍历图层中的要素
for feature in layer.getFeatures():
    field_value = feature[join_field]
    
    # 检查要素的连接字段值是否存在Excel数据中
    if field_value in excel_data:
        excel_row = excel_data[field_value]

        # 更新要素的属性值
        for field_name in excel_row:
            if field_name != join_field:
                field_index = layer.fields().lookupField(field_name)
                if field_index != -1:
                    layer.changeAttributeValue(feature.id(), field_index, excel_row[field_name])

# 保存更改并停止编辑模式
layer.commitChanges()
layer.stopEditing()

# 可选:保存已更新的图层
QgsProject.instance().addMapLayer(layer)
layer.updateFields()

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

该代码使用了`csv`库来读取Excel文件中的数据,并根据连接字段将数据存储在字典中。然后,通过遍历矢量图层中的要素和字典中的数据进行匹配,更新要素的属性值。最后,可以选择保存已更新的图层。请根据实际情况修改代码中的文件路径和连接字段名称以适应你的情况,并确保已安装所需的依赖库。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

认真学GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值