Cómo crear teselas vectoriales con QGIS

Las teselas vectoriales o vector tiles son una forma moderna de servir cartografía, que consiste en dividir el mapa en pequeñas porciones o teselas que contienen datos vectoriales en lugar de imágenes. Ya nos hemos ocupado anteriormente de la publicación de las teselas vectoriales con PostGIS y GeoServer, pero debido a sus ventajas y múltiples aplicaciones prácticas, consideramos importante exponer la alternativa de crearlas con QGIS. Crear las teselas vectoriales de nuestros datos desde QGIS es rápido y sencillo como veremos a continuación:

Preparar los datos

Antes de realizar la creación de las teselas conviene que revisemos y preparemos los datos.

  • Probablemente necesitaremos reproyectar los datos a un sistema de coordenadas apto para las aplicaciones webmapping. Leaflet, MapLibre GL y OpenLayers trabajan en EPSG:3857, por lo que es conveniente elegir este sistema de coordenadas para los datos.
  • También es relevante el nombre que utilicemos para la capa. En el ejemplo que vamos exponer, hemos renombrado la capa como municipio_3857. Tiene importancia porque ese nombre es el que se empleará para definir internamente las capas en el archivo pbf con las teselas vectoriales y por lo tanto es el que tenemos que utilizar luego al crear el mapa web. Por eso conviene utilizar un nombre corto y sin espacios intercalados porque nos facilitará luego el trabajo reduciendo errores.

Para crear las teselas vectoriales, utilizamos el menú de Caja de herramientas de procesos. Busca la sección de «Teselas vectoriales» y aquí selecciona «Escribir teselas vectoriales (XYZ)».

Crear teselas vectoriales en QGIS

En la ventana «Escribir teselas vectoriales (XYZ)» necesitamos definir los parámetros para crear las teselas.

Lo primero que tenemos que definir es la capa que contiene los datos a partir de los cuales creamos las teselas. Luego debemos definir los niveles de zoom que tendrán las teselas y por último el lugar de ubicación de los archivos que se van a crear:

Es importante definir bien los niveles de zoom a los que vamos a trabajar. Por cada nivel de zoom nos creará carpetas y archivos, por lo tanto debemos ser prudentes y ajustarnos a lo que necesitemos para no generar archivos innecesariamente.

Cuando tengas definidos estos parámetros haz clic en el botón «Ejecutar» para iniciar el proceso. Cuando termine habremos obtenido una serie de carpetas en el directorio de destino que contiene los archivos .pbf con las teselas vectoriales.

Teselas vectoriales en formato pbf

Si observas la carpeta donde se han guardado las teselas observarás que tienen una estructura como la siguiente:

Lo primero que vemos es que hay una carpeta por cada nivel de zoom (z) que se corresponden con los niveles de zoom que definimos antes (nivel 6 al 11). Cada una de esos niveles de zoom contiene a su vez otras carpetas (x) y estas contienen los archivos .pbf (y). Según vamos aumentando el nivel de zoom el número de archivos, es decir de teselas, se va incrementando.

Esto da como resultado la forma /z/x/y.pbf.

En resumen, podemos decir que una tesela vectorial es un trozo del mapa (tile) que contiene geometrías vectoriales + atributos, codificados normalmente en Mapbox Vector Tile (MVT), es decir, en archivos .pbf y que cada tesela cubre una zona concreta del mapa, a un nivel de zoom en una rejilla XYZ.

Visualización de vector tiles en MapLibre

Una de las características más interesantes de MapLibre GL (y de su predecesor, Mapbox GL) es que está diseñado desde el inicio para trabajar con vector tiles. En este tipo de librerías, los vector tiles no son un complemento, sino la base sobre la que se construye todo el sistema de renderizado del mapa.

Otras librerías muy conocidas en el ámbito GIS, como Leaflet u OpenLayers, también pueden trabajar con vector tiles, pero lo hacen desde enfoques distintos. En el caso de Leaflet, el soporte de vector tiles suele apoyarse en plugins y extensiones, ya que su arquitectura original está pensada principalmente para trabajar con capas ráster y geometrías vectoriales tradicionales. OpenLayers, por su parte, ofrece soporte nativo para vector tiles y un alto nivel de potencia, aunque utiliza un modelo de estilos diferente, más orientado al mundo GIS clásico que al desarrollo web.

La principal diferencia práctica es que MapLibre GL utiliza WebGL y un sistema de estilos declarativo, basado en un formato JSON. Esto permite que el aspecto visual de los mapas se defina de forma clara y estructurada, y que los estilos de las capas puedan modificarse dinámicamente desde el propio mapa web. Cambiar colores, opacidades, reglas de clasificación o responder a interacciones del usuario (por ejemplo, resaltar un elemento al hacer clic) es algo natural dentro de este modelo.

En la siguiente imagen puedes observar un ejemplo de lo que estamos tratando. Hemos utilizado los vector tiles que generamos con QGIS para crear una aplicación web, donde MapLibre carga los datos de los municipio y al hacer clic sobre alguno de ellos cambia su color para resaltarlo y abre un popup con los datos del nombre de municipio y provincia.

Gracias a esta arquitectura, MapLibre GL resulta especialmente eficiente para aplicaciones web modernas que manejan grandes volúmenes de datos vectoriales y requieren mapas interactivos, fluidos y altamente personalizables. Por este motivo, se ha convertido en una opción muy popular para visores cartográficos avanzados y aplicaciones donde el diseño y la experiencia de usuario son tan importantes como los datos.

Deja un comentario