Código fuente para src.layer_manager
# -*- coding: utf-8 -*-
"""Este módulo propociona puntos de acceso al registro de capas de QGIS
(QgsMapLayerRegistry.instance()), para hacer el código más legible."""
from PyQt4.QtGui import QColor
from qgis.core import ( QgsMapLayerRegistry,
QgsVectorLayer,
QgsRasterLayer)
[documentos]def get_layer(layer_name):
""" Busca una capa por nombre en el registro de capas de qgis.
:param layer_name: Nombre de la capa a buscar.
:type layer_name: str
:returns: La primera capa cuyo nombre coincida con layer_name, en caso de que no exista se retorna None.
:rtype: QgsMapLayer
"""
try:
return QgsMapLayerRegistry.instance().mapLayersByName(layer_name)[0]
except IndexError:
return None
[documentos]def get_all_layers(layer_name):
""" Retorna todas la capas con el nombre layer_name que estan en el registro de capas de qgis.
:param layer_name: Nombre de la capa a buscar.
:type layer_name: str
:returns: La primera capa cuyo nombre coincida con layer_name, en caso de que no exista se retorna None.
:rtype: Lista de QgsMapLayer
"""
try:
return QgsMapLayerRegistry.instance().mapLayersByName(layer_name)
except IndexError:
return []
[documentos]def remove_layers(layers):
""" Elimina capas del registro de capas de qgis.
:param layers: Capas que se van a eliminar.
:type layer_name: Lista QgsMapLayers
"""
for layer in layers:
QgsMapLayerRegistry.instance().removeMapLayer(layer)
[documentos]def add_layers(layers):
""" Agrega capas al registro de capas de qgis.
:param layers: Capas que se van a agregar.
:type layer_name: Lista QgsMapLayers
"""
for layer in layers:
QgsMapLayerRegistry.instance().addMapLayer(layer)
[documentos]def load_raster_layer(path, name):
"""Carga una capa rasterizada.
:param path: Ruta de la capa que se va a cargar.
:type path: str
:param name: Nombre de la capa que se va a cargar, este nombre será el identificador de la capa.
:returns: Capa rasterizada en caso de que sea valida, de lo contrario se retorna None.
:rtype: QgsRasterLayer
"""
rlayer = QgsRasterLayer(path, name)
if not rlayer.isValid():
return None
return rlayer
[documentos]def load_vector_layer(path, name, color = (0, 0 , 0)):
"""Carga una capa vectorizada.
:param path: Ruta de la capa que se va a cargar.
:type path: str
:param name: Nombre de la capa que se va a cargar, este nombre será el identificador de la capa.
:param color: Color que se la va a asignar a la capa
:type color: Tupla de 3 elementos r, g, b
:returns: Capa vectorizada en caso de que sea valida, de lo contrario se retorna None
:rtype: QgsVectorLayer
"""
layer = QgsVectorLayer(path, name, 'ogr')
if not layer.isValid():
return None
# Cambiar el color del layer
r, g, b = color
symbol_layer = layer.rendererV2().symbols()[0].symbolLayer(0)
symbol_layer.setColor(QColor(r, g, b))
return layer