简体   繁体   English

如何使用QGIS / Python将Shapefile中的属性更改为特定值

[英]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.

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