Cómo crear una capa de puntos con PyQGIS

En el post pasado se exploraron varios procedimientos en la Python Console de QGIS basados en la información condensada que nos suministraba un script para filtrar y resumir los procedimientos provenientes de la API de PyQGIS. Hoy nos toca juntar varios de estos métodos para que realice una tarea que tenga utilidad como conjunto. Para ello, se presenta un script que crea una capa de puntos, los campos de atributos y les asigna valores a estos últimos. El script es el siguiente:

#create memory layer
#type, CRS, fields in a uri 
mem_layer = QgsVectorLayer("Point?crs=epsg:4326&field=id:integer""&field=area:double&index=yes",
                            "Points",
                            "memory")
                             
 
#add Map Layer to Registry
QgsMapLayerRegistry.instance().addMapLayer(mem_layer)
 
#Prepare mem_layer for editing
mem_layer.startEditing()
 
#points to add
points = [QgsPoint(-150,61),QgsPoint(-151,61),QgsPoint(-151,62)]

#Calculate number points
n = len(points)

#Set feature
feature = []

for i in range(n):
    feat =QgsFeature()
    feature.append(feat)
 
#values arbitraries for area attribute
area=[0.5,0.6,0.7]
 
#set attributes values 
for i in range(n):
    feature[i].setGeometry(QgsGeometry.fromPoint(points[i]))  #Set geometry
    feature[i].setAttributes([i,area[i]])
    mem_layer.addFeature(feature[i], True)
 
#stop editing and save changes
mem_layer.commitChanges()

#zoom to Active Layer
iface.zoomToActiveLayer()

El script crea una memory layer en la cual se le asigna simultáneamente en una URI (Uniform Resource Identifier) el tipo de capa, su CRS, los nombres y tipo de campo y el índice espacial. La imagen con el resultado se encuentra a continuación:

point

y esta es la tabla atributiva de la memory layer:

table

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

2 respuestas a Cómo crear una capa de puntos con PyQGIS

  1. La versión anterior de este script no funcionaba como era debido. Se había creado un supuesto vectorial de tipo point con múltiples registros pero no era así. La versión anterior era en realidad un MultiPoint (multiparte) cuya tabla atributiva reflejaba erróneamente que era de partes sencillas.

  2. Pingback: Funciones con PyQGIS | El Blog de José Guerrero

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