Phase 1 : pipeline d'ingestion Sentinel-2

- SentinelHubClient : auth OAuth2, Catalog API (cloud coverage),
  Process API avec evalscript AFAI binaire (UINT8, cloud-side)
- IngestionService : orchestration complète — job tracking,
  rejet nuages, téléchargement GeoTIFF, polygonize GDAL,
  simplification PostGIS, persistance SargassumObservation
- IngestSentinelCommand : 5 zones Antilles configurées,
  options --date et --zone, appelable via cron docker exec
- Dockerfile : ajout gdal-bin + python3-gdal
- Correction entity : paramètre immutable retiré de #[ORM\Column]

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gwadaking
2026-04-01 02:45:12 -04:00
parent e5e729c487
commit bf64340525
10 changed files with 696 additions and 12 deletions

View File

@@ -43,15 +43,15 @@
### Pipeline d'ingestion
- [ ] Cron Symfony toutes les 3h
- [ ] Appel API Sentinel Hub (bandes B04, B08, B11)
- [ ] Création `DataIngestionJob` (pending → success/failed)
- [ ] Retry automatique + logging erreurs
- [ ] Filtrage nuages (seuil configurable, défaut 60%)
- [ ] Calcul AFAI (formule complète avec ratio longueurs d'onde)
- [ ] Rasterisation → raster binaire sargasse/non
- [ ] Vectorisation (raster → polygones, Douglas-Peucker, suppression bruit)
- [ ] Persistance `SargassumObservation`
- [x] Cron VPS (`docker exec` toutes les 3h) → `app:ingest-sentinel`
- [x] Appel API Sentinel Hub (bandes B04, B08, B11 via evalscript)
- [x] Création `DataIngestionJob` (pending → success/failed)
- [x] Retry automatique + logging erreurs
- [x] Filtrage nuages via Catalog API (seuil 60%, configurable)
- [x] Calcul AFAI dans evalscript Sentinel Hub (formule complète)
- [x] Rasterisation → raster UINT8 binaire (evalscript cloud-side)
- [x] Vectorisation GDAL (`gdal_polygonize.py`) + simplification PostGIS
- [x] Persistance `SargassumObservation`
- [ ] Génération vector tiles (Tippecanoe → `.pbf`)
### API Backend