Plateforme satellite des niveaux d'eau : images adaptées aux jauges fluviales
Le service « Level-Satellite » relève le défi de sélectionner des images satellites en fonction des niveaux d'eau mesurés par des jauges spécifiques sur les rivières. Les hydrologues se heurtent souvent à un décalage : une image est disponible, mais le niveau d'eau à ce moment-là ne correspond pas à l'analyse en cours. La plateforme filtre les collections Landsat et Sentinel-2 non seulement par date et couverture nuageuse, mais aussi par les données hydrologiques du Système d'information fédéral russe sur le registre étatique des eaux (AIS GMVO), fournissant des scènes pertinentes pour analyser les chenaux fluviaux, les plaines d'inondation et les zones submergées.
Prototype dans Google Earth Engine : limites initiales
Le prototype initial a été développé dans Google Earth Engine pour un seul district hydrographique en utilisant les données AIS GMVO. Le filtrage des images par géométrie des jauges a révélé des problèmes : interface lente, traitement des collections trop long et épuisement des quotas. Le passage au prétraitement via l'API GEE a généré une table de correspondance (jauges, ID image, couverture nuageuse), allégeant la charge sur le frontend.
Cependant, cette approche présentait des inconvénients :
- Le traitement d'un district prenait 8 à 10 heures ; pour plus de 20 districts, c'était impraticable.
- L'évolutivité nécessitait un recalcul à chaque ajout de données.
- Toute erreur à une étape obligeait à recommencer depuis le début.
Collecte de données en conditions extrêmes
L'accès aux données hydrologiques AIS GMVO risquait d'être coupé. Le parseur pour téléchargements en masse a été affiné sur le terrain — sur un bateau avec une IA. Un téléchargement réussi à 17 h 55, juste avant la deadline, a sécurisé une base de millions d'observations. Les données sont désormais stockées localement, éliminant la dépendance aux sources externes.
Passage à STAC et Microsoft Planetary Computer
L'amélioration clé a été l'adoption de la norme STAC pour cataloguer les scènes satellites et de Microsoft Planetary Computer (MPC) pour l'accès API. STAC standardise les métadonnées entre collections, permettant des recherches par géométrie et temps indépendamment du fournisseur.
L'architecture simplifiée se résume à :
- Base de données des jauges et observations.
- Filtrage par niveau d'eau, période, couverture nuageuse.
- Recherche de scènes dans MPC par métadonnées.
- Chargement des images à la demande.
Cela a éliminé le filtrage lourd des collections, offrant une vitesse fulgurante.
Architecture de la base de données
Le passage de CSV/Excel à PostgreSQL avec PostGIS gère 28 millions d'observations. L'entité centrale relie « observation hydro → date → scène satellite ». Les requêtes s'exécutent en millisecondes : filtre hydrologique d'abord, puis recherche de scènes, puis chargement.
La DB comprend des tables pour :
- Jauges (coordonnées, géométrie).
- Observations (niveau, débit, date).
- Métadonnées des scènes (ID, couverture nuageuse, jeu de données).
Des index sur dates et géométrie accélèrent les JOIN.
Implémentation actuelle et pile technologique
Les utilisateurs sélectionnent une jauge, une plage de niveaux d'eau, une période et des filtres — le service renvoie les scènes sur une carte avec options d'export. Leaflet.js anime la carte, Chart.js gère les hydrogrammes.
Pile technologique :
| Couche | Technologies |
|--------|--------------|
| Backend | Python, Flask, Gunicorn |
| Base de données | PostgreSQL, PostGIS (28 M enregistrements) |
| Données satellites | Microsoft Planetary Computer |
| Frontend | Leaflet.js, Chart.js |
| Infra | Docker, nginx, HTTPS |
Service en ligne sur level-satellite.ru, dépôt : github.com/ruorv/level-satellite-public.
Enseignements clés
- La sélection d'images est liée directement aux niveaux d'eau réels, évitant les données incomparables.
- STAC/MPC offre un accès flexible sans quotas GEE.
- PostGIS accélère les requêtes spatiales sur de gros volumes.
- Architecture évolutive : ajout de jauges/données sans reconstruction complète.
- Code open source pour contributions communautaires.
— Editorial Team
Aucun commentaire pour le moment.