Qué son las teselas vectoriales (vector tiles) y cómo generarlos con PostGIS / GeoServer

Una tesela vectorial (vector tiles) contiene datos vectoriales georreferenciados, recortados en teselas para facilitar su recuperación.

Las teselas vectoriales crean mapas online significativamente rápidos y a su vez ofrecen una flexibilidad completa en su diseño.

Son los datos vectoriales equivalentes a las teselas de imagen para el webmapping, aplicando las ventajas de las teselas a los datos vectoriales: desarrollados para guardarse en caché, escalabilidad y servir imágenes de mapa rápidamente.

Las teselas vectoriales son un estándar abierto, creado por la empresa Mapbox, bajo licencia Creative Commons Attribution 3.0 US.

Al igual que los WFS, ambos devuelven datos vectoriales y sus atributos (sin estilo), pero hay diferencias:

  • Los WFS devuelven los datos subyacentes sin modificar. Tienes más detalle.
  • Las teselas vectoriales devuelven objetos geográficos modificados (listos para representarse), por lo que es más fácil renderizarlos.

Ventajas de las teselas vectoriales frente a las teselas raster

Las ventajas de las teselas vectoriales frente a las teselas raster son las siguientes:

  1. Los estilos se renderizan en el navegador del cliente (por ejemplo, OpenLayers), no por el servidor. Esto permite disponer de diferentes mapas a partir de una única fuente de datos y no es necesario acceder al servidor.
  2. El tamaño de una tesela vectorial suele ser menor que una tesela de imágenes, lo que resulta en:
  3. Una transferencia de datos más rápida y requieren un menor uso de ancho de banda. Las teselas vectoriales tardan mucho menos en transmitirse que las teselas ráster.
  4. GeoWebCache, integrado con GeoServer, almacena eficientemente los datos de teselas vectoriales. GeoWebCache sólo necesita almacenar una tesela una sola vez para todos los estilos diferentes.
  5. Las teselas vectoriales ofrecen una capacidad de zoom infinita sin aumentar el tamaño del archivo de las teselas; Las teselas raster, por otro lado, tienen diferentes tamaños de archivo que no ofrecen alta resolución en los niveles de zoom de gran escala.
  6. Debido a que los datos vectoriales están disponibles en el lado del cliente, se pueden dibujar mapas de muy alta resolución sin aumento del ancho de banda.
  7. El cliente tiene acceso nativo a la información actual del objeto geográfico (atributos y geometría), lo que permite un procesamiento muy sofisticado.
  8. Hay más «know-how» en el trabajo con datos vectoriales.

Por otra parte, no son todo ventajas, también hay desventajas:

  1. Las teselas raster son más fáciles de consumir.
  2. La principal desventaja de las teselas vectoriales es que los datos geográficos necesitan ser pre-procesados ​​para permitir al cliente personalizar la simbología.

Teniendo en cuenta los factores comparativos antes mencionados, las teselas vectoriales resultan tener un rendimiento superior, ser más flexibles y dinámicas.

¿Cómo crear y/o consumir teselas vectoriales?

Mapbox soporta las teselas vectoriales a través de sus productos (Mapbox GL JS, Mapbox GL Native) y hay una amplia (realmente amplia) lista de proveedores que generan y consumen teselas vectoriales. Algunos de ellos son Mapbox Studio, ArcGIS Pro, tippecanoe, PostGIS, GeoServer, OpenLayers o Leaflet (tutorial).

Tenemos un artículo en nuestro blog muy completo en el que te mostramos cómo añadir teselas vectoriales en QGIS.

Generación de teselas vectoriales con PostGIS

Con el lanzamiento de PostGIS 2.4, se han agregado un  conjunto nuevo de funciones para generar teselas vectoriales o Mapbox vector tiles (MVT).

Desde PostGIS 2.4.0, están disponibles dos nuevas funciones: ST_AsMVTGeom y ST_AsMVT. El primero transforma una geometría en el espacio de coordenadas de un mosaico MVT.

ST_AsMVTGeom necesita al menos un objeto de geometría y los límites geográficos de las teselas  para realizar la transformación de coordenadas. El valor predeterminado es una tesela de 4096 de ancho, con un buffer de 256 px utilizado para el recorte de geometría, y el indicador de recorte de geometría.

ST_AsMVT nos permite crear un mosaico completo a partir de una consulta SQL. Necesita un conjunto de filas (features vectoriales) para generar el mosaico MVT, y podemos usar la geometría de la función anterior para alimentarlo:

Cualquier atributo seleccionado de la tabla original (capa vectorial) se incluirá en las teselas. El parámetro <bounds> se debe calcular para cada mosaico, de acuerdo con la cuadrícula elegida. El resultado de esta función serán los datos binarios con las teselas PBF.

Generación de teselas vectoriales con GeoServer

Además de las teselas de imagen más estándar, GeoServer admite como formato de salida las «teselas vectoriales». Por el momento las teselas vectoriales son un formato de salida, no es una fuente de datos.

Mientras que la salida estándar WMS generará una imagen de mapa georreferenciada, una tesela vectorial contiene datos vectoriales georreferenciados, recortados en teselas para facilitar su recuperación.

Instalación de la extensión Vector Tiles en GeoServer

La extensión es válida para GeoServer 2.11.0 o superior. No es compatible con versiones anteriores de GeoServer.

La extensión Vector Tiles es una extensión oficial, disponible en la página de descargas de GeoServer o haciendo clic aquí.

extensión vector tiles

  1. Descargaremos la extensión.
  2. Extraemos el archivo y copiamos el contenido en el directorio GeoServer WEB-INF / lib.
  3. Reiniciamos.

Para verificar que la extensión se ha instalado correctamente debemos:

  1. Abrir la interfaz de administración Web accediendo normalmente a http://localhost:8080/geoserver/ y loguearnos.
  2. En el menú izquierdo vamos a Datos > Capas y seleccionamos una capa vectorial.
  3. Haga clic en la pestaña Cacheado de Teselas.

  1. Bajamos hasta la sección Cache image formats. Además de los formatos estándar GIF / PNG / JPEG, debería ver lo siguiente:
  • application/json;type=geojson
  • application/json;type=topojson
  • application/x-protobuf;type=mapbox-vector

Si no ves estas opciones, la extensión no se ha instalado correctamente.

Formatos de las teselas vectoriales

GeoServer puede producir teselas vectoriales en tres formatos:  MapBox MVT, GeoJSON, TopoJSON. Algunos de los formatos GIS vectoriales más utilizados.

De los tres, Mapbox MVT es el formato preferido en producción.

  • MapBox Vector (MVT)application/x-protobuf;type=mapbox-vectorEste es el formato recomendado. Es un formato binario  ampliamente soportado por casi todas las aplicaciones Vector Tiles.
  • GeoJSON – application/json;type=geojson – Se trata de un formato JSON legible por humanos. Aunque muchas aplicaciones geoespaciales soportan conjuntos de datos GeoJSON, pocas aplicaciones de Vector Tile admiten teselas en formato GeoJSON. Soportado por OpenLayers 3.
  • TopoJSON – application/json;type=topojson – Se trata de un formato JSON muy complejo y poco legible para el usuario. Sin embargo es un buen formato para trabajar con coberturas de tipo polígono porque admite topología. No tiene un soporte generalizado por lo que muy pocas aplicaciones lo admiten. Si que lo admite OpenLayers 3.

Publicación de teselas vectoriales con GeoWebCache

La creación de teselas vectoriales se realiza a través de GeoWebCache.

El proceso es tan sencillo como acceder a la interfaz web de GeoServer, hacer clic en Cacheado de Teselas > capas en caché

A continuación debemos seleccionar la capa que queremos tener disponible en formato de teselas vectoriales y se abrirá la pestaña Cacheado de teselas.

Bajamos hasta la sección Cache image formats y marcamos las casillas para los formatos:

  • application/json;type=geojson
  • application/json;type=topojson
  • application/x-protobuf;type=mapbox-vector

Guardamos y tenemos listas la capa en formato Vector Tiles.

También es posible realizar una petición GetMap añadiendo el parametro FORMAT. Ejemplo:

SERVICE=WMS&REQUEST=GetMap&FORMAT=application/x-protobuf;type=mapbox-vector

Utilización de teselas vectoriales en clientes web

Estas teselas vectoriales son compatibles con los clientes web más populares como ArcGIS API for JavaScript, CARTO Mobile SDK, o el cliente de mapas OpenLayers de forma nativa, a través de la clase ol.format.MVT.

Leaflet también soporta las teselas vectoriales, pero a través de extensiones como Leaflet.VectorGrid o Hoverboard. En esta entrada te mostramos como añadir teselas vectoriales en Leaflet utilizando el primer plugin.

Veremos el consumo de las teselas vectoriales en OpenLayers en otra entrada.

Más info:

Estilos de las teselas vectoriales

En el caso de las teselas vectoriales, al igual que sucede con los servicios WFS, el estilo se representa en el cliente.

Mapbox, principal proveedor de servicios web de mapas basados en teselas vectoriales, ha desarrollado una especificación abierta para la creación de documentos de definición de estilos en formato JSON. Esta especificación, denominada Mapbox Style Specification, describe la estructura que deben tener estos documentos, donde se indica, entre otros aspectos, las direcciones de los servidores de mapas, las capas que se desean pintar, cómo hacerlo (color, grosor, utilización de iconos, etc) y cuándo (escalas máximas y mínimas, filtros en función de atributos de las entidades geográficas, etc). Se trata de una especificación bastante potente, que ofrece muchas posibilidades de configuración, por lo que, en cierto modo, podría resultar complicada de utilizar a desarrolladores no expertos en la materia.

Fuente: GEOSLAB:COM – CREANDO ESTILOS PARA TESELAS VECTORIALES

Para facilitar la creación de estilos conforme a la especificación de Mapbox, existe un editor visual, gratuito y abierto,denominado Maputnik. Maputnik es pues un editor visual para Mapbox GL.

El objetivo principal de Maputnik es crear una alternativa gratuita a Mapbox Studio basada en la nube que permita a las empresas y particulares a crear sus propios estilos de mapa sin la necesidad de vincularse a los servicios de una sola empresa, pero beneficiándose del increíble ecosistema Mapbox GL.

MAPBOX VECTOR TILE SPECIFICATION: Una guía para codificar datos de teselas vectoriales con la especificación de teselas vectoriales de Mapbox.

2 comentarios en “Qué son las teselas vectoriales (vector tiles) y cómo generarlos con PostGIS / GeoServer”

  1. Gracias por la información. Una pregunta, ¿Se pueden generar teselas 3D? … de ser así, ¿con qué herramientas se pueden hacer?, saludos.

Los comentarios están cerrados.