PyQGIS中创建要素及属性赋值操作

from PyQt5.QtCore import QVariant
from qgis.core import QgsVectorLayer, QgsFeature, QgsField, QgsPointXY, QgsGeometry, QgsProject

# 创建矢量图层
point_layer = QgsVectorLayer("Point", "十六国", "memory")
pr = point_layer.dataProvider()
pr.addAttributes([QgsField("national_name", QVariant.String),  # 国名
                  QgsField("nationality", QVariant.String),  # 民族
                  QgsField("princes_numbers", QVariant.Int),  # 君主人数
                  QgsField("first_monarch", QVariant.String),  # 首任君主
                  QgsField("last monarch", QVariant.String),  # 末任君主
                  QgsField("surname", QVariant.Int),  # 国祚
                  ])
# 更新字段列表
point_layer.updateFields()

# 添加数据列表
sixteen_states = [
    {'x': 1, 'y': 90, '国名': '前赵', '民族': '匈奴', '君主人数': 6, '首任君主': '刘渊', '末任君主': '刘熙', '国祚': 25},
    {'x': 2, 'y': 58, '国名': '后赵', '民族': '羯', '君主人数': 7, '首任君主': '石勒', '末任君主': '刘熙', '国祚': 32},
    {'x': 3, 'y': 10, '国名': '成汉', '民族': '巴氐', '君主人数': 5, '首任君主': '李雄', '末任君主': '李势',
     '国祚': 41},
    {'x': 4, 'y': 58, '国名': '前凉', '民族': '汉', '君主人数': 8, '首任君主': '张寔', '末任君主': '张天锡',
     '国祚': 75},
    {'x': 5, 'y': 79, '国名': '前燕', '民族': '鲜卑', '君主人数': 3, '首任君主': '慕容皝', '末任君主': '慕容暐',
     '国祚': 18},
    {'x': 6, 'y': 31, '国名': '前秦', '民族': '氐', '君主人数': 6, '首任君主': '苻健', '末任君主': '苻崇', '国祚': 44},
    {'x': 7, 'y': 47, '国名': '后燕', '民族': '鲜卑', '君主人数': 7, '首任君主': '慕容垂', '末任君主': '慕容熙',
     '国祚': 23},
    {'x': 8, 'y': 25, '国名': '后秦', '民族': '羌', '君主人数': 3, '首任君主': '姚苌', '末任君主': '姚泓', '国祚': 33},
]

# 添加点几何及设置属性
for rec in sixteen_states:
    f = QgsFeature()
    pt = QgsPointXY(rec['x'], rec['y'])
    f.setGeometry(QgsGeometry.fromPointXY(pt))
    f.setAttributes([rec['国名'], rec['民族'], rec['君主人数'], rec['首任君主'], rec['末任君主'], rec['国祚']])
    pr.addFeature(f)

point_layer.updateExtents()
# 添加地图至图层面板
QgsProject.instance().addMapLayer(point_layer)

参考:第5节  PyQGIS中创建要素及属性赋值操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值