agrovision / backend /api /weather.py
alexp97's picture
feat(api): gateway + parcelas + teledetección NDVI/clima (Fase 3)
c9bb7d3
Raw
History Blame Contribute Delete
1.27 kB
"""
Archivo: weather.py
Fecha de modificación: 03/06/2026
Autor: Equipo AgroVisión
Descripción:
Router de clima (`/api/weather`). Devuelve la serie agroclimática mensual (precipitación,
temperatura media, radiación) por coordenadas usando Open-Meteo (sin llave). Por defecto
cubre los últimos 5 años, para cruzarse con la serie NDVI en Teledetección.
Estructura Interna:
- `POST /api/weather`.
Entradas / Dependencias:
- `backend.services.weather`.
Ejemplo de Integración:
from backend.api.weather import router
"""
from __future__ import annotations
from fastapi import APIRouter
from pydantic import BaseModel, Field
from backend.services import weather
router = APIRouter(prefix="/api/weather", tags=["clima"])
class WeatherRequest(BaseModel):
"""Petición de clima por coordenadas y rango opcional (default últimos 5 años)."""
lat: float = Field(ge=-90, le=90)
lon: float = Field(ge=-180, le=180)
start: str | None = None
end: str | None = None
@router.post("")
async def weather_series(body: WeatherRequest) -> dict:
"""Devuelve la serie climática mensual de las coordenadas indicadas."""
series = await weather.weather_series(body.lat, body.lon, body.start, body.end)
return {"series": series}