Cómo modificar los valores de un campo de atributos mediante la Python Console con PyQGIS

En este post señalo como modificar los valores de un campo de atributos, previamente creado en QGIS con el label ‘AREA’ y que albergaba valores consecutivos del 1 al 51, para un shapefile con contiene los estados y las subregiones de Estados Unidos. En resumen, la capa cargada se hace activa, se define un iterator para recorrer los rasgos (features) donde se determina el área de cada polígono (Clase QgsGeometry); las cuales se almacenan en una lista. Estos valores se introducen en el campo ‘AREA’ (cuyo índice es 2), en modo de edición, mediante el método changeAttributeValue de la clase QgsVectorLayer. El script propuesto es el siguiente:

#set active layer
usa=iface.activeLayer()

#set counter
n=usa.featureCount()
print n

#void list for areas
areas=[]

#define iterator to get features
iter=usa.getFeatures()

#iterate by features and get areas
for feature in iter:
	areas.append(feature.geometry().area())

print areas

#start editing
usa.startEditing()

#insert areas in field 2 -AREA-
for i in range(n):
    usa.changeAttributeValue(i,2,areas[i])

#save the changes
usa.commitChanges()

En la imagen siguiente se observa la Python Console con los resultados de ejecución del script y la tabla atributiva; cuyos valores de área son simplemente ilustrativos del procedimiento porque fueron determinados para una proyección que no está en metros.

edit_field

Esta entrada fue publicada en Código Python, PyQGIS, SIG, Software Libre. Guarda el enlace permanente.

2 respuestas a Cómo modificar los valores de un campo de atributos mediante la Python Console con PyQGIS

  1. Pingback: Cómo crear y remover campos de atributos a través de la Python Console de PyQGIS | El Blog de José Guerrero

  2. Pingback: Cómo modificar los valores de un campo d...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s