Una aplicación web para visualizar árboles y tocones usando datos de OpenStreetMap (OSM) a través de la API de Overpass.
- 🌳 Visualización de árboles y tocones en un mapa interactivo
- 🗺️ Interfaz web moderna con Leaflet.js
- 🔍 Filtrado por especie y área geográfica
- 📊 Estadísticas en tiempo real
- 🚀 API REST con FastAPI
- 📱 Diseño responsive
- Backend: FastAPI (Python)
- Frontend: HTML5, CSS3, JavaScript, Leaflet.js
- Datos: OpenStreetMap via Overpass API
- Servidor: Uvicorn
Primero, verifica qué dependencias están disponibles:
make check-depsSi tienes python3-venv instalado:
make setupSi no tienes python3-venv pero sí pip:
make install-systemSi no tienes make instalado:
- Instala pip (si no lo tienes):
sudo apt install python3-pip- Instala las dependencias:
pip3 install -r requirements.txt- Ejecuta el servidor:
python3 main.pyUna vez configurado, abre tu navegador y ve a:
http://localhost:8000
make check-deps- Verificar dependencias del sistemamake setup- Crear virtualenv e instalar dependenciasmake install- Instalar dependencias en virtualenv existentemake install-system- Instalar dependencias del sistema (sin virtualenv)make run- Levantar la aplicaciónmake dev- Modo desarrollo con recarga automáticamake clean- Limpiar archivos temporalesmake clean-venv- Eliminar virtualenvmake test- Ejecutar tests (si existen)make lint- Verificar código con lintersmake format- Formatear códigomake info- Mostrar información del entornomake help- Mostrar ayuda
Sirve la página principal de la aplicación.
Obtiene árboles de OSM en un área específica.
Parámetros:
bbox(opcional): Bounding box en formato "min_lat,min_lon,max_lat,max_lon"species(opcional): Filtrar por especie específicalimit(opcional): Número máximo de resultados (default: 100)
Ejemplo:
GET /api/trees?bbox=40.3,-3.8,40.5,-3.6&species=Quercus&limit=50
Obtiene tocones de OSM en un área específica.
Parámetros:
bbox(opcional): Bounding box en formato "min_lat,min_lon,max_lat,max_lon"species(opcional): Filtrar por especie específicalimit(opcional): Número máximo de resultados (default: 100)
opentrees-web/
├── main.py # Aplicación FastAPI principal
├── requirements.txt # Dependencias de Python
├── Makefile # Makefile con comandos de desarrollo
├── .gitignore # Archivos a ignorar en Git
├── static/
│ └── index.html # Frontend HTML con Leaflet.js
└── README.md # Este archivo
id: Identificador únicolat,lon: Coordenadas geográficasspecies: Especie del árbolheight: Altura en metrosdiameter: Diámetro en centímetrosage: Edad en añoshealth: Estado de saludlast_updated: Fecha de última actualización
id: Identificador únicolat,lon: Coordenadas geográficasspecies: Especie del tocóndiameter: Diámetro en centímetrosremoval_date: Fecha de talareason: Razón de la tala
Modifica las coordenadas en main.py en las funciones get_trees() y get_stumps():
# Bounding box por defecto (Madrid, España)
min_lat, min_lon, max_lat, max_lon = 40.3, -3.8, 40.5, -3.6Puedes extender las consultas de Overpass para incluir más filtros como:
- Estado de salud del árbol
- Edad mínima/máxima
- Altura mínima/máxima
Modifica el archivo static/index.html para:
- Cambiar el estilo del mapa
- Añadir más capas
- Personalizar los marcadores
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- OpenStreetMap por los datos geográficos
- Overpass API por la API de consulta
- Leaflet por la librería de mapas
- FastAPI por el framework web