Si trabajas con datos geográficos y buscas una solución de código abierto para ejecutarlos en la web, consolas o aplicaciones de escritorio, MapLibre con Python puede ser la respuesta.
MapLibre GL JS es una librería de mapeo de código abierto conocida por su capacidad para renderizar mapas vectoriales interactivos de alto rendimiento en el navegador web.
MapLibre for Python o py-MapLibre es una librería de Python que proporciona enlaces (bindings) para MapLibre GL JS. Permite la integración de la API de MapLibre con Python, para la creación de visualizaciones de datos espaciales, directamente desde dicho lenguaje de programación.
En otras palabras, la librería de Python (MapLibre) integra la potencia de mapeo directamente en el flujo de trabajo de Python, lo que permite tomar los datos espaciales procesados con dicho código y convertirlos fácilmente en visualizaciones web dinámicas.
MapLibre, su origen en el código abierto
MapLibre es una biblioteca de mapas de código abierto que permite desarrollar aplicaciones web y móviles. La herramienta presenta ventajas comparativas respecto de otros software.
Esta aplicación nació como un fork o bifurcación del proyecto Mapbox GL JS. como una herramienta de mapeo potente bajo un modelo completamente de código abierto y gratuito.
En el mundo del software libre, un fork se refiere cuando un grupo de desarrolladores a partir del código fuente de un proyecto existente crea uno nuevo, a menudo para seguir una dirección diferente o mantenerlo bajo una licencia más abierta, y dejarlo a disposición de desarrolladores y empresas que deseen utilizarlo.
El proyecto se encuentra en constante desarrollo y mejoras por parte de las comunidades de código abierto y se ha transformado en una importante biblioteca de mapeo en aplicaciones web.
Visualizaciones web potentes con datos espaciales
El objetivo principal de utilizar MapLibre con Python radica en facilitar la creación de visualizaciones web de datos espaciales, lo cual se logra al integrar vector tiles disponibles en MapLibre, con el robusto ecosistema espacial de Python.
Los vector tiles o teselas vectoriales son una forma eficiente de distribuir datos geográficos para la visualización en mapas interactivos, que se presentan en pequeñas unidades discretas llamadas ‘teselas’, ‘tiles’ o ‘mosaicos’.
La librería se integra perfectamente en entornos populares de desarrollo web y análisis de datos, como Shiny para Python y Jupyter, de lo cual resulta su pertinencia de incorporarla en aplicaciones web interactivas o en dashboard o notebooks de análisis de datos.
Ventajas de usar MapLibre a través de Python
MapLibre con Python o py-MapLibre abre un mundo de posibilidades para visualizar tus datos espaciales de manera interactiva y en la web, con la flexibilidad y potencia de Python y bajo el modelo de código abierto.
En resumen, se trata de una alternativa a otras herramientas para la visualización de datos espaciales que, bajo el modelo de código abierto, combina la flexibilidad de Python y la potencia del motor de renderizado MapLibre GL JS. Entre sus principales ventajas se destacan las siguientes:
- Permite crear mapas interactivos en 2D y 3D, lo cual es clave para la presentación y el análisis de datos geoespaciales.
- Utiliza el motor de renderizado MapLibre GL JS, que aprovecha WebGL. Esto puede ofrecer mejor rendimiento y mayor estabilidad.
- Soporta estándares de mapeo modernos como vector tiles, que son eficientes para grandes conjuntos de datos y permiten una estilización dinámica.
- Ofrece visualizaciones personalizables que permiten a los profesionales de SIG desarrollar presentaciones adaptadas a sus datos.
- Habilita la personalización de elementos del mapa como marcadores, líneas, polígonos, y controles interactivos.
- Integra y gestiona múltiples capas de datos en varios formatos, como GeoJSON, raster y vectoriales.
- Facilita la exploración de características avanzadas como modelos de edificios 3D y mapas coropléticos (mapas temáticos).
- Permite exportar los mapas interactivos como archivos HTML autónomos para compartir y desplegar fácilmente en la web.
- Es una herramienta de código abierto, lo que implica acceso gratuito, transparencia y una comunidad activa.
Cómo crear un dashboard para visualizar datos geográficos de IDECOR
A continuación, detallamos el paso a paso, para empezar a trabajar con MapLibre en Python y crear visualizaciones web para tus datos espaciales. Desarrollaremos una pequeña aplicación que muestra una gráfica del área afectada por incendios en la provincia de Córdoba.
1. Descarga de los datos
Para descargar los datos, ingresamos a la sección Descargas de Mapas Córdoba (https://mapascordoba.gob.ar/#/descargas). Una vez allí, seleccionamos el grupo temático “Mapas de Riesgo” y por último “Áreas Afectadas por Incendios”. En el caso del ejemplo descargamos “Áreas Afectadas por Incendios 2024” en el formato JSON.
2. Transformación del SRID
Hay que considerar que esta capa, como casi todas las que provee IDECOR, está en el sistema de referencia SRID 22174. Para usar en MapLibre deberemos transformarla a SRID 4326. Esto se puede realizar usando QGIS, GDAL u otras herramientas.
Cuando descargues el proyecto desde Github tendrás la capa GEOJSON ya transformada a SRID 4326 y lista para usar.
SRID (del inglés Spatial Reference System Identifier) o Identificador de Referencia Espacial, es un identificador estándar único que hace referencia a un sistema de coordenadas.
3. Creación del entorno virtual en Python y activación
Antes que todo, necesitas tener Python instalado. Si estás usando algún sistema operativo UNIX like, seguramente ya está instalado. En caso que no lo tengas, en el sitio oficial www.python.org puedes descargar el instalador y seguir las instrucciones de instalación de acuerdo al sistema operativo que uses.
$ python3 -m venv mivenv
$ source mivenv/bin/activate
4. Instalación de dependencias
Una vez creado y activado el entorno virtual procederemos a la instalación de las dependencias. Existen varias opciones para instalar MapLibre, en nuestro ejemplo usaremos la completa:
(mivenv)$ pip install «maplibre[all]» plotly
5. Descargá el código en nuestro GITHUB
Podes ver el código del ejemplo aquí: https://github.com/IDECOR/pymaplibre
y descargarlo desde el Github de IDECOR
6. Ejecuta la aplicación
En primer lugar debes descomprimir el archivo descargado e ingresar a pymaplibre-main o el nombre de la carpeta del código.
(mivenv)$ cd pymaplibre-main
(mivenv)$ ptyhon app.py
7. Captura del resultado
Ingresar a http://127.0.0.1:8000. El ejemplo muestra una gráfica de barras con la superficie afectada por los incendios agrupadas por localización próxima de las zonas que se visualizan en el mapa. A medida que se navega por el mapa, dichas gráficas se actualizan.
Como se puede apreciar, se trata de un ejercicio simple para comenzar a trabajar con esta biblioteca en MapLibre y aprovechar la potencia de Python. ¿Te animás a probarlo?
Contanos tu experiencia en el uso de MapLibre for Python, escribinos a idecor@cba.gov.ar. 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 idecor@cba.gov.ar. 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,
IDECOR