La generación múltiple de campos es posible a través de qgis:fieldcalculator de PyQGIS Processing; donde las opciones de los parámetros pueden incluirse como una plantilla en un diccionario. A continuación, se presentan cuáles son las referidas opciones en la imagen siguiente:
El código a utilizar se tiene a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import processing layer = iface.activeLayer() if layer.type() == QgsMapLayer.VectorLayer and layer.geometryType() == QGis.Polygon: param_dict = {'dict1': {"INPUT_LAYER": layer, "FIELD_NAME": "area_km2", "FIELD_TYPE": 0, "FIELD_LENGTH":20, "FIELD_PRECISION":0, "NEW_FIELD": True, "FORMULA": '$area/1000000', "OUTPUT_LAYER": None}, 'dict2': {"INPUT_LAYER": new_layer, "FIELD_NAME": "area_ha", "FIELD_TYPE": 0, "FIELD_LENGTH":20, "FIELD_PRECISION":2, "NEW_FIELD": True, "FORMULA": '$area/10000', "OUTPUT_LAYER": None} } path = processing.runalg('qgis:fieldcalculator', param_dict['dict1'] ) new_layer = QgsVectorLayer(path['OUTPUT_LAYER'], 'new_layer', 'ogr') path = processing.runandload('qgis:fieldcalculator', param_dict['dict2'] ) else: print "layer is not polygon type" |
y se va a probar con el vectorial de la imagen siguiente, donde la tabla de atributos contiene un sólo campo, para crear dos campos con el área en metros cuadrados y en hectáreas; respectivamente.
Después de ejecutado en la Python Console de QGIS se obtiene el resultado siguiente:
La nueva capa creada 'Calculated' contiene, tal como se esperaba, los campos respectivos.
No hay comentarios:
Publicar un comentario