App Streamlit y CLI para revisar manchas de sargazo flotante en el mar Caribe con NASA PACE OCI (últimos días, casi tiempo real).
Calcula el índice AFAI sobre reflectancia de superficie (rhos, producto L2 SFREFL), recorta tierra con una máscara geográfica y exporta manchas (GeoJSON / CSV).
AFAI señala material flotante. No es una clasificación definitiva de especie ni un aviso operativo de arribo a costa.
- Windows, macOS o Linux
- Python 3.11 (recomendado; 3.14 puede no tener ruedas de
netCDF4/scipy) - Cuenta NASA Earthdata
- Varios GB libres: cada granulo SFREFL pesa ~150–750 MB
git clone https://github.com/asoto59g/Sargassum.git
cd Sargassum
python3.11 -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
# source .venv/bin/activate
pip install -r requirements.txtEn Windows, si python apunta a 3.14:
py -3.11 -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtstreamlit run app.pyEn Windows también puedes usar run.bat.
- Abre http://localhost:8501.
- En la barra lateral inicia sesión con tu usuario y contraseña Earthdata (se guarda en
_netrc/.netrc, nunca en el repo). - Elige región (Mar Caribe, Caribe Costa Rica o Gran Caribe + Golfo), días y umbral AFAI.
- Pulsa Buscar y procesar PACE SFREFL.
- Para salir, usa Cerrar sesión en la barra lateral: borra la sesión de la app y las credenciales Earthdata de
_netrc.
La primera corrida sobre todo el Caribe puede bajar varios granulos. Para probar, usa Caribe Costa Rica y 1–2 días.
Pestañas:
| Pestaña | Función |
|---|---|
| Últimos días | Busca, descarga y procesa SFREFL NRT / refinado |
| Archivos locales | Inspecciona .nc en data/ (rechaza OC_AOP) |
| Por qué fallaba GEE | Limitaciones del prototipo Sargaso_Caribe.js |
# Inspeccionar NetCDF ya descargados
python -m sargazo --inspeccionar
# Buscar, descargar y detectar (requiere Earthdata)
python -m sargazo --dias 3 --region "Mar Caribe"
# Solo archivos locales SFREFL en data/
python -m sargazo --local --umbral 0.001 --min-pixeles 3Regiones: Mar Caribe, Caribe Costa Rica, Gran Caribe + Golfo.
Salidas en salidas/: grilla AFAI (.npz), manchas (.geojson, .csv).
| Usar | No usar |
|---|---|
PACE_OCI_L2_SFREFL_NRT y PACE_OCI_L2_SFREFL |
PACE_OCI_L2_AOP / OC_AOP |
El Rrs de OC_AOP llega ~719 nm. AFAI necesita 667 / 748 / 869 nm, presentes en SFREFL (rhos). Detalle en docs/METODOLOGIA.md.
app.py # Interfaz Streamlit
sargazo/ # Búsqueda Earthdata, AFAI, manchas
data/ # Granulos .nc (gitignored)
salidas/ # GeoJSON / CSV / npz (gitignored)
Sargaso_Caribe.js # Prototipo GEE no operativo
.streamlit/config.toml # Tema de la app
No subas contraseñas. Opciones:
- Formulario de la app (
persist=True→_netrcen Windows) - Cerrar sesión en la barra lateral (quita
_netrcde Earthdata) - Variables
EARTHDATA_USERNAMEyEARTHDATA_PASSWORD - Archivo
.netrc/_netrcen el home del usuario
.gitignore ya excluye .netrc, _netrc, .env y .streamlit/secrets.toml.
Los .nc de data/ no se commitean (cientos de MB cada uno). Quien clone el repo debe autenticarse en Earthdata y dejar que la app los baje, o copiar granulos SFREFL a data/.
Comprueba antes del primer push:
git status
# No deben aparecer *.nc ni .venvEste proyecto se distribuye bajo la licencia MIT. El código es de uso libre; los granulos PACE siguen las condiciones de NASA Earthdata.
Repositorio: https://github.com/asoto59g/Sargassum
- Falsos positivos por nubes, sunglint y costa.
- Resolución ~1.2 km (no sustituye Sentinel-2 cerca de playa).
- PACE no está en el catálogo público de Google Earth Engine.
- Umbrales AFAI son de partida; hay que revisarlos visualmente.
- Hu, C. (2009). A novel ocean color index to detect floating algae in the global oceans.
- NASA PACE · Earthdata · OB.DAAC
- NASA Worldview · USF SaWS
- Método interno:
docs/METODOLOGIA.md