При добавлении новой QgsFeature в существующую функцию QgsVectorLayer атрибуты не добавляются.
Я хочу добавить новый QgsFeature (многоугольник) к уже существующему QgsVectorLayer. Элемент добавляется на холст (он отображается на экране), но соответствующая таблица атрибутов слоя не обновляется (атрибуты вновь созданного объекта не добавляются)
Я прочитал PyQGIS Cookbook и соответствующие вопросы StackOverflow, но код не работает, и я не знаю, что мне не хватает.
layer = self.projectInstance.mapLayersByName('draba_obcina')[0]
pr = layer.dataProvider()
points = [QgsPointXY(0, 0), QgsPointXY(0, 1), QgsPointXY(1, 0), QgsPointXY(0, 0)]
poly = QgsFeature(layer.fields())
#if i set OGC_FID i get SQLite error: UNIQUE constraint failed (although there is no entry with OGC_FID = 3640)
#poly.setAttribute ("OGC_FID", 3640)
poly.setAttribute ("tip_spr", None)
poly.setAttribute ("id", None)
poly.setAttribute ("sif_upr", None)
poly.setAttribute ("id_upr", None)
poly.setAttribute ("vrsta_dr", None)
poly.setAttribute ("vrsta_pov", None)
poly.setAttribute ("nac_dol", None)
poly.setAttribute ("nat_dol", None)
poly.setAttribute ("usklajenost_zk", None)
poly.setAttribute ("graf_pov", None)
poly.setAttribute ("d_spr", None)
poly.setAttribute ("d_vir", None)
poly.setAttribute ("vrsta_el", None)
poly.setAttribute ("opis", "I was created by plugin")
poly.setAttribute ("createdtime", "2019-06-25 18:51:34")
poly.setAttribute ("kat", "10")
poly.setGeometry(QgsGeometry.fromPolygonXY([points]))
res, outFeats = pr.addFeatures([poly])
layer.updateExtents()
layer.commitChanges()
layer.reload()
pr.addFeatures ([poly]) возвращает (res == True), а (длина outFeats равна 1)
что для меня означает, что добавление функции прошло успешно.
Ошибок нет.
Но новая функция отображается только на холсте, и в таблицу атрибутов атрибут не добавляется.