Documentation Business — flood-risk-api
Derniere mise a jour : 2026-03-13 (session 15 — CadGIS Buildings, emprises cadastrales officielles)
Table des matières
- Contexte et objectif
- Cas d'usage
- Couverture géographique
- Sources de données
- Logique d'évaluation du risque
- Interprétation des résultats
- Limites et précautions
- Roadmap
- Considérations légales et RGPD
1. Contexte et objectif
Problème
Les inondations constituent le risque naturel le plus coûteux en Belgique. Évaluer le risque d'inondation d'une adresse spécifique nécessite aujourd'hui de consulter plusieurs portails régionaux distincts (SPW pour la Wallonie, VMM pour la Flandre, Bruxelles Environnement) avec des interfaces et des formats hétérogènes.
Solution
flood-risk-api agrège toutes ces sources dans une API unifiée qui répond en quelques centaines de millisecondes à la question :
"Cette adresse est-elle en zone inondable, et quel est le niveau de risque ?"
Public cible
| Utilisateur | Besoin |
|---|---|
| Agents immobiliers | Due diligence lors de transactions immobilières |
| Notaires | Information acquéreurs (obligation légale en Flandre) |
| Compagnies d'assurance | Tarification, exclusions, souscription |
| Banques / organismes de crédit | Évaluation de garanties hypothécaires |
| Bureaux d'études / géomètres | Intégration dans des rapports techniques |
| Particuliers | Information avant achat ou location |
| Communes / administrations | Planification urbanistique |
2. Cas d'usage
Cas 1 — Vérification lors d'une transaction immobilière
Un agent immobilier intègre l'API dans son outil métier. Avant de publier une annonce ou de signer un compromis, une vérification automatique est effectuée. Si le risque est élevé, un avertissement est affiché et l'information est incluse dans la fiche technique.
Cas 2 — Tarification assurance
Une compagnie d'assurance habitation intègre l'API dans son moteur de tarification. Les adresses en zone d'aléa élevé ou moyen reçoivent une surprime automatique ou sont soumises à une analyse manuelle complémentaire.
Cas 3 — Scoring de portefeuille
Une banque souhaite évaluer l'exposition climatique de son portefeuille de prêts hypothécaires. Elle appelle l'API en batch pour toutes ses adresses garanties et produit un rapport de risque agrégé.
Cas 4 — Information citoyenne
Un portail public ou une application mobile permet à tout citoyen de saisir son adresse et d'obtenir une évaluation claire et pédagogique de son niveau de risque, avec les sources officielles associées.
Cas 5 — Visualisation cartographique
L'interface web intègre une carte interactive (MapLibre GL JS) affichant :
- Le point évalué avec ses coordonnées
- Les zones d'aléa officielles en superposition (3 régions, données locales via /geo/zones)
- Les emprises historiques des événements d'inondation passés (rouge/rose)
- Vue 3D avec extrusion des bâtiments
- Google Street View orienté vers le bâtiment cible
Cette carte permet une compréhension visuelle immédiate du contexte géographique — localisation par rapport aux cours d'eau, aux zones inondables officielles, et aux périmètres historiquement touchés.
Cas 6 — Gestion des sinistres par assureur (multi-tenant)
Un assureur (ex: Ethias, AXA) s'enregistre comme tenant via l'interface d'administration et recoit une cle API unique (tk_...). Il peut ensuite :
- Uploader son historique de sinistres (CSV ou Excel) contenant adresses, dates, montants, causes
- Evaluer une adresse via
/assessavec son headerX-Tenant-Key— la reponse est enrichie avec letenant_claims_context: nombre de sinistres a proximite (200m/500m/2km), cout moyen, causes predominantes - Visualiser ses sinistres dans le frontend : carte bleue "Sinistres declares a proximite" et accordion "Historique voisinage" dans l'analyse detaillee
Isolation stricte : chaque tenant ne voit que ses propres sinistres. Si aucun tenant n'est connecte, aucune donnee sinistre n'est affichee. L'isolation est garantie par 5 couches de defense (authentification, quota, WHERE applicatif, contexte transactionnel, Row-Level Security PostgreSQL).
Cas 8 — Analyse visuelle IA du batiment
L'interface integre une analyse visuelle automatique du batiment cible via Google Street View et OpenAI Vision :
- Capture multi-angles : 3 photos automatiques (facade, toiture, vue large) depuis la position Street View
- Comparaison historique : si des images anciennes existent (Time Machine), capture du plus ancien panorama pour detecter les changements majeurs (ravalement, nouvelle toiture, remplacement fenetres)
- Analyse IA : un modele de vision artificielle (GPT-4.1) evalue l'etat de la facade, des menuiseries, de la toiture et du soubassement, et attribue un score de 0 a 100
- Evolution dans le temps : tendance detectee (renovation recente, bien entretenu, vieillissant, degrade) avec estimation d'age et indices visuels
Cela permet :
- Aux assureurs d'avoir un premier diagnostic visuel automatise avant visite terrain
- Aux agents immobiliers de documenter l'etat exterieur d'un bien
- Aux gestionnaires de portefeuille de prioriser les inspections physiques
Cas 7 — Historique des inondations
L'API expose un champ flood_history listant tous les événements d'inondation historiques dont l'emprise géographique contient le point évalué. Exemple : une adresse à Liège qui se trouvait dans la zone inondée lors des crues de juillet 2021 (EMSR518_AOI01 — Copernicus EMS) recevra cette information avec la date, la sévérité et la source officielle.
Cela permet :
- Aux assureurs de quantifier le risque historique avéré (au-delà du risque modélisé)
- Aux acheteurs immobiliers d'être informés des dommages passés éventuels
- Aux communes de croiser le risque théorique et le risque observé
3. Couverture géographique
| Région | Zone d'aléa | Bâtiments OSM | Emprises CadGIS | Parcelles | Cours d'eau | Historique |
|---|---|---|---|---|---|---|
| Wallonie | ✅ 5 246 320 polygones (SPW ALEA_INOND) | ✅ OSM 7 473 128 | ✅ ~3.8M (SPF Finances) | ✅ BPNCAPA ~9M | ✅ OSM 151 615 | ✅ EMSR518 + SPW NZ 2021 (168 282 poly.) |
| Flandre | ✅ 18 024 396 polygones (VMM OGRK GeoTIFF) | ✅ OSM 7 473 128 | ✅ ~5.6M (SPF Finances) | ✅ BPNCAPA ~9M | ✅ OSM 151 615 | — |
| Bruxelles | ✅ 206 zones (PGRI 2019) | ✅ OSM 7 473 128 | ✅ ~249K (SPF Finances) | ✅ BPNCAPA ~9M | ✅ OSM 151 615 | — |
✅ Ingéré et disponible · ⏳ En cours / en attente · ❌ Non encore lancé
Territoire complet : toute la Belgique (superficie ~30 500 km²).
4. Sources de données
Zones d'aléa d'inondation
Wallonie — SPW (Service Public de Wallonie)
- Source : ATOM feed SPW → GeoPackage ALEA_INOND (téléchargement unique)
- URL ATOM :
geoservices.wallonie.be/geotraitement/spwdatadownload/results/{UUID}/ALEA_GEOPACKAGE_31370.zip - Licence : Creative Commons BY 4.0 — attribution SPW requise
- Contenu : Aléa d'inondation par fréquence (période de retour 25, 100, 500 ans) et par type (fluvial, pluvial)
- Précision : Levé hydrologique officiel, échelle 1/10 000
- Volume : ~4 327 194 polygones (ZIP 428 MB, GeoPackage SQLite)
- Mise à jour : Environ tous les 3-5 ans (données 2021-2022)
Flandre — VMM (Vlaamse Milieumaatschappij)
- Source : Overstromingsrisicokaarten (OGRK) — GeoTIFF rasters téléchargés depuis metadata.vlaanderen.be
- Fichiers :
overstroombaar_gebied_FLU_noCC.tif,_PLU_noCC.tif,_KUST_noCC.tif(résolution 2m et 20m, EPSG:31370) - Licence : Open Data Vlaanderen
- Contenu : Zones inondées par scénario T10/T100/T1000, types Fluvial/Pluvial/Côtier (scénario climatique actuel noCC)
- Niveaux d'aléa : T10 → Élevé (10 ans), T100 → Moyen (100 ans), T1000 → Faible (1000 ans)
- Volume : 18 024 396 polygones (vectorisation raster 2m, simplification 5m)
- Note : données distinctes des overstromingsgevoelige gebieden (OG, watertoets légal binaire). OGRK est comparable à l'ALEA_INOND wallon avec niveaux de risque Élevé/Moyen/Faible. La couche Côtier ne contient pas de scénario T10.
Bruxelles — Bruxelles Environnement
- Source : PGRI 2019 (Plan de Gestion des Risques d'Inondation)
- Protocole : GML INSPIRE NaturalRiskZones (HTTP GET, format
gml/3.2) - URL :
app.bruxellesenvironnement.be/carto/inspire/gml/NaturalRiskZones_HazardArea.gml - CRS source : EPSG:3035 (ETRS89-LAEA), reprojeté en WGS84
- Licence : CC-BY 4.0 — contact :
geodata@environnement.brussels - Contenu : 206 zones (fluvial
ID_flu_*+ pluvialID_plu_*), scénario centenal (100 ans), niveau élevé - Volume : 206 polygones (téléchargement instantané ~2 secondes)
Bâtiments et cours d'eau — OpenStreetMap
- Source : Geofabrik Belgium PBF (dump quotidien)
- Licence : ODbL (Open Database Licence) — attribution OSM requise
- Bâtiments : emprises, nombre de niveaux, type
- Cours d'eau : rivières, ruisseaux, canaux, fossés
Parcelles cadastrales — BPNCAPA (data.gov.be)
- Source : BPNCAPA bulk GML (data.gov.be), ZIP ~1.6 GB compressé / 21.8 GB décompressé
- Format : 581 fichiers GML INSPIRE par commune, CRS EPSG:4258 (ETRS89)
- Licence : Licence ouverte belge (Open Standaarden)
- Contenu : Parcelles avec référence cadastrale CAPAKEY et surface en m²
- Volume : ~9 millions de parcelles (Wallonie + Flandre + Bruxelles)
- Note : Données au 01/01/2024
Emprises de construction — CadGIS (SPF Finances)
- Source : SPF Finances — CadGIS (emprises de construction officielles du cadastre belge)
- Fichier : ZIP Shapefile
PP-FiscSit_20250101_shp_3812_01000_Belgium.zip(~2.5 GB) - Licence : Open data SPF Finances
- CRS source : EPSG:3812 (Belgian Lambert 2008), reprojete en WGS84
- Contenu : emprises au sol de tous les batiments cadastres (3 couches regionales)
- Volume : ~9.6 millions de batiments (Bruxelles ~249K, Flandre ~5.6M, Wallonie ~3.8M)
- Apport : remplace les polygones OSM (contributeurs benevoles, precision variable ~5-20%) par des emprises officielles a precision cadastrale. Confiance emprise : 0.95 (CadGIS) vs 0.75 (OSM). Ameliore significativement la precision de l'estimation de surface habitable.
- Mise a jour : donnees au 01/01/2025
Historique des inondations
Copernicus EMS — EMSR518 (Belgique, juillet 2021)
- Source : Copernicus Emergency Management Service (EMS), activation EMSR518
- Événement : Inondations Belgique — juillet 2021 (crues Meuse/Vesdre/Ourthe)
- Produit : DEL (Delineation) — emprise satellite observée des surfaces inondées
- Licence : Open data, attribution Copernicus Programme requise
- Format : GeoJSON WGS84, fichiers dans
data/flood_history/ - Couverture :
- AOI01 (Liège, ~14 km²) — Copernicus EMS EMSR518_AOI01
- AOI02 (Rochefort, ~16 km²) — Copernicus EMS EMSR518_AOI02
- Limite : ne couvre pas l'est de la vallée de la Vesdre (Pepinster, Trooz, Verviers)
SPW — Zones Inondées Wallonie, juillet 2021 (NZ.ObservedEvent)
- Source : SPW (Service Public de Wallonie), jeu INSPIRE NaturalRiskZones ObservedEvent
- URL :
geoservices.wallonie.be/geotraitement/spwdatadownload/results/{UUID}/NZ.ObservedEvent.SG_ZONES_INONDEES_2021.gml.zip - Événement : Inondations Wallonie — 14-15 juillet 2021 (crues catastrophiques)
- Licence : CC-BY 4.0 — attribution SPW requise
- Format : GML 3.2 INSPIRE, ZIP ~64 MB / GML décompressé ~517 MB
- CRS source : EPSG:3812 (Belgian Lambert 2008), reprojeté en WGS84
- Couverture : toute la Wallonie (Vesdre, Ourthe, Meuse, Sambre…) — 201 640 polygones bruts, 168 282 polygones après union géométrique
- Gravité :
catastrophic(sévérité maximale, pertes humaines et matérielles importantes) - Apport : complète Copernicus EMSR518 sur la vallée de la Vesdre orientale (Pepinster, Trooz, Verviers) qui n'était pas couverte par les AOIs satellite
- Extension possible : VMM historische overstromingen Flandre, activations Copernicus ultérieures
5. Logique d'évaluation du risque
Entrée
- Adresse textuelle (géocodée via Nominatim/OSM) ou coordonnées GPS (WGS84)
Évaluation spatiale (PostGIS)
L'API interroge directement la base PostGIS via la fonction assess_point(lat, lon) :
- Zones d'inondation :
ST_Intersects(geom, point)— toutes les zones intersectant le point GPS exact - Bâtiment : plus proche dans 50 mètres (opérateur KNN
<->) - Parcelle : parcelle cadastrale contenant le point
- Cours d'eau : plus proche dans 2000 mètres (KNN)
Score de risque d'assurabilité (0-100)
Modèle actuariel P × S × E (probabilité × sévérité × exposition), transformé sur échelle 0-100.
| Score | Label | Interprétation |
|---|---|---|
| ≥ 60 | Critique | Risque très élevé, conditions défavorables multiples |
| ≥ 35 | Élevé | Risque significatif, précautions nécessaires |
| ≥ 15 | Modéré | Risque existant mais contenu |
| < 15 | Faible | Risque limité |
Le score intègre l'altitude relative : un bien situé au-dessus d'un cours d'eau ou d'une zone inondable voit son risque réduit (multiplicateur exponentiel), tandis qu'un bien en contrebas voit son risque amplifié (plafond ×2).
Détail du calcul dans
api/services/insurance_score.py(méthodeactuarial_v2).
Période de retour
| Période | Interprétation |
|---|---|
| 25 ans | Inondation fréquente (probabilité 4%/an) |
| 100 ans | Inondation centenale (probabilité 1%/an) |
| 500 ans | Inondation exceptionnelle (probabilité 0.2%/an) |
Un point peut appartenir à plusieurs zones (ex : zone 25 ans ET zone 100 ans). L'API retourne toutes les zones et classe par niveau de risque décroissant.
6. Interprétation des résultats
Exemple de réponse — Adresse en zone à risque élevé
{
"address": "Quai de Maestricht 1, Liège",
"lat": 50.6449,
"lon": 5.5693,
"risk_score": 9.2,
"risk_level": "Élevé",
"in_flood_zone": true,
"zones": [
{
"hazard_level": "Élevé",
"hazard_type": "fluvial",
"return_period": 25,
"region": "wallonia",
"source": "wallonia_flood_zones"
},
{
"hazard_level": "Élevé",
"hazard_type": "fluvial",
"return_period": 100,
"region": "wallonia",
"source": "wallonia_flood_zones"
}
],
"nearest_waterway": {
"name": "Meuse",
"waterway": "river",
"dist_m": 12.5
}
}
Lecture : Cette adresse est en zone d'aléa élevé pour des crues de fréquence 25 ans (probabilité de 4% chaque année) et 100 ans. La Meuse est à 12 mètres.
Exemple — Adresse hors zone
{
"risk_score": 1.0,
"risk_level": "Faible",
"in_flood_zone": false,
"zones": [],
"nearest_waterway": { "name": "Ruisseau des Fagnes", "waterway": "stream", "dist_m": 840 }
}
7. Limites et précautions
Précision des données
- Les zones d'aléa sont des modélisations hydrologiques basées sur des simulations. Elles ne remplacent pas une étude géotechnique sur site.
- La précision dépend de la résolution du MNT utilisé par chaque région (typiquement 1m en Wallonie).
- Les changements récents d'urbanisme (nouveaux remblais, bassins d'orage) peuvent ne pas encore être reflétés dans les données.
Couverture temporelle
- Les données sont mises à jour hebdomadairement (ingestion automatique le lundi à 2h UTC).
- La date de fraîcheur des données source est indiquée dans le champ
data_freshness_days(à implémenter).
Géocodage
- L'adresse est géocodée via Nominatim (base OpenStreetMap). Les adresses mal orthographiées ou très récentes peuvent ne pas être trouvées.
- En cas d'ambiguïté (même nom de rue dans plusieurs communes), l'API retourne le premier résultat Nominatim. Il est recommandé de préciser la commune ou d'utiliser directement les coordonnées GPS.
Ce que l'API ne couvre pas (encore)
- Risque de ruissellement urbain (donnees pluviales separees des donnees fluviales dans la reponse)
- Mesures de protection existantes (digues, barrages)
- Historique d'inondations Flandre et Bruxelles (Wallonie couverte par EMSR518 + SPW NZ 2021 ; Flandre et Bruxelles à compléter)
8. Roadmap
Phase 1 — Données de base (en cours)
- Architecture API + ETL + BDD
- Ingestion Bruxelles — zones d'aléa (206 zones, PGRI 2019)
- Interface d'administration (progression temps réel, déclenchement depuis l'UI)
- Progression ETL en temps réel (Redis, ETA, pages done/total)
- Reprise automatique après coupure (checkpoints gzip + auto-retry ×5)
- ETL Wallonie réécrit — ATOM GeoPackage SPW (1 requête HTTP, aucun rate-limiting)
- ETL Flandre réécrit — GeoTIFF raster VMM OGRK (18 024 396 polygones précis à 2m)
- Ingestion Wallonie ✅ — 5 246 320 polygones (log 22, ~10 min)
- Ingestion Flandre ✅ — 18 024 396 polygones (log 26, ~55 min)
- Page de logs ETL dédiée (
logs.html) avec stats, filtres et auto-refresh - Corriger bug asyncio OSM (different loop) et relancer bâtiments + cours d'eau
- Ingestion bâtiments OSM ✅ — 7 473 128 bâtiments (log 27, ~16 min)
- Ingestion cours d'eau OSM ✅ — 151 615 cours d'eau (log 28)
- Ingestion cadastre ✅ — ~9M parcelles BPNCAPA (581 communes GML)
- Historique d'inondations — infrastructure créée, 2 événements EMSR518 ingérés ✅
- Carte interactive Leaflet.js dans le frontend ✅
- Section historique d'inondations dans le frontend ✅
- SPW NZ Zones inondées Wallonie 2021 ✅ — 168 282 polygones (GML INSPIRE 64 MB, EPSG:3812)
- Endpoint
GET /flood-events/geojsonavec cache Redis 24 h ✅
Phase 2 — Enrichissement
-
data_freshness_days: fraîcheur des données dans la réponse assess ✅ - Altitude du point (Open-Meteo, fallback LiDAR DSM-DTM régional) ✅
- Analyse volumétrique bâtiments (Google Solar API + LiDAR) ✅
- Surface habitable estimée (segmentation toiture, détection annexes) ✅
- Distance zone inondable la plus proche (KNN 2km, toutes périodes retour) ✅
- UX refonte pour gestionnaires production assurance ✅
- Score d'assurabilité (modèle combinant risque + bâtiment + historique) ✅
- Altitude relative (elevation-aware scoring) — multiplicateur basé sur différence d'altitude ✅
- Modale explicative vulgarisee (langage courant pour le score) ✅
- Export PDF (carte + Street View + détails complets) ✅
- Analyse visuelle IA batiment (OpenAI Vision + Street View multi-angles) ✅
- Evolution dans le temps (comparaison historique Street View, detection changements majeurs) ✅
- Emprises cadastrales CadGIS (SPF Finances, ~9.6M batiments, confiance 0.95 vs OSM 0.75) ✅
- Enrichir l'historique : VMM historische overstromingen Flandre, autres activations Copernicus
- HTTPS en production
- Authentification API multi-tenant (cles par assureur, quota mensuel, SHA-256) ✅
- Gestion des sinistres par tenant (CRUD, import CSV/Excel, stats, contexte spatial) ✅
- Securite RLS PostgreSQL (role non-superuser, 5 couches d'isolation) ✅
- Endpoint batch (evaluation de listes d'adresses)
Phase 3 — Valeur ajoutée
- Webhook / callback pour ingestions asynchrones
- Dashboard analytics (volume de requêtes, distribution des scores)
- API multilingue (FR/NL/DE)
9. Considérations légales et RGPD
Données personnelles
L'API traite des adresses postales soumises par les utilisateurs. Ces adresses peuvent constituer des données personnelles (adresse du domicile d'une personne physique).
Mesures en place :
- Les adresses ne sont pas stockées en clair (seules les coordonnées GPS arrondies à 4 décimales sont utilisées comme clé de cache)
- Le cache Redis a un TTL de 24h maximum
- L'
audit_logenregistre l'IP client et les coordonnées à des fins de monitoring — à encadrer par une politique de conservation (ex: purge après 90 jours)
Recommandations :
- Informer les utilisateurs finaux du traitement dans la politique de confidentialité
- Si l'API est exposée publiquement, prévoir un DPA (Data Processing Agreement) avec les clients B2B
- Désactiver ou anonymiser
audit_logsi non indispensable
Licences des données sources
| Source | Licence | Obligation |
|---|---|---|
| SPW Wallonie (ATOM GeoPackage ALEA_INOND) | CC BY 4.0 | Mentionner "Source : SPW" dans les outputs |
| VMM Flandre (OGRK GeoTIFF) | Open Data Vlaanderen | Mentionner "Source : VMM — OGRK" |
| Bruxelles Environnement | CC BY 4.0 | Mentionner "Source : Bruxelles Environnement" — contact geodata@environnement.brussels |
| OpenStreetMap (bâtiments, cours d'eau, fond de carte) | ODbL | Mentionner "© OpenStreetMap contributors" |
| BPNCAPA Cadastre (data.gov.be) | Licence ouverte belge | Attribution SPF Finances |
| CadGIS Buildings (SPF Finances) | Open data SPF Finances | Attribution SPF Finances |
| Copernicus EMS (historique inondations EMSR518) | Open data Copernicus | Mentionner "Contains modified Copernicus Emergency Management Service information" |
| SPW Wallonie (Zones Inondées 2021 — NZ.ObservedEvent) | CC BY 4.0 | Mentionner "Source : SPW — Zones Inondées 2021" |
| MapLibre GL JS (carte interactive) | BSD-3-Clause | Aucune obligation particulière |
Important : Toute application ou rapport utilisant ces données doit inclure les attributions correspondantes conformément aux licences.
Responsabilité
Les données fournies par cette API sont à titre informatif uniquement. Elles ne constituent pas un avis juridique, technique ou assurantiel. Toute décision importante (achat immobilier, souscription d'assurance) devrait être confirmée auprès des autorités compétentes ou d'un expert.