Repository navigation
Description
📋 Description
Après l'import OSM (#35), ce job calcule les indicateurs de pression humaine par zone H3 et les écrit dans osm_features_by_zone, puis supprime le schéma temporaire (osm_tmp_*). Mesures en EPSG:2154.
✅ Acceptance Criteria
- DoD générales (logs JSON + sortie claire)
- Déclenchement par timer systemd (pas de SQS : BioWatch n'utilise pas AWS). Le job traite les imports
osm_import_snapshotensuccessdansjob_runsqui n'ont pas encore été calculés. - Métriques par
zone_id:building_area_ratio,road_density_major,road_density_all,urban_landuse_ratio - Calculs surfaces/longueurs en 2154 (stockage en 4326)
- UPSERT dans
osm_features_by_zone(+job_run_zone_errorssi partial) - Cleanup obligatoire du schéma
osm_tmp_* - Couverture de tests ≥ 90%
🔗 Contrat avec l'import (#35)
Ce job lit job_runs, il n'y a pas de message :
| Info | Où la trouver |
|---|---|
| Imports à traiter | job_runs avec job_name = osm_import_snapshot, status = success |
| Région | scope (region:{aoi}) |
| Bucket (annuel) | bucket_id |
| Schéma à lire | output_ref (ne pas reconstruire le nom : il est suffixé par la clé d'idempotence, osm_tmp_{aoi}_{bucket}_{clé}) |
source_version de l'import |
à enregistrer par #35 (output_ref en JSON {"schema": …, "source_version": …}, demandé dans la review de #94) |
h3_res |
default_res de l'AOI |
| Environnement | --env global / BIOWATCH_ENV (#18) |
Tables fournies dans le schéma (EPSG:4326) :
buildings(building, polygones)roads(highway,is_major, lignes)landuse(landuse, polygones, déjà filtré sur l'urbain)
📐 Définitions (fixées à l'import par style.lua de #35, à valider avant de lancer les imports)
- Route majeure (
road_density_major) :motorway,trunk,primary,secondaryet leurs*_link. - Toutes les routes (
road_density_all) : routes ouvertes aux véhicules = les majeures +tertiary(_link),unclassified,residential,living_street,service. Sans chemins, pistes cyclables, trottoirs, pistes (path,footway,cycleway,track…). - Landuse urbain (
urban_landuse_ratio) :residential,commercial,industrial,retail,construction,garages,railway,brownfield. - Bâtiment (
building_area_ratio) : tout objet surfacique avec un tagbuildingdifférent deno.
Ces listes sont appliquées à l'import et le schéma brut est supprimé après calcul : les changer impose de réimporter (incrément de STYLE_VERSION dans #35).
⚠️ Points d'attention pour le calcul
- Chevauchements : fusionner (
ST_Union) les polygoneslanduseetbuildingspar cellule avant de mesurer, sinon un ratio peut dépasser 1. - Unités : densités routières en m / km², ratios entre 0 et 1.
- Qualité OSM variable dans le temps : OSM était moins complet en 2016. Une hausse entre années peut refléter de la cartographie ajoutée, pas de la construction. À documenter pour l'usage dans le score (dynamique temporelle).
- Bords de région : une cellule à cheval sur deux extraits Geofabrik ne voit que les objets de l'extrait importé.
- Performance (IDF : ~3,3 M bâtiments, 440 k routes, ~18 k cellules) : s'appuyer sur les index spatiaux créés par osm2pgsql, reprojeter les hexagones une seule fois.
source_versiondeosm_features_by_zone: combiner la version de l'import (snapshot + style) et la version du calcul de ce job.
🔗 Prerequisite Issues
osm_tmp_*) » :
- Depends on Scheduler + Import OSM snapshot (osm2pgsql) #35 (Scheduler + Import OSM snapshot), PR feat: import OSM snapshot into a temporary schema (#35) #94
zones_hex accessible, geo.metrics (2154), table osm_features_by_zone (UNIQUE(zone_id, bucket_id, source_version)) :
- Prérequis : Init DB #12, packages/geo #15, Grille H3 & AOI #20
Source : Notion « Compute OSM features + Cleanup » (Prétraitements & Pipeline Data). Mis à jour le 06/11/2026 : déclenchement sans SQS, contrat avec #35, définitions des métriques.
Activity