Solución:
Consulte el Libro de recetas de PyQGIS para obtener consejos sobre cómo agregar atributos a las capas vectoriales:
http://www.qgis.org/pyqgis-cookbook/vector.html#adding-and-removing-fields
Sin embargo, la forma más fácil en su situación sería hacer una combinación espacial simple para agregar sus valores de puntos a los polígonos.
Si desea utilizar Python, no necesita QGIS, excepto si desea crear un complemento. En este caso, debería considerar PyQGIS con la referencia dada por Curlew
Pero también puede usar módulos de Python como pyshp, osgeo (gdal y ogr) o Fiona y Shapely sin QGIS
En ambos casos, necesita un campo de unión que vincule el shapefile del polígono al shapefile del punto.
Ejemplo con Fiona y Shapely (todos los elementos de un shapefile (esquema, geometría, registros) se procesan usando diccionarios de Python).
Con ogr y Fiona es más fácil crear un nuevo shapefile, copiando el shapefile original (geometría y atributos) y agregando nuevos campos con los valores deseados que modificar el shapefile original.
from shapely.geometry import mapping
import fiona
# open the polygon shapefile
with fiona.collection('polygon.shp', 'r') as polygon:
# copy of the schema of the original polygon shapefile to the output shapefile (copy)
schema = polygon.schema.copy()
# creation of the new field color in the new schema
schema['properties']['color'] = 'str'
# output shapefile with the new schema
with fiona.collection('join_poly_pt.shp', 'w', 'ESRI Shapefile', schema) as output:
# open the point shapefile with colors
with fiona.collection('point.shp', 'r') as points:
polygons = [elem for elem in polygon]
points = [elem for elem in point]
# joint
for poly in polygons:
for pt in points:
# common field for the join
if poly['properties']['test'] == pt['properties']['test']:
# construction of the new shapefile
res = {}
res['properties'] = poly['properties']
res['properties']['color'] = pt['properties']['color']
# geometry of of the original polygon shapefile
res['geometry'] = mapping(shape(poly['geometry']))
output.write(res)
ejemplo simple