Link: https://github.com/MisaelCast/proyecto.git
Author(s): Misael Castillo
Status: Draft
Última actualización: 2025-12-08
- Desarrollar un servicio backend que analice los datos de empleo por municipio en Baja California.
- Visualizar en un mapa de calor la concentración de empleos según las coordenadas (
latitud,longitud) y el número de trabajadores - Permitir consultas dinámicas (por municipio o tipo de actividad).
- No se implementará un sistema de autenticación ni permisos de usuarios.
- No se editarán ni eliminarán registros desde la aplicación.
- No se incluirán predicciones ni análisis de inteligencia artificial.
Los datos provienen de registros del inegi en Baja California, que incluyen:
- Municipio
- Tipo de actividad económica
- Personal ocupado
- Coordenadas geográficas
- Información de contacto
El proyecto busca resolver este problema mediante una representación visual intuitiva.
--
Este proyecto es una aplicación Full-Stack de visualización de datos.
Se ha diseñado una arquitectura que separa la lógica de procesamiento de datos de la interfaz de usuario:
-
Backend (API):
Servidor que carga la base de datos en memoria, procesa los rangos de empleo para asignar un peso numérico y expone endpoints JSON. -
Frontend (UI):
Interfaz web interactiva que consume la API, gestiona los filtros del usuario y renderiza el mapa utilizando capas de superposición (Deck.gl) sobre mapas base oscuros (Carto) para resaltar la intensidad de la actividad económica.
- Python 3.12+
- Flask: Framework para la creación de la API RESTful.
- Pandas: Limpieza, transformación y filtrado de datos.
- OpenPyXL: Lectura de archivos Excel (.xlsx).
- Tener instalado Python.
- Asegurar que el archivo de datos
db.xlsxesté en la carpeta raíz del proyecto.
# Crear entorno virtual
python -m venv .venv
# Activar entorno (Windows)
.\.venv\Scripts\activate
# Instalar dependencias
pip install flask streamlit pandas pydeck openpyxl requestsTerminal 1: Levantar el Backend
python backend.pyServidor disponible en: http://127.0.0.1:5000
Terminal 2: Levantar el Frontend
streamlit run app.pyRetorna listas únicas de municipios y actividades.
Endpoint: GET /api/opciones
Respuesta:
{
"municipios": ["Ensenada", "Tijuana"],
"actividades": ["Comercio", "Pesca"]
}Retorna datos geoespaciales y peso ponderado.
Endpoint: GET /api/empleos
Query Params:
municipioactividad
Ejemplo:
/api/empleos?municipio=Ensenada&actividad=Pesca
Respuesta:
[
{
"nom_estab": "Nombre Negocio",
"latitud": 31.86,
"longitud": -116.60,
"peso_empleo": 75.0,
"per_ocu": "51 a 100 personas"
}
]Para generar el mapa de calor, los rangos textuales del INEGI se transforman a valores numéricos aproximados:
| Rango INEGI | Peso Asignado |
|---|---|
| 0 a 5 personas | 3 |
| 6 a 10 personas | 8 |
| 11 a 30 personas | 20 |
| 31 a 50 personas | 40 |
| 51 a 100 personas | 75 |
| 101 a 250 personas | 150 |
| 251 y más personas | 300 |
Este enfoque permite que los negocios con mayor personal tengan mayor impacto visual en el mapa de calor.
