I am new to the Python console. How can I add a layer from the OpenLayers plugin from the Python console?
Renaud, there are a couple of ways to do this:
- Query QGIS's interface to find and trigger the appropriate menu action.
- Work directly with the already-loaded OpenLayers plugin.
Solution #1 is pretty straightforward. OpenLayers plugin offers a good solution to #2, which will help you understand working with other plugins as well. Here is how both are accomplished.
Trigger OpenLayers plugin menu action
layeract = 'Google Physical' plugmenu = qgis.utils.iface.pluginMenu() olmenu = False for act in plugmenu.actions(): if 'OpenLayers' in act.text(): olmenu = act break if olmenu: for act in olmenu.menu().actions(): if layeract in act.text(): act.trigger()
Work directly with OpenLayers plugin
try: olplugin = qgis.utils.plugins['openlayers'] ol_gphyslayertype = olplugin.olLayerTypeRegistry.getById(0) olplugin.addLayer(ol_gphyslayertype) except KeyError: print 'OpenLayers plugin not loaded.'
This latter solution probably needs a little more explaining.
-> olplugin = qgis.utils.plugins['openlayers']
Get the OpenLayers plugin instance from qgis.utils's plugin registry.
-> ol_gphyslayertype = olplugin.olLayerTypeRegistry.getById(0)
Get the 'Google Physical' layer type object from OpenLayers's layer type registry. Open [path-to-user-plugins]/openlayers/openlayers_plugin.py and starting at line #111 you will see the order the layer types are assigned to the registry. They are given IDs starting with 0 (see rest of module for how that's done).
Loads the layer into QGIS's map canvas.
There may be other solutions as well, but those are the basics that I could find.
Since QGIS 2.4 Chugiak, the OpenLayers plugin has moved in the QGIS Gui to
Web->OpenLayers plugin, hence the first method described above won't work anymore. I updated it to match the new menu structure, see my answer here.
Still, it would be interesting to know how to adapt the second method to QGIS 2.4 and above.