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.
Pingback: Cómo crear y remover campos de atributos a través de la Python Console de PyQGIS | El Blog de José Guerrero
Pingback: Cómo modificar los valores de un campo d...