Folium: utilizando Leaflet con Python

Python se introdujo en el mundo de los SIG como un lenguaje de programación relativamente fácil de aprender y de utilizar. Según ha ido pasado el tiempo este lenguaje se ha vuelto omnipresente, ofreciendo soluciones para muchos usuarios diferentes: desde el análisis espacial (en este blog hemos hablado mucho sobre el uso de Python en SIG de escritorio para automatizar tareas), hasta la gestión grandes volúmenes de datos por lo que es empleado en las empresas de Big Data.

Por su parte Leaflet es una librería JavaScript que nos permite publicar mapas en la web de forma rápida y eficaz.

La unión de ambos mundos llega de la mano de Folium. Mediante Folium podemos manipular los datos en Python y visualizar los resultados en Leaflet.

Requisitos del sistema

Folium es una librería que requiere la instalación de un par des herramientas, por lo tanto el primer paso será hacer la instalación de todos los elementos que forman su arquitectura:

  • Necesitamos, en primer lugar Python y su manejador de paquetes pip. Pip es un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python.
  • También necesitamos instalar Jupyter, que es un entorno o una shell que nos permite escribir las instrucciones en Python y ver los resultados en Leaflet. A Jupyter podemos acceder desde el navegador y aunque nosotros lo utilizaremos con Python admite otros lenguajes como R. Esta novedosa herramienta nacida en 2014, está siendo utilizada por científicos de datos e investigadores, para procesar grandes cantidades de datos.

Instalación de Folium

Lo primero será instalar Python, esto podemos hacerlo desde la página de descargas de Python aunque desde la página de Jupyter nos recomiendan que lo hagamos utilizando Anaconda. Con Anaconda se instalan conjuntamente Python y Jupyter.

Si somos usuarios de Ubuntu, y ya tenemos instalado Python, tenemos que seguir los siguientes pasos:

1.- Actualizamos Ubuntu:

2.- Instalamos Pip en Ubuntu 16.04:

3.- Verificamos que Pip está instalado escribiendo:

Obtendremos un resultado como el siguiente:

pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

En este caso necesitamos actualizar la versión de pip. Para lo cual escribimos:

4.- Si hemos completado estas operaciones nos encontraremos en disposición de instalar Jupyter:

Lo indicado hasta aquí se refiere al caso en que tengamos Python 2 instalado. Si fuese Python 3 entonces es de aplicación lo siguiente:

5.- Accedemos a Jupyter:

Esta operación nos abrirá una ventana en nuestro navegador con la url: http://localhost:8888/tree. Veremos un árbol con las carpetas de nuestro equipo, ya que en este caso hemos realizado la instalación en local.

Para cerrar Jupyter notebook tecleamos Ctrl+C y confirmamos (y)

6. Instalar Folium:

Con este último paso habremos instalado Folium y completado la instalación. Es ahora cuando estamos en condiciones empezar a trabajar con Python y visualizar los datos en Leaflet.

Trabajando con Folium

En la vista de navegador de Jupyter veremos que en la parte derecha hay una pestaña con el nombre «New«. Si hacemos clic sobre ella se nos despliega un menú:

Seleccionaremos la opción Python 2. Se nos abre una herramienta con unas ventanas donde podemos empezar a escribir las órdenes en Python.

Escribimos lo siguiente:

Para crear un mapa como vemos el único requisito necesario es proporcionar las coordenadas del centro de mapa. Por defecto Folium utiliza como mapa base OpenStreetMap.

Una vez escrito lo anterior hacemos clic sobre el botón «Run»

En la línea 2 simplemente escribimos

El resultado es el mapa que se muestra a continuación:

Otros ejemplos

En la página de Folium podemos consultar una galería de mapas y sus ejemplos. Por defecto Folium utiliza OpenStreetMap, pero están disponibles otras teselas raster como Stamen Terrain, Stamen Toner, Mapbox Bright y Mapbox Control Room.

Para utilizar Stamen Toner escribimos en la ventana lo siguiente y hacemos clic en el botón Run:

Si lo que queremos es añadir un marcador el código a utilizar será el siguiente:

En el apartado anterior vemos que además de las coordenadas del centro del mapa, estamos definiendo el nivel de zoom y seleccionando la capa «Stamen Terrain». También se puede añadir un tooltip que muestra el texto indicado, en este caso «Plaza Mayor». Para crear el marcador utilizamos folium.Marker, pasamos las coordenadas del marcador y el texto que deseamos que se muestre en el PopUp.

Si quieres aprender a crear visores web profesionales como estos, inscríbete ya en nuestro curso online visores webmapping con Leaflet.

Let’s connect!

Date de alta en nuestro newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos