简体   繁体   中英

How to change an attribute in Shapefile with a certain value with QGIS / Python

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM