Las capas XYZ son unos recursos muy utilizados y extremadamente útiles para poder cargar mapas base de una manera muy sencilla en QGIS. Una capa XYZ es un mapa de teselas, donde la X y la Y identifican las coordenadas de la tesela, mientras que la Z identifica el nivel de zoom a la que se representan esas teselas.

En esta entrada vamos a explicar cómo cargar una capa XYZ como mapa base, pero no de manera manual, sino utilizando Python y QGIS.

Para el ejemplo vamos a coger una capa XYZ de OpenStreetMap: OSM Standard. Lo primero en el script para llevar a cabo la importación de la capa XYZ de OSM Standard es importar las librerías y clases que nos hacen falta.

/**
from qgis.core import QgsRasterLayer, QgsProject
*/

Después, referenciamos una variable que contenga la URL de la capa XYZ y otra variable que contenga la clase QgsRasterLayer. Como primer parámetro le introduciremos una concatenación del tipo de capa (XYZ) y la url anteriormente referenciada. Como segundo parámetro le introducimos el nombre que queremos que tenga la capa en nuestro proyecto, y como tercer argumento le introducimos el proveedor (WMS).

/**
 url = 
 'https://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png&zmax=19&zmin=0&crs=EPSG3857'
rasterLayer = QgsRasterLayer("type=xyz&url=" + url, 'OSM', "wms")
 */

Para añadir la capa, simplemente debemos introducir el método addMapLayer(capa) de la clase QgsProject.

/**
QgsProject.instance().addMapLayer(rasterLayer)
*/

Con esto ya tendríamos nuestra capa XYZ cargada en nuestro proyecto, pero colocada encima de todas las demás capas. Como en este caso estamos hablando de un mapa base, lo que queremos es colocarlo debajo de todas las demás capas dentro de nuestro árbol de capas. Para ello, como segundo argumento del método addMapLayer (argumento “añadir a la leyenda”, que por defecto se incluye como True), le especificamos False. De esta manera la capa no se añade directamente al canvas.

/**
QgsProject.instance().addMapLayer(rasterLayer, False)
*/

Para añadir la capa al canvas, vamos a referenciar el árbol de capas con el método layerTreeRoot() de la clase QgsProject y vamos a utilizar su función insertLayer(), la cual en su primer argumento le podemos especificar el índice que tomará la capa en el árbol de capas (-1 indica que cogerá el último índice, por lo que estará debajo de todas las demás capas). Como segundo argumento le especificamos la capa que queremos añadir.

/**
root = QgsProject.instance().layerTreeRoot()
root.insertLayer(-1, rasterLayer)
*/

Este sería el código completo:

/**
from qgis.core import QgsRasterLayer, QgsProject

url = 'https://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png&zmax=19&zmin=0&crs=EPSG3857'
rasterLayer = QgsRasterLayer("type=xyz&url=" + url, 'OSM', "wms")

QgsProject.instance().addMapLayer(rasterLayer, False)
root = QgsProject.instance().layerTreeRoot()
root.insertLayer(-1, rasterLayer)
*/

Si deseas aprender más sobre PyQGIS no dudes en contactarnos para conseguir información sobre nuestro curso online de PyQGIS.

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)

Cargando…

Formación de calidad impartida por profesionales