2 votos

¿Añadir una columna de área con PyQGIS?

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?

6voto

Yada Puntos 9489

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:

enter image description here

El campo "área" se añadió después de ejecutar el código en la consola de Python de QGIS.

i-Ciencias.com

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.

Powered by:

X