Saltar al contenido

Cómo agregar una columna en QGIS a través de Python

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
ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *