Aller au contenu principal

Dépendances API externes — flood-risk-api

Ce document recense toutes les API et sources de données externes auxquelles le projet se connecte, leur rôle, et pour chacune soit une alternative intégrable en base (pour éliminer la dépendance en production), soit une source de remplacement fiable en fallback.


Catégories

CatégorieNatureFréquence
RuntimeAppelées à chaque requête utilisateurContinue
ETL one-shotAppelées lors d'une ingestion manuellePonctuelle
Frontend CDNChargées par le navigateurContinue

1. API Runtime

1.1 Open-Meteo — Élévation DEM

URLhttps://api.open-meteo.com/v1/elevation
Fichiersapi/services/assess_service.py, api/services/topo_service.py
UsageÉlévation d'un point (assess) et grille 25 points (topo) via Copernicus DEM GLO-30 (~30 m)
CoûtGratuit, sans clé, sans limite stricte
RisqueIndisponibilité → target_elevation_m = null, topo_score = null (dégradation gracieuse déjà implémentée)

Alternative 1 — Copernicus DEM GLO-30 en base (intégration locale, 30 m) : Télécharger les tuiles Copernicus DEM GLO-30 pour la Belgique (format Cloud Optimized GeoTIFF, ~1–2 GB) et les charger dans PostGIS avec raster2pgsql. La requête devient alors une simple ST_Value() en base, sans appel réseau, avec latence < 5 ms.

TéléchargementCopernicus DEM GLO-30 sur AWS S3 (Open Data, accès libre)
Bucket S3s3://copernicus-dem-30m/liste des tuiles
Tuiles BelgiqueCopernicus_DSM_COG_10_N49_00_E002_00_DEM à N51_00_E006_00 (~20 tuiles, 1°×1° chacune)
FormatCloud Optimized GeoTIFF, 32-bit float, EPSG:4326
CLIaws s3 cp s3://copernicus-dem-30m/Copernicus_DSM_COG_10_N50_00_E005_00_DEM/ . --recursive --no-sign-request
Import PostGISraster2pgsql -s 4326 -I -C -M *.tif dem_copernicus30 | psql
-- Requête après import :
SELECT ST_Value(rast, ST_SetSRID(ST_MakePoint(lon, lat), 4326))
FROM dem_copernicus30
WHERE ST_Intersects(rast, ST_SetSRID(ST_MakePoint(lon, lat), 4326));

Alternative 2 — Copernicus DEM EEA-10 en base (haute résolution, 10 m) : Le dataset EEA-10 offre une résolution 3× supérieure au GLO-30 (10 m vs 30 m). Il couvre 39 pays européens dont la Belgique. Apport principal : meilleure discrimination en vallées étroites (Vesdre, Ourthe, Amblève), détection de micro-cuvettes < 30 m, et réduction de la zone morte d'altitude de ±1 m à ±0.5 m.

DatasetCOP-DEM_EEA-10-INSP (format INSPIRE, GeoTIFF 32-bit float)
Résolution0.3 arc-secondes (~10 m), tuiles 100 km × 100 km
Précision verticaleRMSE ~1 m (vs ~1.7 m pour GLO-30)
Taille Belgique~40–50 GB (6–8 tuiles de 100 km × 100 km)
LicenceCopernicus Data — libre pour usage commercial et non commercial
Source primaireCopernicus Data Space Ecosystem
NavigateurCopernicus Browser — rechercher "COP-DEM_EEA-10-INSP", filtrer sur la Belgique, télécharger les tuiles
STAC APIhttps://browser.stac.dataspace.copernicus.eu/collections/cop-dem-eea-10-insp
OData APIhttps://catalogue.dataspace.copernicus.eu/odata/v1/Products?$filter=Collection/Name eq 'COP-DEM_EEA-10-INSP'
S3 (CDSE)s3://eodata/CCM/COP-DEM_EEA-10-DGED/ (nécessite compte CDSE gratuit + credentials temporaires)
AccèsInscription gratuite sur dataspace.copernicus.eu — EEA-10 accessible aux autorités publiques et depuis juillet 2025 aux utilisateurs enregistrés
DocumentationProduct Handbook (PDF)
# Téléchargement via OData (exemple d'une tuile) :
curl -L -H "Authorization: Bearer $CDSE_TOKEN" \
"https://zipper.dataspace.copernicus.eu/odata/v1/Products(<product_id>)/\$value" \
-o tile_eea10.tar

# Import PostGIS (même procédure que GLO-30) :
raster2pgsql -s 4326 -I -C -M -t 256x256 *.tif dem_copernicus10 | psql

Impact sur le scoring :

AméliorationGLO-30 (actuel)EEA-10
Zone morte _elevation_multiplier±1 m±0.5 m (réduction possible)
Détection cuvettes (topo_service)> 30 m de diamètre> 10 m de diamètre
Discrimination urbaine1 pixel = pâté de maisons1 pixel = 1 maison
Altitude bord de rivièrePixel centré à ±15 mPixel centré à ±5 m

Fallback externe : AWS Terrain Tiles (Mapzen, gratuit, S3 direct) ou OpenTopoData (api.opentopodata.org/v1/eudem25m) — résolution EUDEM 25 m, API REST identique au format Open-Meteo.


1.2 Nominatim (OpenStreetMap) — Géocodage

URLhttps://nominatim.openstreetmap.org/search
Fichiersapi/services/geocoder.py
UsageConversion adresse texte → coordonnées (lat/lon) quand address est fourni à POST /assess
CoûtGratuit, limité à 1 req/s par l'instance publique (mention obligatoire User-Agent)
RisqueThrottling (429) ou indisponibilité → l'endpoint /assess retourne une erreur pour les requêtes par adresse

Alternative — intégration en base (recommandé) : Déployer une instance Nominatim locale (Docker mediagis/nominatim) avec le PBF Belgique (~600 MB déjà téléchargé par les ETL). Aucun appel externe, latence < 50 ms, quota illimité.

# docker-compose.yml — à ajouter
nominatim:
image: mediagis/nominatim:4.4
environment:
PBF_URL: https://download.geofabrik.de/europe/belgium-latest.osm.pbf
REPLICATION_URL: https://download.geofabrik.de/europe/belgium-updates/
volumes:
- nominatim_data:/var/lib/postgresql/14/main

Fallback externe : Photon (gratuit, API REST, basé sur Nominatim/OSM) — drop-in replacement avec le même format GeoJSON. Ou geo.api.gouv.fr pour la France uniquement (hors scope Belgique).


2. Sources ETL (ingestion ponctuelle)

Ces sources sont interrogées uniquement lors d'une ingestion manuelle (POST /admin/ingest), pas en production continue. La criticité est donc moindre, mais une source de remplacement est utile si la source primaire change de format ou d'URL.


2.1 Geofabrik — OSM PBF Belgique

URLhttps://download.geofabrik.de/europe/belgium-latest.osm.pbf
Fichiersworker/etl/buildings.py, worker/etl/waterways.py, worker/etl/roads.py
UsageTéléchargement du fichier PBF Belgique (~600 MB) pour extraction bâtiments, cours d'eau, routes
Fréquence1 téléchargement par ingestion (ou réutilisation si < 7 jours)
RisqueLenteur réseau, URL stable depuis des années

Fallback externe : OpenStreetMap Planet (fichier mondial, trop volumineux) ou BBBike pour des extraits régionaux. Pour la Belgique spécifiquement, OSM Belgium mirror (download.openstreetmap.fr) est un miroir alternatif synchronisé quotidiennement.

Alternative intégration en base : Automatiser le téléchargement hebdomadaire du PBF via un job ETL planifié + stockage sur volume Docker (/data/osm/), puis relancer l'ingestion incrémentale. Cela supprime la dépendance réseau au moment de l'ingestion.


2.2 SPW Wallonie — Zones d'aléa inondation (GeoPackage ATOM)

URLhttps://geoservices.wallonie.be/inspire/atom/WL_ALEA.xml (feed ATOM → ZIP GeoPackage)
Fichiersworker/etl/wallonia.py
UsageZones inondables Wallonie (5,2M polygones, CC-BY 4.0 SPW)
FréquenceIngestion manuelle (wallonia_flood_zones)
RisqueRestructuration du feed ATOM sans préavis (peu probable)

Fallback externe : Le même jeu de données est disponible via le WFS INSPIRE SPW : https://geoservices.wallonie.be/arcgis/rest/services/EAU/ALEA_INOND/FeatureServer — pagination nécessaire mais même contenu. Également accessible via géoportail de la Wallonie avec export direct.


2.3 SPW Wallonie — Zones observées 2021 (ZIP GML)

URLhttps://geoservices.wallonie.be/inspire/atom/WL_NZOBS_2021.xml (feed ATOM → ZIP GML)
Fichiersworker/etl/spw_flood_zones_2021.py (source wallonia_flood_zones_2021)
UsageZones d'inondation observées lors des crues de juillet 2021 en Wallonie (168K polygones)
FréquenceIngestion manuelle, données historiques statiques
RisqueFaible — données figées (événement passé)

Fallback externe : Données Copernicus EMS (EMSR518) — déjà partiellement ingérées dans flood_events via worker/etl/flood_history.py. Couvrent les mêmes événements avec un format GeoJSON standard.


2.4 SPW Wallonie — AZI IDW (ArcGIS REST)

URLhttps://geoservices.wallonie.be/arcgis/rest/services/EAU/AZI_IDW/MapServer
Fichiersworker/etl/wallonia_azi_2021.py (source wallonia_azi_2021)
UsageAtlas des Zones d'Inondation 2021 : profondeurs d'eau interpolées (59K polygones, water_height_m)
FréquenceIngestion manuelle, données statiques post-crue
RisqueAPI ArcGIS parfois lente, checkpoints gzip implémentés pour reprise

Fallback externe : Publication alternative via le Géoportail Wallonie WFS avec export GeoPackage direct. Les données AZI sont également archivées sur data.gov.be.


2.5 Bruxelles Environnement — Zones d'inondation (GML INSPIRE)

URLhttps://app.bruxellesenvironnement.be/inspire/... (WFS INSPIRE)
Fichiersworker/etl/brussels.py
UsageZones inondables Région de Bruxelles-Capitale (206 polygones, CC-BY 4.0)
FréquenceIngestion manuelle (brussels_flood_zones)
RisqueFaible — petit volume, données stables

Fallback externe : Brussels Open Data Portal — les mêmes données sont publiées au format Shapefile / GeoJSON téléchargeables sans API.


3. Dépendances frontend (CDN)

Ces ressources sont chargées directement par le navigateur de l'utilisateur final. Elles n'impliquent pas le serveur backend, mais leur indisponibilité impacte l'interface.


3.1 unpkg — MapLibre GL JS

URLhttps://unpkg.com/maplibre-gl@4.x.x/dist/maplibre-gl.js
Fichiersfrontend/index.html
UsageBibliothèque cartographie interactive (carte des zones d'aléa, historique inondations)
RisqueCDN tiers — indisponibilité → carte non fonctionnelle

Alternative — auto-hébergement (recommandé en production) : Télécharger maplibre-gl.js + maplibre-gl.css et les servir depuis /frontend/lib/ via nginx. Zéro dépendance CDN, cache navigateur maîtrisé.

Fallback CDN : jsDelivr (cdn.jsdelivr.net/npm/maplibre-gl) — CDN alternatif très fiable avec 99,99% SLA.


3.2 unpkg — jsPDF

URLhttps://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js
Fichiersfrontend/index.html
UsageGénération du rapport PDF côté navigateur
Risque@latest non épinglé → risque de breaking change silencieux

Recommandation immédiate : Épingler la version (jspdf@2.5.1) pour éviter les régressions.

Alternative — auto-hébergement : Idem MapLibre — servir depuis /frontend/lib/jspdf.umd.min.js.

Fallback CDN : cdn.jsdelivr.net/npm/jspdf@2.5.1/dist/jspdf.umd.min.js


3.3 OpenFreeMap — Tuiles vectorielles

URLhttps://tiles.openfreemap.org/styles/liberty
Fichiersfrontend/index.html (style MapLibre)
UsageFond de carte vectoriel (rues, bâtiments, étiquettes)
RisqueService gratuit communautaire — moins de garanties SLA que des CDN commerciaux

Alternative — auto-hébergement : Déployer OpenMapTiles avec un extrait Belgique (~2 GB) via mbtiles-server ou tileserver-gl. Les tuiles sont servies localement, aucune dépendance externe.

Fallback CDN : Maptiler Cloud (freemium, 100K tuiles/mois gratuites) — compatible MapLibre, même format de style. Stadia Maps (50K requêtes/jour gratuites) — autre alternative avec styles similaires.


3.4 Google Maps API — Street View (optionnel)

URLhttps://maps.googleapis.com/maps/api/js
Fichiersfrontend/index.html (lazy load via GET /geo/maps-key)
UsagePanorama Street View du bien évalué
CoûtPayant au-delà de 28 000 chargements/mois (~300 USD/100K)
RisqueClé absente → Street View désactivé silencieusement (déjà géré)

Alternative gratuite — Mapillary : Mapillary propose des photos de rue collaboratives (CC-BY-SA) avec une API gratuite pour les projets non commerciaux. SDK JavaScript disponible, intégrable à MapLibre. Couverture Belgique satisfaisante en zones urbaines.

Alternative open-source — KartaView : KartaView (ex-OpenStreetCam) — photos libres de droit, API REST publique. Moins complet que Google Street View mais 0 coût.


Récapitulatif — Priorités

DépendanceCriticitéAction recommandéeEffort
Open-Meteo élévationHaute (runtime)Intégrer DEM Copernicus EEA-10 (10 m) en PostGISMoyen (1–2 j)
Nominatim géocodageHaute (runtime)Instance Nominatim locale (Docker)Faible (4 h)
OpenFreeMap tuilesMoyenne (UX)Basculer sur Maptiler freemium ou auto-hébergementFaible (2 h)
unpkg MapLibre/jsPDFMoyenne (UX)Auto-hébergement + épinglage versionFaible (1 h)
Geofabrik PBFFaible (ETL)Volume pré-téléchargé + miroir OS.frFaible
SPW/Brussels ETLFaible (ETL)Données statiques, fallback WFS/géoportailFaible
Google Maps Street ViewFaible (optionnel)Migrer vers Mapillary si budget contraintMoyen