Tengo una capa con clasificación de edificios. Quiero añadir "Área" a mi tabla de atributos y uso PyQGIS. Para otra capa con 50 registros funciona, pero mi capa es enorme, contiene 6,8 millones de registros y funciona demasiado lento. Con otro problema he utilizado GeoPandas que está trabajando muy rápido. Voy a pegar mi código y necesito consejo. ¿Puedo hacerlo con GeoPandas?
from qgis.core import *
from qgis.utils import *
from qgis.analysis import QgsNativeAlgorithms
from PyQt5.QtCore import QVariant
from qgis.core import QgsApplication, QgsProcessingFeedback, QgsRasterLayer
import sys
import geopandas
sys.path.append('/usr/lib/qgis')
sys.path.append('/usr/share/qgis/python/plugins')
os.environ["QT_QPA_PLATFORM"] = "offscreen"
QgsApplication.setPrefixPath(r'/usr/bin/qgis', True)
qgs = QgsApplication([], False)
qgs.initQgis()
import processing
from processing.core.Processing import Processing
Processing.initialize()
QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms())
feedback = QgsProcessingFeedback()
#adding the Area field
layer = QgsVectorLayer(r'/home/gis/polskagisencoding.shp', "polskagisencoding", "ogr")
provider = layer.dataProvider()
area_field = QgsField("Area", QVariant.Int)
provider.addAttributes([area_field])
layer.updateFields()
#updating the Area field for each feature
idx = provider.fieldNameIndex('Area')
for feature in layer.getFeatures():
attrs = {idx : int(feature.geometry().area())}
layer.dataProvider().changeAttributeValues({feature.id() : attrs})