Aller au contenu principal

Documentation Business — flood-risk-api

Derniere mise a jour : 2026-03-13 (session 15 — CadGIS Buildings, emprises cadastrales officielles)


Table des matières

  1. Contexte et objectif
  2. Cas d'usage
  3. Couverture géographique
  4. Sources de données
  5. Logique d'évaluation du risque
  6. Interprétation des résultats
  7. Limites et précautions
  8. Roadmap
  9. 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

UtilisateurBesoin
Agents immobiliersDue diligence lors de transactions immobilières
NotairesInformation acquéreurs (obligation légale en Flandre)
Compagnies d'assuranceTarification, exclusions, souscription
Banques / organismes de créditÉvaluation de garanties hypothécaires
Bureaux d'études / géomètresIntégration dans des rapports techniques
ParticuliersInformation avant achat ou location
Communes / administrationsPlanification 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 :

  1. Uploader son historique de sinistres (CSV ou Excel) contenant adresses, dates, montants, causes
  2. Evaluer une adresse via /assess avec son header X-Tenant-Key — la reponse est enrichie avec le tenant_claims_context : nombre de sinistres a proximite (200m/500m/2km), cout moyen, causes predominantes
  3. 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 :

  1. Capture multi-angles : 3 photos automatiques (facade, toiture, vue large) depuis la position Street View
  2. Comparaison historique : si des images anciennes existent (Time Machine), capture du plus ancien panorama pour detecter les changements majeurs (ravalement, nouvelle toiture, remplacement fenetres)
  3. 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
  4. 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égionZone d'aléaBâtiments OSMEmprises CadGISParcellesCours d'eauHistorique
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_* + pluvial ID_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) :

  1. Zones d'inondation : ST_Intersects(geom, point) — toutes les zones intersectant le point GPS exact
  2. Bâtiment : plus proche dans 50 mètres (opérateur KNN <->)
  3. Parcelle : parcelle cadastrale contenant le point
  4. 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.

ScoreLabelInterprétation
≥ 60CritiqueRisque très élevé, conditions défavorables multiples
≥ 35ÉlevéRisque significatif, précautions nécessaires
≥ 15ModéréRisque existant mais contenu
< 15FaibleRisque 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éthode actuarial_v2).

Période de retour

PériodeInterprétation
25 ansInondation fréquente (probabilité 4%/an)
100 ansInondation centenale (probabilité 1%/an)
500 ansInondation 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/geojson avec 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_log enregistre 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_log si non indispensable

Licences des données sources

SourceLicenceObligation
SPW Wallonie (ATOM GeoPackage ALEA_INOND)CC BY 4.0Mentionner "Source : SPW" dans les outputs
VMM Flandre (OGRK GeoTIFF)Open Data VlaanderenMentionner "Source : VMM — OGRK"
Bruxelles EnvironnementCC BY 4.0Mentionner "Source : Bruxelles Environnement" — contact geodata@environnement.brussels
OpenStreetMap (bâtiments, cours d'eau, fond de carte)ODbLMentionner "© OpenStreetMap contributors"
BPNCAPA Cadastre (data.gov.be)Licence ouverte belgeAttribution SPF Finances
CadGIS Buildings (SPF Finances)Open data SPF FinancesAttribution SPF Finances
Copernicus EMS (historique inondations EMSR518)Open data CopernicusMentionner "Contains modified Copernicus Emergency Management Service information"
SPW Wallonie (Zones Inondées 2021 — NZ.ObservedEvent)CC BY 4.0Mentionner "Source : SPW — Zones Inondées 2021"
MapLibre GL JS (carte interactive)BSD-3-ClauseAucune 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.