如何用QGIS/Python修改Shapefile中的某个属性值

2024-05-13 07:50:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用QGIS中的Python控制台更改Shapefile中具有特定值的所有属性。 我有一个名为“ANB”的字段,我想更改例如“3”中的值“2”。在

我知道如何访问图层并选择我想要的值:

layer=QgsVectorLayer("C:.../Briefkasten.shp","briefkasten","ogr")

selection=layer.getFeatures(QgsFeatureRequest().setFilterExpression(u' "ANB"=2'))

但我不知道该怎么办。在

有人能帮我吗? 非常感谢你!在

你好,罗伯特


Tags: 图层layer属性shapefileshpqgisanbogr
1条回答
网友
1楼 · 发布于 2024-05-13 07:50:11

在汤姆的帮助下,我找出了正确的代码(德语注释,抱歉)

#####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()

相关问题 更多 >