À propos du projet

Floodcast-Gurugram est une application web de prévision des inondations basée sur la civic-tech pour Gurugram (Gurgaon), en Inde. Elle existe pour répondre à une question précise que les applications météo ordinaires et les listes de zones inondables ne traitent pas : compte tenu des prévisions de précipitations en temps réel, un itinéraire donné sera-t-il inondé dans les prochaines heures, quand exactement l'inondation commence-t-elle et quand s'arrête-t-elle. Plutôt qu'un simple score de risque, elle associe systématiquement une fenêtre temporelle à chaque verdict. Fonctionnalités - Risque avec fenêtre temporelle : les précipitations horaires en direct sont comparées à chacun des 73 points d'inondation enregistrés pour calculer quand un point est inondé et quand il s'assèche, en utilisant des bandes d'avertissement de style IMD ainsi que des heures de début et de fin explicites. - Verdicts d'itinéraire : deux noms de lieux sont résolus et les points chauds situés dans un tampon de 1,5 km autour de la ligne droite les reliant sont identifiés ; l'application rapporte le point et la fenêtre les plus critiques. - Chronologie horaire : les utilisateurs peuvent faire défiler les prévisions et observer la carte, le verdict et le registre mis à jour pour cette heure-là. - Simulateur de précipitations : Gurugram étant sèche la majeure partie de l'année, les utilisateurs peuvent simuler des scénarios à 20, 35 ou 55 mm/h et observer la réaction du registre via le même moteur que le verdict en direct. - Rapports citoyens : une photo, une position GPS avec sa précision et une profondeur observée. Les rapports sont d'abord stockés sur l'appareil, puis modérés avant l'affichage public. - CPCB National AQI : l'échelle indienne de 0 à 500 calculée à partir d'une moyenne de polluants sur 24 heures, au lieu d'un indice fournisseur de 1 à 5. La provenance des données est traitée comme une fonctionnalité du produit. Sur les 73 points enregistrés, 39 sont sourcés : 4 nommés dans la liste des points chauds de la Zone 1 de la MCG, 26 récurrents dans deux rapports de presse indépendants ou plus entre 2022 et 2025, et 9 provenant de sources institutionnelles datées et officielles pour la saison des moussons actuelle. Les 24 restants sont décrits comme des entrées de liste de surveillance plausibles mais non confirmées, et 10 sont des espaces réservés reconstruits uniquement pour préserver le décompte officiel de 36 points de la MCG. Le README indique clairement que l'extension du registre a dilué la confiance moyenne par rapport aux 36 points originaux, et qu'un onglet « What's real » dans l'application expose les niveaux, le remplissage des marqueurs sur la carte encodant le degré de certitude. Les 73 lignes sont signalées comme ayant des coordonnées non vérifiées ; un script les audite par rapport à OpenStreetMap et rédige un rapport, mais ne modifie jamais les données. La correspondance d'itinéraire est explicitement une correspondance de corridor en ligne droite, et non un routage étape par étape, ce qui est divulgué dans chaque réponse d'itinéraire. La boucle d'apprentissage Les lieux signalés dans un rayon de 500 m sont traités comme un seul lieu. Un lieu est promu au rang de point d'inondation après 3 rapports sur 2 jours distincts, traités séparément et jamais fusionnés dans les 73 lignes recherchées. Un seuil mesuré pour un point n'est publié qu'après 2 jours distincts avec une profondeur atteignant le genou ou pire, avec plus de 1 mm/h de pluie ; le chiffre publié est la pluie la plus faible ayant réellement provoqué l'inondation de ce lieu. Open-Meteo fournit les précipitations tombées avant chaque rapport approuvé. Les décomptes de rapports, les paires d'étalonnage et les seuils observés ne sont modifiables que par des déclencheurs de base de données, appliqués par des autorisations de colonnes, afin qu'un modérateur ne puisse pas saisir manuellement une mesure. Architecture et stack L'application est un site statique : React 19 avec TypeScript, construit avec Vite (rolldown) et rendu avec Leaflet, livré sous forme de PWA installable « offline-first » et déployé sur un hébergement statique. Le registre des points chauds (62 Ko de lignes statiques) est intégré au bundle, permettant à la carte et à la liste de s'afficher avant toute requête réseau. Le calcul du score est une arithmétique pure sur ces lignes et s'exécute sur l'appareil. Le seul appel permanent est Open-Meteo, qui ne nécessite pas de clé API et autorise l'accès cross-origin, étant donc appelé depuis l'IP du visiteur ; Nominatim est utilisé uniquement comme solution de repli pour les lieux absents du registre. Supabase est optionnel : sans lui, l'outil de prévision fonctionne pleinement et les rapports restent sur l'appareil. Le README documente une version antérieure basée sur FastAPI dans un conteneur dont le démarrage à froid était de 42,7 secondes et dont les appels de prévisions étaient limités par un quota, motivant la refonte complète côté client ; le bundle total est d'environ 160 Ko compressé (gzipped). Pipeline de données Il n'y a pas de modèle entraîné. Quatre générateurs Python déterministes avec des graines fixes construisent le registre par étapes (36 lignes figées selon la structure de la MCG, puis passage à 64, puis à 73), suivis d'une étape d'exportation qui émet le JSON utilisé par l'application et d'un contrôle d'intégrité. L'intégration continue régénère toutes les étapes à chaque push et échoue si la sortie diffère de ce qui a été commis ; les contributeurs sont invités à modifier les générateurs, et non les fichiers CSV. Le réseau de drainage publié par la GMDA (4 701 segments de cours d'eau cartographiés, 10 bassins versants) a été récupéré pour les zones de captage, mais ces données sont délibérément exclues de tout score de risque, et un test impose cette restriction. Notamment, le README rapporte que la taille médiane du bassin versant ne corrèle pas avec les niveaux de gravité, et ce résultat négatif est publié. Aucun chiffre de précision globale n'est revendiqué, car il n'existe pas de journal d'inondations de référence ; le README rapporte plutôt une courbe de réponse (10 mm/h n'inondent rien, 20 mm/h touchent les 10 chowks les plus critiques, 35 mm/h atteignent 44 des 73 points, 55 mm/h soutenus couvrent tout le registre) et un taux de sourçage de 53 %. Mises en garde pour les utilisateurs Toutes les coordonnées sont des placements approximatifs plutôt que des positions géocodées ; les seuils étaient initialement des estimations d'ingénierie par niveau de gravité, et non des mesures, et ne sont remplacés qu'à mesure que les preuves citoyennes s'accumulent ; l'analyse d'itinéraire utilise un corridor en ligne droite plutôt que les routes réelles ; et le registre, bien que partiellement sourcé, n'est pas un ensemble de données gouvernementales officielles. Une démo en direct, une licence MIT et une documentation dédiée à la provenance accompagnent le projet.