Example #1
0
 def _createLayer(self, node):
     type = node.attribute('type')
     if type == "vector":
         layer = QgsVectorLayer()
     elif type == "raster":
         layer = QgsRasterLayer()
     else:
         return None
     layer.readLayerXML(node)
     return layer.id(), layer
Example #2
0
 def _create_layer(self, node):
     layer_type = node.attribute('type')
     if layer_type == "vector":
         layer = QgsVectorLayer()
     elif layer_type == "raster":
         layer = QgsRasterLayer()
     else:
         return None
     layer.readLayerXML(node)
     return layer.id(), layer
Example #3
0
    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())
    def loadqlr(self):
        path = QFileDialog.getOpenFileName(self.iface.mainWindow(), "Add QGIS Layer Definition", QDir.home().path(), "*.qlr")
        if not path:
            return

        with open(path, 'r') as f:
            content = f.read()

        doc = QDomDocument()
        doc.setContent(content)
        layernode = doc.elementsByTagName('maplayer').at(0)
        layerelm = layernode.toElement()

        layertype = layerelm.attribute("type")
        layer = None
        if layertype == "vector":
            layer = QgsVectorLayer()
        elif layertype == 'raster':
            layer = QgsRasterLayer()

        ok = layer.readLayerXML(layerelm)
        if ok:
            QgsMapLayerRegistry.instance().addMapLayer(layer)