_ _
/ \ __ _ _ __ ___ | | ___ _ __ ___
/ _ \ / _` | '__/ _ \ | | / _ \ '_ \/ __|
/ ___ \ (_| | | | (_) | | |__| __/ | | \__ \
/_/ \_\__, |_| \___/ |_____\___|_| |_|___/
|___/
Satellite Intelligence for Agriculture
AgroLens
Plataforma web de inteligencia satelital para analisis de lotes agropecuarios
Monitoreo remoto, analisis historico e indicadores interpretables para decisiones agronomicas basadas en datos.
AgroLens integra imagenes Sentinel-2, datos climaticos de NASA POWER, modelos de machine learning y herramientas GIS para transformar informacion satelital compleja en informacion accionable para productores, asesores y tecnicos.
Desarrollado como parte del Proyecto Final de Carrera de Ingenieria en Sistemas de Informacion de la Universidad Nacional del Sur (UNS).
El objetivo del proyecto es estimar salud estructural, potencial productivo y evolucion edafica sin depender de inspecciones presenciales permanentes, permitiendo un analisis remoto, historico y comparable entre lotes.
El analisis tradicional de lotes suele depender de recorridas a campo, observaciones manuales y experiencia individual. Eso dificulta comparar ambientes de forma objetiva, reconstruir su evolucion historica y detectar patrones de largo plazo.
AgroLens propone una plataforma integrada para:
- gestionar campos y lotes con geometria geografica;
- importar archivos KML/KMZ;
- construir series temporales satelitales;
- calcular indices espectrales;
- clasificar fenologia dominante;
- estimar indicadores interpretables;
- visualizar resultados en mapas y dashboards.
Actualmente AgroLens incluye:
- registro y autenticacion de usuarios;
- gestion de campos y lotes;
- carga geografica desde poligonos y KML/KMZ;
- analisis satelital automatico;
- historial de analisis;
- integracion con datos climaticos;
- clasificacion fenologica;
- calculo del Indice de Salud Estructural (ISE);
- estimacion de trayectoria edafica;
- pruebas automatizadas del backend.
Pipeline general de procesamiento:
- Carga del lote.
- Validacion de geometria.
- Obtencion de imagenes Sentinel-2.
- Filtrado por nubosidad.
- Calculo de indices espectrales.
- Construccion de series temporales.
- Aplicacion de modelos de machine learning.
- Generacion de indicadores.
- Persistencia de resultados.
- Visualizacion en la plataforma.
Diagrama resumido del flujo:
+--------------------+ +----------------------+ +---------------------+ +----------------------+
| Lote y geometria | -> | Datos satelitales | -> | Modelos e | -> | Resultados en |
| carga + validacion | | Sentinel-2 + clima | | indicadores | | mapas y dashboard |
+--------------------+ | filtros + indices | | series + ML + ISE | | persistencia histor. |
+----------------------+ +---------------------+ +----------------------+
Indices espectrales utilizados:
NDVI: vigor vegetal.SAVI: vigor con correccion por influencia del suelo.EVI: sensibilidad mejorada en alta biomasa.NDMI: humedad de la vegetacion y estres hidrico.BSI: exposicion de suelo y senales de degradacion o recuperacion.
Modelos y salidas principales:
Random Forestpara clasificacion fenologica.K-Meanspara agrupamiento y patronizacion de lotes.ISEcomo indicador propio de AgroLens, en escala interpretable de 0 a 100.Trayectoria edaficaestimada a partir de la evolucion temporal delBSI.
Fenologias contempladas:
- fina;
- gruesa;
- doble cultivo.
- Backend:
FastAPI - Frontend:
React,Vite,TypeScript - Base de datos:
PostgreSQL+PostGIS - Fuentes de datos:
Sentinel-2yNASA POWER - Machine Learning:
Random ForestyK-Means
AgroLens/
├── backend/
├── frontend/
├── data/
├── docs/
├── models/
├── notebooks/
└── README.md
backend/: API, servicios, modelos de datos, migraciones y tests.frontend/: aplicacion web en React/Vite.models/: artefactos entrenados y serializados.notebooks/: trabajo exploratorio y antecedentes de investigacion.docs/: arquitectura, metodologia y documentacion del proyecto.data/: datos locales y salidas intermedias.
Python 3.12Node.js 18+DockeryDocker Compose
Importante: el stack cientifico del backend no esta preparado para Python 3.14.
git clone <URL_DEL_REPO>
cd AgroLensCrear entorno virtual e instalar dependencias:
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txtCrear el archivo de entorno:
cp backend/.env.example backend/.envLevantar la base de datos:
docker compose up -dAplicar migraciones:
python -m alembic -c backend/alembic.ini upgrade headIniciar la API:
uvicorn backend.app.main:app --reloadLa API queda disponible en:
http://127.0.0.1:8000/healthhttp://127.0.0.1:8000/docshttp://127.0.0.1:8000/api/v1/system/info
En otra terminal:
cd frontend
npm install
cp .env.example .env
npm run devPor defecto el frontend usa:
VITE_API_BASE_URL=http://127.0.0.1:8000
Para cargar datos mock de desarrollo:
python -m backend.scripts.seed_devpython -m pytest backend/testsEn backend/.env:
DATABASE_URLGOOGLE_CLIENT_IDJWT_SECRET_KEYCOPERNICUS_CLIENT_IDCOPERNICUS_CLIENT_SECRETNASA_POWER_BASE_URLPHENOLOGY_MODEL_PATHCLUSTERING_KMEANS_PATHCLUSTERING_SCALER_PATHCLUSTERING_PCA_PATH
En frontend/.env:
VITE_API_BASE_URLVITE_GOOGLE_CLIENT_ID
AgroLens busca ubicarse entre las herramientas cientificas complejas y las plataformas comerciales cerradas, priorizando:
- transparencia metodologica;
- indicadores interpretables;
- arquitectura reproducible;
- analisis historico de largo plazo;
- facilidad de uso para usuarios no tecnicos.




