Изменение значений атрибутов через Pyqgis - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы изменить значение атрибута в соответствии с таблицей Excel.

Я пишу следующий код, но новое добавленное поле не может изменить значение.

Исходный шейп-файл имеет только одно поле .

import pandas as pd

file='/home/xj/Research/Data/Map/province.csv'

add = pd.read_csv(file)

for i in range(0,len(add)):
    add_name = add.iloc[i,2]
    add_code = add.iloc[i,1]

    print(add_code,add_name,type(add_name))

    uri = '/home/xj/Research/Data/Map/Province/'+add_name+'.shp'
    layer = iface.addVectorLayer(uri, '', 'ogr')

    layer_provider=layer.dataProvider()
    layer_provider.addAttributes([QgsField("PCode",QVariant.Double)])
    layer_provider.addAttributes([QgsField("PName",QVariant.String)])
    layer.updateFields()

    layer.startEditing()
    features = layer.getFeatures()
    for f in features:
        id=f.id()
        attr_value={1:add_name}
        layer_provider.changeAttributeValues({id:attr_value})
        attr_code={2:add_code}
        layer_provider.changeAttributeValues({id:attr_code})
        
    layer.commitChanges()

    QgsProject.instance().removeAllMapLayers()

print(f"done!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...