Cómo manejar las capas en PyQGIS utilizando el Map Canvas

En el post anterior se contempló el manejo de capas utilizando el registro, es decir, con objetos de la clase QgsMapLayerRegistry. A continuación, lo haremos a través del Map Canvas (clase QgsMapCanvas). Cuando se utiliza esta última la instanciación se hace a través del método ‘mapCanvas’ de iface y la referencia a las capas se obtiene con el método ‘layers’ de la clase QgsMapCanvas.

El propósito es obtener el mismo resultado de ejecución en la Python Console; pero usando esta vez los objetos del Map Canvas. Al igual que con el Registro, el ejemplo a usar corresponde al de la imagen siguiente:

registro1

El código usado fue:

def attr(layer_name):

    mapcanvas = iface.mapCanvas()

    n = mapcanvas.layerCount()

    layers = mapcanvas.layers()

    layers_names = [ layer.name() for layer in layers ]

    if layer_name in layers_names:
        idx = layers_names.index( layer_name )
        
    print layers[idx].name()

    #selecting only one feature
    feat = layers[idx].getFeatures().next()
        
    if layers[idx].geometryType() == QGis.Point:
        print "There are " + str(layers[idx].featureCount()) + " points"

    if layers[idx].geometryType() == QGis.Line:
        print "length %.2f m" % feat.geometry().length()

    if layers[idx].geometryType() == QGis.Polygon:
        print "area %.2f km2" % (feat.geometry().area()/1e6)

attr('points')
attr('route')    
attr('polygon')

y el resultado de ejecución, como se esperaba, concuerda con el del post anterior:

points
There are 6 points
route
length 115989.71 m
polygon
area 309.23 km2

No obstante, este código para el manejo de las capas mediante el Map Canvas es más sencillo y compacto que el que considera el registro.

En nuestro curso por Internet de PyQGIS se contemplarán con detalle el desarrollo de plugins mediante el empleo de ‘Plugin Builder’.

PRÓXIMA SESIÓN EL 20 DE OCTUBRE

Esta entrada fue publicada en PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Cómo manejar las capas en PyQGIS utilizando el Map Canvas

  1. Pingback: Cómo manejar las capas en PyQGIS utilizando la interface de leyendas (QgsLegendInterface) | 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