En diversas notas hemos abordado los beneficios de trabajar con teselas vectoriales (Ver el servicio beta de Vector Tiles en IDECOR) o aprovechar soluciones prácticas y eficientes para trabajar datos geoespaciales con este formato (Ver Mapbox Vector Tiles y MVT Server para la gestión de datos geoespaciales).
En esta entrega, te contamos lo que necesitas para utilizar MVT Server, un servidor open source para el trabajo con datos geoespaciales y te detallamos los pasos para comenzar a utilizarlo.
MVT Server es un servidor desarrollado en Rust, que permite publicar como teselas vectoriales, capas geográficas que estén presentes en una base de datos PostgreSQL/PostGIS.
Se trata de una herramienta que genera vector tiles de manera dinámica, en el momento en que el cliente realiza la solicitud, especialmente útil para datos que cambian con frecuencia o que se construyen bajo demanda.
Instalación y ejecución
MVT Server puede ejecutarse descargando el código fuente y compilándolo o bien desde los binarios para diferentes sistemas operativos disponibles en este repositorio.
Para compilar el código fuente se requiere tener instalado Rust, cuyas instrucciones de instalación están disponibles en este enlace.
El código fuente está disponible aquí, o bien puede clonarse usando Git.
Imagen 1. Instalación de MVT Server.
Al momento de su ejecución, el servidor requiere la definición de ciertas variables de entorno, o bien ser iniciado con los parámetros correspondientes en la línea de comandos.
Si se opta por el uso de variables de entorno, lo más recomendable es crear un archivo llamado .env en el directorio raíz del proyecto. Algunas de las variables más relevantes son:
- DBCONN: Cadena de conexión a la base de datos PostgreSQL.
- POOLSIZEMIN y POOLSIZEMAX: Tamaño mínimo y máximo del pool de conexiones a la base de datos.
- IPHOST y PORT: Dirección IP y puerto en los que el servidor estará escuchando.
- REDISCONN: Cadena de conexión a Redis, en caso de utilizarlo como sistema de caché.
- JWTSECRET y SESSIONSECRET: Claves secretas utilizadas para la generación de tokens JWT y la gestión de sesiones, respectivamente.
Imagen 2. Configuración de variables de entorno.
MVT Server incluye un asistente interactivo que facilita la configuración de las variables de entorno. Para ejecutarlo, utilice el siguiente comando según su sistema operativo:
Sistemas tipo Unix (Linux/macOS/FreeBSD):
./mvt-server -C
Windows:
mvt-server.exe -C
Este asistente generará un archivo .env con las variables necesarias para la correcta ejecución del servidor.
O bien. se puede ejecutar la aplicación usando parámetros:
./mvt-server \
–config config_folder \
–cache cache_folder \
–mapassets mapassets_folder \
–host 127.0.0.1 \
–port 8000 \
–dbconn «postgres://user:password@localhost:5432/mydb» \
–dbpoolmin 5 \
–dbpoolmax 20 \
–redisconn «redis://127.0.0.1:6379» \
–jwtsecret «supersecretjwt» \
–sessionsecret «supersecretsession»
Ejecutando con Docker
Se encuentra disponible un archivo docker-compose.yml que permite ejecutar MVT Server junto con sus servicios dependientes: PostgreSQL, PostGIS y Redis, todo integrado en un entorno de contenedores.
Requisitos
- Docker
- Docker Compose
Iniciar los servicios con:
docker-compose up
Podés ver más detalles aquí.
Panel de administración
En el contexto de la configuración inicial del servidor, se establece un usuario por defecto identificado como ‘admin’, cuya dirección de correo electrónico es [email protected] y contraseña predeterminada es ‘admin’.
Es fundamental modificar dicha contraseña tras el primer acceso al sistema con el fin de garantizar la seguridad de las credenciales. El acceso al panel de administración se realiza a través de http://localhost:5800 o mediante la dirección previamente configurada para este propósito.
Imagen 3. Acceso al panel de administración.
MVT Server tiene soporte de i18n (internacionalización) por lo que las capturas de pantalla y las referencias que aparezcan en esta nota dependerá de la configuración del idioma en el navegador. Para la configuración en español de Argentina (ES-Ar):
- El panel de administración constituye una herramienta integral para la gestión de múltiples aspectos del servidor, tales como usuarios, grupos, categorías, catálogo y estilos. Dentro de este entorno, es posible llevar a cabo la publicación de capas accediendo al apartado denominado Catálogo.
- Nueva capa: Dentro del Catálogo, se seleccionará la opción «Publicar Capa«.
- Formulario de configuración de la capa: en el formulario es posible completar la información referente a las principales propiedades de la capa a publicar.
Categoría: permite asociar capas a una categoría.
Geometría: indica el tipo de geometría de la capa: puntos, líneas o polígonos.
Nombre: representa el identificador único de la capa dentro del sistema. Es recomendable usar una palabra en minúsculas, sin espacios, para facilitar la gestión y referencia.
Alias: es una etiqueta más descriptiva que el nombre, pensada para proporcionar un contexto más claro sobre la capa. Puede incluir espacios y caracteres que hagan más comprensible su propósito.
Descripción: permite describir de una manera más extensa a la capa, es un texto libre.
Fuente de datos: corresponde al esquema y la tabla seleccionados de la base de datos PostgreSQL. Estos determinan el contenido geográfico y los atributos de la capa que se publicará.
Campos: incluyen las propiedades que se desean exponer de la tabla seleccionada. La recomendación es limitarse solo a los campos necesarios, para optimizar el rendimiento y evitar incluir información innecesaria.
Filtro: se pueden filtrar los registros introduciendo aquí las condiciones correspondientes la cláusula where de una consulta SQL. Por ejemplo: valor_suelo >= 1000
ZMin y ZMax: definen los niveles de zoom mínimo y máximo en los que la capa será visible. Ayuda a optimizar la representación de datos y a mejorar la experiencia del usuario. Los valores deben ser configurados con precisión, utilizando herramientas como el mapa integrado para visualizar los resultados.
Caché: permite definir la duración de los datos almacenados en la memoria caché. Para capas que no cambian con frecuencia, se recomienda establecer una duración infinita (valor de caché igual a 0), y para datos dinámicos podría ajustarse a una duración más corta. La caché se guarda localmente en el directorio «cache» por defecto, pero se puede configurar otra ubicación y se puede purgar en cualquier momento. Cada capa gestiona la expiración de su caché de forma independiente.
El resto de los campos (variables) se pueden dejar con sus valores por defecto.
Imagen 4. Formulario de alta de una capa.
- Al finalizar la carga de datos en el formulario y configuración de la capa se pueden guardar los cambios.
- Luego, se puede verificar o validar la información almacenada para cada capa publicada.
Imagen 5. Previsualización de la capa.
Después de seguir estos pasos, la capa de datos estará configurada en el servidor MVT Server y disponible para ser solicitada por clientes (como QGIS, MapLibre GL JS, OpenLayers, Leaflet, etc.) que consumirán las teselas vectoriales generadas dinámicamente por el servidor, a partir de la base de datos PostgreSQL.
Configuración de estilos
Además de servir teselas, MVT Server puede servir estilos, que pueden ser consumidos en QGIS o en MapLibre. El servidor también permite servir sprites y glifos personalizados.
1. Gestión de Estilos: dentro de la consola de administración, en la sección dedicada a los estilos. Se pueden definir y gestionar los estilos de renderizado para cada una de las capas. Estos estilos determinan cómo aparecerán las capas en el mapa, incluyendo aspectos como colores, símbolos y etiquetas.
Imagen 6. Pantalla de gestión de estilos.
2. Publicación de estilos: el servidor permite publicar los estilos creados. Esta funcionalidad es importante porque asegura que las teselas vectoriales se rendericen de manera consistente y como se pretende visualizar en diferentes plataformas o herramientas. Los estilos publicados pueden ser utilizados por clientes GIS como QGIS.
Imagen 7. Publicación de estilos.
3. Soporte para MapLibre Style Specification: el servidor MVT es compatible con la especificación de estilos de MapLibre. Esto permite que clientes como MapLibre carguen un proyecto de estilo completo, que incluye no solo la apariencia de las capas, sino también las fuentes de datos, metadatos, sprites, glifos, niveles de zoom y la vista inicial del mapa (centro y zoom predeterminado).
4. Servidor de leyendas: una vez definidos los estilos pueden obtenerse las leyendas, correspondiente a las capas, en formato svg para ser usadas en el desarrollo de alguna aplicación cliente. Ejemplo:
5. Servidor Integrado de Glifos y Sprites: MVT Server cuenta con un servidor integrado de glifos y sprites. Estos son componentes esenciales para aplicar estilos personalizados, permitiendo el uso de iconos personalizados y fuentes de texto. Se deben organizar los archivos de sprites y glifos en una estructura de directorios específica y configurar el archivo JSON de estilo de MapLibre para que apunte a las URL de estos servicios proporcionados por el servidor MVT Server. El servidor puede servir glifos generados a partir de fuentes utilizando herramientas externas como fontnik, y aunque la versión actual solo soporta una fuente en el array text-font de un estilo, el servidor verifica la existencia de la fuente a través del panel de administración.
Imagen 8. Layer (capa) publicada Sin Estilo y Con Estilo asignado.
Esta nota se basa en la presentación Uso de Mapbox Vector Tiles en la gestión de datos geoespaciales: Servidor MVT-Rust-Ágil-Simple, realizada durante las XIX Jornadas IDERA.
Si te interesan este tipo de herramientas y contenidos, sumate a nuestra comunidad abierta de desarrollo de aplicaciones y geoservicios, completando el formulario de IDECOR-Dev.
Para conocer más acerca de otros recursos y servicios disponibles de IDECOR, escribinos a [email protected]. Seguí informándote acerca de nuestras novedades. Suscribite para recibir nuestro boletín y seguinos en Instagram y Linkedin.
Colaboración:
Anal. de Sist. José Jachuf,
Anal. de Sist. Carlos Salinas,
IDECOR