I want to calculate the area of the polygon and add it to the attribute table as another column. I used this script:
from qgis import processing
inlayDir = iface.activeLayer()
P3_boundary = r'C:\Users\CMCA\OneDrive - Boskalis\Documents\Trial PyQGIS\outTemp.gpkg'
dissolved = processing.runAndLoadResults("native:dissolve",
{'INPUT': inlayDir,
'FIELD':[],
'OUTPUT': 'TEMPORARY_OUTPUT'})
union = processing.runAndLoadResults( "qgis:union",{
'INPUT' : P3_boundary,
'OUTPUT' : 'TEMPORARY_OUTPUT',
'OVERLAY' : dissolved['OUTPUT'],
'OVERLAY_FIELDS_PREFIX' : '' })
clip = processing.runAndLoadResults("native:clip",
{ 'INPUT':union['OUTPUT'],
'OVERLAY' : dissolved['OUTPUT'],
'OUTPUT' : 'TEMPORARY_OUTPUT',
})
provider = clip.dataProvider()
field = QgsField("area3", QVariant.Double)
provider.addAttributes([field])
clip.updateFields()
index = provider.fieldNameIndex('area3')
for feat in clip.getFeatures():
provider.changeAttributeValues({feat.id(): {index: feat.geometry().area()}})
result :
The error I get:
Traceback (most recent call last):
File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
File "<string>", line 27, in <module>
AttributeError: 'dict' object has no attribute 'dataProvider'