I tried
>>>QgsVectorLayer.loadNamedStyle(r'C:\Some\Path\FOO.qlr')
Get this error:
Traceback (most recent call last):
File "", line 1, in
TypeError: arguments did not match any overloaded call:
QgsVectorLayer.loadNamedStyle(QString, bool) -> (QString, bool): first argument of unbound method must have type 'QgsVectorLayer'
QgsVectorLayer.loadNamedStyle(QString) -> (QString, bool): first argument of unbound method must have type 'QgsVectorLayer'
Then i tried:
>>>vlayer = QgsVectorLayer
>>>vlayer = loadNamedStyle(r'C:\Some\Path\FOO.qlr')
and gets the same error. The question is simple. How do i load a .qlr-file from path?
My research: The developers archive, The C++ documentation (which i suppose is good but I don't know C++), Some one with a similar problem
I have a hard time finding Api for the py qgis.
Answer
QGIS 2.x
The source file for layer definitions indicates that you need to use loadLayerDefinition
and not loadNamedStyle
. Therefore we need to specify a string path and a QgsLayerTreeGroup in which the layer will be loaded into. Then we can either:
Create a new empty group in the Table of Contents:
root = QgsProject.instance().layerTreeRoot()
group = root.addGroup("group1")
QgsLayerDefinition().loadLayerDefinition('C:/Some/Path/FOO.qlr', group)Or use an existing group:
root = QgsProject.instance().layerTreeRoot()
group = root.findGroup('group1')
QgsLayerDefinition().loadLayerDefinition('C:/Some/Path/FOO.qlr', group)
QGIS 3.x
The QgsLayerDefinition().loadLayerDefinition() function now requires the project instance as an input parameter. So the last line of each of the above code snippets can be replaced from:
QgsLayerDefinition().loadLayerDefinition('C:/Some/Path/FOO.qlr', group)
to:
QgsLayerDefinition().loadLayerDefinition('C:/Some/Path/FOO.qlr', QgsProject.instance(), group)
No comments:
Post a Comment