このコードで属性名でフィーチャ属性を設定しようとしました
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
しかし、結果としてすべてのフィールドにNULLがあります。私が使用する場合
feature.setAttributes([1])
正常に機能します。
私が間違っていることは何ですか?feature [attrName] = 1が機能しないのはなぜですか?
更新:このソリューションを見つける
pr = layer.dataProvider()
pr.addAttributes([QgsField("test", QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
attrName = 'test'
feature[attrName] = 1
pr.changeAttributeValues({feature.id() : {pr.fieldNameMap()[attrName] : 1}})
feature.setAttribute(attrName, 1)
とfeature.setAttribute(layer.fieldNameIndex(attrName), 1)
同じ結果で(APIリファレンスインデックスと名前の機能のための2つのsetAttributeメソッドがあります)