[GIS] How to add OpenLayers layer from the Python console

pyqgisqgisqgis-plugins

I am new to the Python console. How can I add a layer from the OpenLayers plugin from the Python console?

Best Answer

Renaud, there are a couple of ways to do this:

  1. Query QGIS's interface to find and trigger the appropriate menu action.
  2. 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).

-> olplugin.addLayer(ol_gphyslayertype)

Loads the layer into QGIS's map canvas.

There may be other solutions as well, but those are the basics that I could find.