[GIS] How to change vector attributes values

pyqgispythonqgis

I want to change vector attributes values.

i could not get the command fet.setAttribute
indeed, it is mentionned in http://hub.qgis.org/issues/7223 that:

"The QgsFeature instance now must be first initialized with initAttributes() to know how many attributes it will contain. Then there's setFields() call that allows doing name-to-index mapping in QgsFeature."

however, i could not get fet.initAttributes() and fet.setFields() working. (newbie…)

the error message I get is "AttributeError: 'QgsFeature' object has no attribute 'initAttributes'".

any help appreciated.

qgis version: 1.8.0

gis-python version: 1.8.0-8

python: 2.7.3-7.2

os: fedora17

Best Answer

That is the new QGIS 2.0 (not released) API. 1.8 uses a different method.

Use:

feature.changeAttribute(columnnumber, value)

or:

layer.changeAttributeValue(feature.id(), columnnumber, value)

Example:

layer.changeAttributeValue(feature.id(), 3, "Hello World")
Related Question