我已经在 pyqgis 中编写了下面的 python 代码,它循环了一个 ~30 MB 的 shapefile。它添加了一个具有基于另一个属性计算的特征的属性。完全执行代码大约需要 10 分钟,这是否正常?有时它根本不执行它 - QGIS 只是永远加载(等待超过 30 分钟),直到我关闭它。
shapefile 有大约 130.000 个特征和 27 个属性。
我的笔记本电脑有 16 GB RAM 和 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)