Folium y los mapas interactivos en Python – Introducción
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()

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) )

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 )
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 Folium | Origen/Proveedor | Estilo visual | Características principales |
---|---|---|---|
"OpenStreetMap" | OpenStreetMap | Mapa clásico y general | Gratuito y abierto. Comunidad colaborativa. Buen nivel de detalle urbano y rural. |
"Stamen Terrain" | Stamen Design | Topográfico | Representa relieve, ríos, montañas. Usa datos de OSM + Natural Earth. |
"Stamen Toner" | Stamen Design | Blanco y negro de alto contraste | Muy contrastado. Ideal para impresión o sobreposición de datos. |
"Stamen Watercolor" | Stamen Design | Estilo artístico (acuarela) | Menos preciso, más estético. |
"CartoDB positron" | Carto | Minimalista claro | Muy limpio. Facilita superposición de datos. |
"CartoDB dark_matter" | Carto | Minimalista oscuro | Fondo 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.