Folium y los mapas interactivos en Python – Introducción

Publicado por Andrea Navarro en

En este artículo introductorio a Folium veremos como instalar y utilizar esta librería para crear mapas interactivos en Python.

¿Qué es Folium?

Folium es una librería de Python que permite crear mapas interactivos utilizando Leaflet.js, una biblioteca de JavaScript para mapas web open source. A diferencia de Google Maps, Leaflet.js no requiere licencias ni uso comercial limitado.

Esta librería escrita en JavaScript es muy ligera lo que permite su uso en aplicaciones que requieran agilidad en la carga de mapas. Otra ventaja importante es que no depende obligatoriamente de un servidor de tiles (las imágenes que componen un mapa) por lo que se puede utilizar cualquier tipo, o incluso crear y utilizar mapas propios o locales.

Folium permite hacer uso de Leaflet.js en Python para crear mapas, cargar marcadores, lineas y otros tipos de formas, visualizar datos geoespaciales, agregar elementos de interactividad y muchas cosas más.

Instalación de Folium

Para instalar la librería Folium podemos utilizar pip

pip install folium

O en el caso de utilizar conda:

conda install folium -c conda-forge

Creación de mapas

Para crear un mapa base es necesario importar la librería e inicializar la clase Map.

#Importar librería
import folium

#Inicializar mapa
mapa = folium.Map()
folium map

El mapa interactivo permite hacer zoom y desplazarse.

Posición inicial

Para configurar la posición inicial de un mapa se debe utilizar el parámetro location cuyo valor será una tupla representando latitud y longitud.

import folium
mapa = folium.Map(location = (-34.6134945536014, -68.32745300275877) )
folium

Aunque la latitud y longitud configurada será el centro del mapa cuando este se abra por primera vez el usuario podrá desplazarse normalmente.

Zoom inicial

Para establecer el zoom inicial en el que se verá el mapa se utiliza el parámetro zoom_start.

import folium
mapa = folium.Map(location = (-34.6134945536014, -68.32745300275877), zoom_start=5 )
folium mapa argentina
Zoom inicial de 5
folium zoom inicial de 15
Zoom inicial de 15

Este zoom será el que se mostrará cuando se abra el mapa interactivo pero permitirá su ajuste. Para limitar el zoom permitido pueden utilizarse los parámetros min_zoom y max_zoom.

import folium
mapa = folium.Map(location = (-34.61, -68.32), zoom_start=5, min_zoom =5, max_zoom=7 )

Tiles

Los tiles (o teselas) son pequeñas imágenes cuadradas que, al unirse, forman el mapa que es visualizado. El mapa se divide en una cuadrícula de imágenes, cada nivel de zoom tiene asociado un conjunto de tiles que cubre el area del mapa con el detalle correspondiente. Al hacer zoom el sistema carga solo los tiles necesarios para mostrar esa sección de mapa.

Folium reconoce por defecto los siguientes tiles:

Nombre en FoliumOrigen/ProveedorEstilo visualCaracterísticas principales
"OpenStreetMap"OpenStreetMapMapa clásico y generalGratuito y abierto. Comunidad colaborativa. Buen nivel de detalle urbano y rural.
"Stamen Terrain"Stamen DesignTopográficoRepresenta relieve, ríos, montañas. Usa datos de OSM + Natural Earth.
"Stamen Toner"Stamen DesignBlanco y negro de alto contrasteMuy contrastado. Ideal para impresión o sobreposición de datos.
"Stamen Watercolor"Stamen DesignEstilo artístico (acuarela)Menos preciso, más estético.
"CartoDB positron"CartoMinimalista claroMuy limpio. Facilita superposición de datos.
"CartoDB dark_matter"CartoMinimalista oscuroFondo oscuro con calles en gris claro. Buena para visualización nocturna.

Folium utiliza por defecto OpenStreetMap, para utilizar las imágenes de otro proveedor se utiliza el parámetro tiles.

import folium
mapa = folium.Map(location = (-34.61, -68.32), zoom_start=15, tiles="Stamen Terrain")

En algunos casos Folium agregará automáticamente las atribuciones requeridas por el servidor de tiles seleccionado y en otros casos será necesario agregarlas manualmente con el parámetro attr. Si se quiere utilizar un servidor que no esté por defecto en Folium se debe cargar la url correspondiente en el parámetro tiles.

import folium
mapa = folium.Map(location = (-34.61, -68.32), zoom_start=15, 
               tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
               attr='Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community')

En el siguiente ejemplo se están utilizando los tiles de imágenes satelitales de ESRI.


En este artículo hemos visto como instalar Folium y utilizarlo para crear mapas interactivos en Python. Hemos visto algunas de las configuraciones iniciales de los mapas y hemos explorado los diferentes servidores de tiles que pueden utilizarse.


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora