Este proyecto permite generar direcciones aleatorias en Madrid usando OpenAI y visualizarlas en un mapa interactivo usando MapTiler. El sistema consta de dos partes principales: un notebook de Jupyter para generar las direcciones y un visualizador web para mostrarlas en el mapa.
- Generación de direcciones: El notebook
peticiones.ipynbutiliza la API de OpenAI para generar direcciones aleatorias en Madrid - Geocodificación y filtrado: Las direcciones se validan y se excluyen automáticamente aquellas que se salen del radio de 20 km del centro de Madrid
- Visualización: El archivo
index.htmlmuestra las direcciones en un mapa interactivo con mapa de calor
- Python 3.7 o superior
- Navegador web moderno
- API Key de OpenAI
- API Key de MapTiler
- Obtén tu API key en OpenAI Platform
- Crea un archivo
template.enven la carpeta del proyecto - Añade tu clave:
OPENAI_API_KEY=tu_clave_aqui
- Obtén tu API key gratuita en MapTiler
- Edita el archivo
index.htmly reemplazaTU_API_KEY_AQUIcon tu clave en la línea 204:
const MAPTILER_API_KEY = 'TU_API_KEY_AQUI';Instala las librerías de Python necesarias:
pip install pandas openai python-dotenv tqdm openpyxl- Abre
peticiones.ipynben Jupyter Notebook o VS Code - Ejecuta todas las celdas del notebook
- El sistema generará automáticamente un archivo Excel con direcciones aleatorias de Madrid
- Las direcciones se obtienen mediante peticiones a OpenAI con prompts optimizados para generar direcciones reales y variadas
- Inicia un servidor web local en la carpeta del proyecto:
# Usando Python 3
python -m http.server 8000
# O usando Python 2
python -m SimpleHTTPServer 8000
# O usando Node.js (si tienes npx instalado)
npx http-server
# O usando PHP (si tienes PHP instalado)
php -S localhost:8000- Abre tu navegador y ve a:
http://localhost:8000 - El mapa se cargará automáticamente y mostrará las direcciones generadas
peticiones.ipynb: Notebook para generar direcciones usando OpenAIindex.html: Visualizador de mapa interactivodirecciones_madrid_100.xlsx: Ejemplo con 100 direccionesdirecciones_madrid_1000.xlsx: Ejemplo con 1000 direcciones
Para usar un archivo Excel diferente, edita la línea 208 en index.html:
const EXCEL_FILE_PATH = 'tu_archivo.xlsx';En el notebook peticiones.ipynb, modifica la variable:
NUMERO_DIRECCIONES = 1000 # Cambia este númeroLas direcciones que se encuentren a más de 20 km del centro de Madrid se excluyen automáticamente. Para cambiar este radio, edita la línea 214 en index.html:
const MAX_RADIUS_KM = 20; // Cambia el radio en kilómetros- ✅ Generación paralela de direcciones con control de hilos
- ✅ Filtrado automático por radio geográfico (20 km)
- ✅ Mapa de calor interactivo
- ✅ Geocodificación automática
- ✅ Panel lateral con lista de direcciones
- ✅ Captura de pantalla del mapa
- ✅ Diseño responsive para móviles
- ✅ Manejo de errores y reintentos automáticos
El sistema utiliza la fórmula de Haversine para calcular la distancia entre cada dirección geocodificada y el centro de Madrid. Las direcciones que excedan los 20 km de radio se excluyen automáticamente para mantener la coherencia geográfica.
- Máximo 5 hilos concurrentes para evitar límites de la API
- Sistema de reintentos automáticos (hasta 5 intentos)
- Delays configurables entre peticiones
- Temperatura alta (0.9) para mayor variabilidad en las direcciones
- Verifica que el archivo Excel esté en la misma carpeta que
index.html - Asegúrate de estar ejecutando un servidor web local
- Verifica que las API keys estén correctamente configuradas
- Para OpenAI: revisa el archivo
template.env - Para MapTiler: revisa la línea 204 en
index.html
- Verifica tu conexión a internet
- Revisa la consola del navegador para errores
- Asegúrate de que la API key de MapTiler sea válida