Cómo manejar las capas en PyQGIS utilizando la interface de leyendas (QgsLegendInterface)

En los dos posts anteriores (1, 2) se consideró el manejo de capas mediante PyQGIS utilizando los métodos de las clases QgsMapLayerRegistry y QgsMapCanvas. A continuación, para ser exhaustivos, se expondrá la tercerá y última forma de manejo de capas que corresponde al uso de la interface de leyendas: objetos de la clase QgsLegendInterface.

La instanciación se hace a través del método ‘legendInterface’ de iface y la referencia a las capas se obtiene con el método ‘layers’ de la clase QgsLegendInterface. Como esta última no cuenta con método ‘count’ o ‘layerCount’ el número de capas se infiere de la lista que contiene las referencias a las mismas.

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

registro1

El código usado fue:

def attr(layer_name):

    legend = iface.legendInterface()

    layers = legend.layers()
    
    n = len(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 de los dos posts anteriores:

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

Este código para el manejo de las capas, al igual que el del 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 todas las cuestiones fundamentales relativas al manejo de datos Raster con Python y QGIS. Además, también tratamos la temática relativa a PyQGIS para el manejo de datos vectoriales y una introducción a la creación de plugins mediante el ‘Plugin Builder’.

PRÓXIMA SESIÓN EL 20 DE OCTUBRE

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

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