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égorie | Nature | Fréquence |
|---|---|---|
| Runtime | Appelées à chaque requête utilisateur | Continue |
| ETL one-shot | Appelées lors d'une ingestion manuelle | Ponctuelle |
| Frontend CDN | Chargées par le navigateur | Continue |
1. API Runtime
1.1 Open-Meteo — Élévation DEM
| URL | https://api.open-meteo.com/v1/elevation |
| Fichiers | api/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ût | Gratuit, sans clé, sans limite stricte |
| Risque | Indisponibilité → 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échargement | Copernicus DEM GLO-30 sur AWS S3 (Open Data, accès libre) |
| Bucket S3 | s3://copernicus-dem-30m/ — liste des tuiles |
| Tuiles Belgique | Copernicus_DSM_COG_10_N49_00_E002_00_DEM à N51_00_E006_00 (~20 tuiles, 1°×1° chacune) |
| Format | Cloud Optimized GeoTIFF, 32-bit float, EPSG:4326 |
| CLI | aws s3 cp s3://copernicus-dem-30m/Copernicus_DSM_COG_10_N50_00_E005_00_DEM/ . --recursive --no-sign-request |
| Import PostGIS | raster2pgsql -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.
| Dataset | COP-DEM_EEA-10-INSP (format INSPIRE, GeoTIFF 32-bit float) |
| Résolution | 0.3 arc-secondes (~10 m), tuiles 100 km × 100 km |
| Précision verticale | RMSE ~1 m (vs ~1.7 m pour GLO-30) |
| Taille Belgique | ~40–50 GB (6–8 tuiles de 100 km × 100 km) |
| Licence | Copernicus Data — libre pour usage commercial et non commercial |
| Source primaire | Copernicus Data Space Ecosystem |
| Navigateur | Copernicus Browser — rechercher "COP-DEM_EEA-10-INSP", filtrer sur la Belgique, télécharger les tuiles |
| STAC API | https://browser.stac.dataspace.copernicus.eu/collections/cop-dem-eea-10-insp |
| OData API | https://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ès | Inscription gratuite sur dataspace.copernicus.eu — EEA-10 accessible aux autorités publiques et depuis juillet 2025 aux utilisateurs enregistrés |
| Documentation | Product 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élioration | GLO-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 urbaine | 1 pixel = pâté de maisons | 1 pixel = 1 maison |
| Altitude bord de rivière | Pixel centré à ±15 m | Pixel 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
| URL | https://nominatim.openstreetmap.org/search |
| Fichiers | api/services/geocoder.py |
| Usage | Conversion adresse texte → coordonnées (lat/lon) quand address est fourni à POST /assess |
| Coût | Gratuit, limité à 1 req/s par l'instance publique (mention obligatoire User-Agent) |
| Risque | Throttling (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
| URL | https://download.geofabrik.de/europe/belgium-latest.osm.pbf |
| Fichiers | worker/etl/buildings.py, worker/etl/waterways.py, worker/etl/roads.py |
| Usage | Téléchargement du fichier PBF Belgique (~600 MB) pour extraction bâtiments, cours d'eau, routes |
| Fréquence | 1 téléchargement par ingestion (ou réutilisation si < 7 jours) |
| Risque | Lenteur 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)
| URL | https://geoservices.wallonie.be/inspire/atom/WL_ALEA.xml (feed ATOM → ZIP GeoPackage) |
| Fichiers | worker/etl/wallonia.py |
| Usage | Zones inondables Wallonie (5,2M polygones, CC-BY 4.0 SPW) |
| Fréquence | Ingestion manuelle (wallonia_flood_zones) |
| Risque | Restructuration 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)
| URL | https://geoservices.wallonie.be/inspire/atom/WL_NZOBS_2021.xml (feed ATOM → ZIP GML) |
| Fichiers | worker/etl/spw_flood_zones_2021.py (source wallonia_flood_zones_2021) |
| Usage | Zones d'inondation observées lors des crues de juillet 2021 en Wallonie (168K polygones) |
| Fréquence | Ingestion manuelle, données historiques statiques |
| Risque | Faible — 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)
| URL | https://geoservices.wallonie.be/arcgis/rest/services/EAU/AZI_IDW/MapServer |
| Fichiers | worker/etl/wallonia_azi_2021.py (source wallonia_azi_2021) |
| Usage | Atlas des Zones d'Inondation 2021 : profondeurs d'eau interpolées (59K polygones, water_height_m) |
| Fréquence | Ingestion manuelle, données statiques post-crue |
| Risque | API 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)
| URL | https://app.bruxellesenvironnement.be/inspire/... (WFS INSPIRE) |
| Fichiers | worker/etl/brussels.py |
| Usage | Zones inondables Région de Bruxelles-Capitale (206 polygones, CC-BY 4.0) |
| Fréquence | Ingestion manuelle (brussels_flood_zones) |
| Risque | Faible — 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
| URL | https://unpkg.com/maplibre-gl@4.x.x/dist/maplibre-gl.js |
| Fichiers | frontend/index.html |
| Usage | Bibliothèque cartographie interactive (carte des zones d'aléa, historique inondations) |
| Risque | CDN 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
| URL | https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js |
| Fichiers | frontend/index.html |
| Usage | Gé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
| URL | https://tiles.openfreemap.org/styles/liberty |
| Fichiers | frontend/index.html (style MapLibre) |
| Usage | Fond de carte vectoriel (rues, bâtiments, étiquettes) |
| Risque | Service 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)
| URL | https://maps.googleapis.com/maps/api/js |
| Fichiers | frontend/index.html (lazy load via GET /geo/maps-key) |
| Usage | Panorama Street View du bien évalué |
| Coût | Payant au-delà de 28 000 chargements/mois (~300 USD/100K) |
| Risque | Clé 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épendance | Criticité | Action recommandée | Effort |
|---|---|---|---|
| Open-Meteo élévation | Haute (runtime) | Intégrer DEM Copernicus EEA-10 (10 m) en PostGIS | Moyen (1–2 j) |
| Nominatim géocodage | Haute (runtime) | Instance Nominatim locale (Docker) | Faible (4 h) |
| OpenFreeMap tuiles | Moyenne (UX) | Basculer sur Maptiler freemium ou auto-hébergement | Faible (2 h) |
| unpkg MapLibre/jsPDF | Moyenne (UX) | Auto-hébergement + épinglage version | Faible (1 h) |
| Geofabrik PBF | Faible (ETL) | Volume pré-téléchargé + miroir OS.fr | Faible |
| SPW/Brussels ETL | Faible (ETL) | Données statiques, fallback WFS/géoportail | Faible |
| Google Maps Street View | Faible (optionnel) | Migrer vers Mapillary si budget contraint | Moyen |