Estoy tratando de calcular las áreas de la nueva capa que he creado mediante la intersección de dos capas.
¿Cómo puedo escribir un script que haga algo equivalente a pulsar Exportar/Añadir columnas de geometría?
Estoy tratando de calcular las áreas de la nueva capa que he creado mediante la intersección de dos capas.
¿Cómo puedo escribir un script que haga algo equivalente a pulsar Exportar/Añadir columnas de geometría?
Prueba este código:
layer = iface.activeLayer()
provider = layer.dataProvider()
areas = [ feat.geometry().area()
for feat in layer.getFeatures() ]
field = QgsField("area", QVariant.Double)
provider.addAttributes([field])
layer.updateFields()
idx = layer.fieldNameIndex('area')
for area in areas:
new_values = {idx : float(area)}
provider.changeAttributeValues({areas.index(area):new_values})
A mí me funciona. Lo probé en esta situación:
El campo "área" se añadió después de ejecutar el código en la consola de Python de QGIS.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.