I want to use the Python Console in QGIS to change all attributes in a Shapefile with a certain value. I have a field named "ANB" and I want to change the value "2" in for example "3".
I know how to access the layer and select the values I want:
layer=QgsVectorLayer("C:.../Briefkasten.shp","briefkasten","ogr")
selection=layer.getFeatures(QgsFeatureRequest().setFilterExpression(u' "ANB"=2'))
But I don't know how to proceed.
Can someone help me? Thank you very much!
Greetings Robert
With the help of Tom I figure out the correct code (comments in german, sorry for that)
#####Vektorlayer (Shape) in QGIS laden:
layer=QgsVectorLayer("C:/Users/robert 2/Documents/QGIS_Python/Briefkasten.shp","briefkasten","ogr")
QgsMapLayerRegistry.instance().addMapLayers([layer])
#####Attribut aus Shape abfragen
layer=QgsVectorLayer("C:/Users/.../QGIS_Python/Briefkasten.shp","briefkasten","ogr")
features=layer.getFeatures()
f=features.next()
f.attributes()
##Index von bestimmten Spaltennamen finden um den später ansprechen zu können (ANB beinhaltet dann Index als Zahl)
ANB=f.fields().indexFromName('ANB')
## nur ein bestimmtes Attribut aus einer Spalte auswählen und anzeigen lassen
selection=layer.getFeatures(QgsFeatureRequest().setFilterExpression(u' "ANB"=2'))
## selektierte Werte updaten:
layer.startEditing()
for feat in selection:
layer.changeAttributeValue(feat.id(), ANB, 3)
layer.commitChanges()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.