Encontrar una vivienda adecuada cerca de la escuela de nuestros hijos es una preocupación común para muchas familias. Afortunadamente, los mapas de isócronas ofrecen una manera efectiva de visualizar áreas accesibles en función del tiempo de viaje. En este blogpost, aprenderás cómo utilizar Python y las bibliotecas Leaflet y Folium para crear un mapa interactivo de isócronas en la ciudad de Nantes, Francia, y encontrar el lugar ideal para vivir cerca del nuevo colegio de tus hijos.

Requisitos previos
Antes de comenzar, asegúrate de tener instaladas las siguientes bibliotecas de Python en tu entorno:
- Folium
- Requests
- Shapely
import folium
import requests
from shapely.geometry import Polygon
from shapely.ops import cascaded_union
Además, necesitarás obtener un token de acceso al servicio de isócronas de Mapbox. Si aún no tienes uno, puedes crear una cuenta gratuita en Mapbox y obtener el token desde su sitio web.
Paso 1: Definir la ubicación y los intervalos de tiempo
En primer lugar, necesitamos establecer la ubicación del nuevo colegio de tus hijos en Nantes. Utiliza las coordenadas de latitud y longitud para marcar esta ubicación en el mapa.
# Define la ubicación y el punto de partida (Nantes, Francia)
lat = 47.23864
lon = -1.53362
Yo utilicé Google Maps para localizar el lugar. Click derecho sobre el nodo rojo del mapa y te mostrará las coordenadas que necesitas. 📍🗺
Luego, determina los intervalos de tiempo deseados en minutos, considerando el tiempo máximo que estás dispuesto a invertir en el viaje diario de tus hijos hacia y desde la escuela. Por ejemplo, podrías establecer intervalos de 10, 20 y 30 minutos.
# Define los intervalos de tiempo en minutos para las isócronas
intervalos = [5, 10, 15] # Ajustados a 5, 10 y 15 minutos en velocidad promedio de una persona caminando
Paso 2: Obtener los datos de isócronas
Usaremos la biblioteca requests para enviar una solicitud HTTP al servicio de isócronas de Mapbox y obtener los datos correspondientes a cada intervalo de tiempo.
# Define el token de acceso al servicio de isócronas
token = "pk.token.mapbox" # Reemplaza con tu propio token
# Crea un mapa interactivo utilizando Folium
mapa = folium.Map(location=[lat, lon], zoom_start=15)
# Recorre los intervalos de tiempo y obtiene las isócronas
for intervalo in intervalos:
# Construye la URL de la solicitud de isócrona
url = f"https://api.mapbox.com/isochrone/v1/mapbox/walking/{lon},{lat}?contours_minutes={intervalo}&polygons=true&access_token={token}"
# Realiza la solicitud HTTP y obtiene los datos de la respuesta
response = requests.get(url)
data = response.json()
Construiremos la URL de la solicitud de isócrona utilizando las coordenadas de la ubicación del colegio y el token de acceso proporcionado por Mapbox. Luego, enviaremos la solicitud y obtendremos la respuesta en formato JSON.
Paso 3: Procesar los datos y generar los polígonos
Una vez que obtengamos los datos JSON de cada isócrona, extraeremos las coordenadas de los polígonos de isócrona utilizando la biblioteca shapely.
# Extrae las coordenadas de los polígonos de isócrona
coordenadas = data["features"][0]["geometry"]["coordinates"]
# Crea un polígono de Shapely y agrega los puntos del polígono
poligono = Polygon(coordenadas[0])
# Agrega el polígono al mapa como una capa GeoJSON
folium.GeoJson(
data=data,
style_function=lambda x: {'fillColor': '#e26e4d', 'color': '#ea4141', 'weight': 1, 'fillOpacity': 0.3},
name=f"{intervalo} min"
).add_to(mapa)
A continuación, utilizaremos la operación cascaded_union de shapely para combinar los polígonos de isócrona en uno solo. Esto nos dará un polígono que representa todas las áreas accesibles dentro de los intervalos de tiempo establecidos.
Paso 4: Crear el mapa interactivo con Folium
Utilizaremos la biblioteca folium para crear un mapa interactivo y agregar el polígono de isócrona como una capa GeoJSON. Estableceremos un estilo para el polígono y ajustaremos la opacidad para una mejor visualización.
# Agrega una capa de control para alternar la visualización de las isócronas folium.LayerControl().add_to(mapa)
Además, agregaremos otras capas útiles, como escuelas cercanas, transporte público o tiendas, para ayudarte a tomar una decisión informada sobre la ubicación de tu nuevo hogar.
Paso 5: Guardar y visualizar el mapa interactivo
Finalmente, guardaremos el mapa interactivo en un archivo HTML y lo visualizaremos en un navegador web. El archivo HTML contendrá todos los elementos necesarios, incluidos los datos y las configuraciones del mapa.
# Guarda el mapa interactivo como un archivo HTML
mapa.save("webmap.html")
https://javierladino.com/es/wp-content/uploads/2023/05/webmap.html
En este enlace ☝ podrás explorar el mapa interactivo para encontrar áreas que están dentro de los intervalos de tiempo deseados y cerca del colegio de tus hijos. Esto te ayudará a identificar posibles vecindarios y tomar una decisión informada sobre dónde buscar tu nuevo hogar.
Conclusiones
En este blogpost, has aprendido cómo utilizar mapas de isócronas para encontrar una vivienda cerca del nuevo colegio de tus hijos utilizando Python y las bibliotecas Leaflet y Folium. Estos mapas interactivos te permitirán visualizar las áreas accesibles en función del tiempo de viaje y tomar una decisión informada sobre la ubicación de tu hogar. Ahora estás listo para comenzar tu búsqueda y encontrar el lugar perfecto para vivir cerca de la escuela de tus hijos. ¡Buena suerte!
Descarga el código de Github
Puedes acceder al código del notebook de Python en el siguiente enlace:

