PyQgis代码需要很多时间才能执行?

2024-05-03 13:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在pyqgis中编写了下面的python代码,该代码在一个~30MB的形状文件中循环。它添加一个属性,该属性包含基于另一个属性计算的特征。完全执行代码大约需要10分钟,这是否正常?有时它根本不执行它——QGIS只是永远加载(等待了30多分钟),直到我关闭它

shapefile获得了约130000个特征和27个属性

我的笔记本电脑有16GB内存和一个Intel Core i5-1135G7

代码:

from qgis.PyQt.QtCore import QVariant
from qgis.core import QgsProject

layer = QgsProject.instance().mapLayersByName("677_5334")[0]
iface.setActiveLayer(layer)

caps = layer.dataProvider().capabilities()

if caps & QgsVectorDataProvider.AddAttributes:
    res = layer.dataProvider().addAttributes([QgsField("Stockwerke", QVariant.Double)])
layer.updateFields()

exp1 = QgsExpression('"HOEHEGEB"/3.5')

context = QgsExpressionContext()
context.appendScopes(\
QgsExpressionContextUtils.globalProjectLayerScopes(layer))

with edit(layer):
    for f in layer.getFeatures():
        context.setFeature(f)
        f["Stockwerke"] = exp1.evaluate(context)
        layer.updateFeature(f)

Tags: 代码fromimportlayer属性context特征caps