def _parseLayers(self): with change_directory(self.project_root): # remove map layers self.layerRegistry.removeMapLayers( self.layerRegistry.mapLayers().keys() ) for layer in self._iterateOverTagByName('maplayer'): layer_type = self._getAttr(layer, 'type').value() if layer_type == 'vector': qgsLayer = QgsVectorLayer() elif layer_type == 'raster': qgsLayer = QgsRasterLayer() # read layer from XML if not(qgsLayer.readLayerXML(layer.toElement())): raise RuntimeError( 'Layer is not readable: {}'.format( layer.firstChildElement('id').text() ) ) # get layer transparency if layer_type == 'vector': self.LAYERS_DATA[qgsLayer.id()].update({ 'transparency': qgsLayer.layerTransparency() }) elif layer_type == 'raster': qgsRasterRender = qgsLayer.renderer() self.LAYERS_DATA[qgsLayer.id()].update({ 'transparency': ( int((1 - qgsRasterRender.opacity()) * 100) ) }) del qgsRasterRender # record layer type self.LAYERS_DATA[qgsLayer.id()].update({ 'type': layer_type }) # add layer to the QgsMapLayerRegistry if qgsLayer.isValid(): self.layerRegistry.addMapLayer(qgsLayer, False) LOG.debug('Loaded layer: %s', qgsLayer.id())