[英]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. 我想在QGIS中使用Python控制台来更改Shapefile中具有特定值的所有属性。 I have a field named "ANB" and I want to change the value "2" in for example "3". 我有一个名为“ANB”的字段,我想更改值“2”,例如“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) 在Tom的帮助下,我找出了正确的代码(德语评论,对不起)
#####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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.