The cold_air criterion evaluates drought risk based on cold air dynamics from the FITNAH 3D climate model (Klimaanalyse Hannover 2022, geo-net). The criterion provides two independent sub-criteria:
Higher cold air values indicate better microclimate cooling, meaning lower drought risk for trees (inverse relationship). The main criterion score is a configurable weighted combination of both sub-scores.
2_21_059_ist_kpr_rev00.tif2_21_059_ist_kvs_rev00.tifbluegreencity_ki/criteria/cold_air.pytests/test_cold_air.pyValue < low_threshold → Risk Score = 1.0 (high risk - poor cold air supply)
Value = low_threshold → Risk Score = 1.0
Value in range → Risk Score = 1.0 - (value - low) / (high - low)
Value = high_threshold → Risk Score = 0.0
Value > high_threshold → Risk Score = 0.0 (low risk - excellent cold air supply, clipped)
Missing data (NoData) → Risk Score = 0.5 (neutral)
The criterion supports three threshold methods:
Calculates thresholds from the distribution of values at actual tree locations. This gives the best differentiation because trees tend to stand on sealed surfaces where cold air values differ significantly from the city-wide raster distribution.
criteria:
- name: "cold_air"
weight: 0.028361 # calibrated value; see config/config.yaml
params:
threshold_method: "sample_percentile"
low_percentile: 5 # live config (code default: 25)
high_percentile: 95 # live config (code default: 75)
kpr_weight: 0.5
kvs_weight: 0.5
Calculates thresholds from the city-wide raster distribution. Can lead to saturation effects when tree-level values cluster in a narrow range of the raster distribution.
criteria:
- name: "cold_air"
weight: 0.5 # example; current calibrated weight in config/config.yaml
params:
threshold_method: "spatial_percentile"
low_percentile: 25
high_percentile: 75
kpr_weight: 0.5
kvs_weight: 0.5
Fixed thresholds from domain knowledge:
criteria:
- name: "cold_air"
weight: 0.5 # example; current calibrated weight in config/config.yaml
params:
threshold_method: "static"
kpr_low: 5.0
kpr_high: 30.0
kvs_low: 1.0
kvs_high: 10.0
kpr_weight: 0.5
kvs_weight: 0.5
inputs:
cold_air_kpr_raster:
type: "file"
path: "Klimaanalyse Hannover/Grid-Dateien_Klimaanalyse2022/2_21_059_ist_kpr_rev00.tif"
cold_air_kvs_raster:
type: "file"
path: "Klimaanalyse Hannover/Grid-Dateien_Klimaanalyse2022/2_21_059_ist_kvs_rev00.tif"
Paths are relative to project.raster_base_dir.
cold_air_risk (weighted combination of KPR and KVS)| Field | Description |
|—|—|
| m_cold_air_kpr_value | Raw KPR value sampled at tree location (m³/m²/h) |
| m_cold_air_kpr_risk | KPR-only risk score (0–1) |
| m_cold_air_kvs_value | Raw KVS value sampled at tree location (m³/m/s) |
| m_cold_air_kvs_risk | KVS-only risk score (0–1) |
The cold air criterion complements the existing air_temperature_day / air_temperature_night and land_use criteria, which also originate from the Klimaanalyse Hannover 2022 (FITNAH model):
spatial_percentile to sample_percentile for better differentiation at tree locations (mean risk 0.746 → 0.500)