Albedo Criterion
Overview
The albedo criterion evaluates drought risk from satellite-derived surface reflectance around each tree. Albedo describes the fraction of incoming shortwave radiation that a surface reflects.
- Low albedo means dark, strongly energy-absorbing surfaces.
- High albedo means brighter, more reflective surfaces.
For urban trees, low-albedo surroundings are relevant because dark pavements, roofs, and sealed surfaces store more heat, raise near-surface temperatures, and increase atmospheric demand for evapotranspiration. The criterion therefore uses an inverse relationship:
- low albedo -> high drought risk
- high albedo -> low drought risk
This is not a direct measurement of tree condition. It is a physically interpretable site-exposure indicator that complements air temperature and NDVI.
Data Source
- Dataset: UrbanGreenEye Hannover albedo raster
- File: UrbanGreenEye ILA/UrbanGreenEye_Hannover_ILA/Hannover/UGE_Hannover_Albedo_S2_2024.tif
- Source year: 2024
- Sensor context: Sentinel-2 based UrbanGreenEye product
- Native raster CRS: EPSG:3035
- Storage format: int32 values scaled by 1000
During implementation, the raster was inspected directly. The citywide distribution is plausible for urban albedo after applying the scale factor 0.001:
- mean: about 0.152
- p5: about 0.092
- p50: about 0.151
- p95: about 0.213
These values informed the default fallback thresholds in config.yaml.
Why Albedo Is Useful
Albedo adds a different signal than the existing raster criteria:
- Air temperature captures modeled atmospheric heat load.
- Albedo captures how strongly the local urban fabric absorbs solar energy.
- NDVI captures the vegetation response that is already visible in canopy condition.
Together, the three layers form a useful cause-context-response chain:
- albedo: surface energy balance and sealing context
- air temperature: resulting thermal stress in the urban canopy layer
- ndvi: observed vegetation vitality signal
That combination is valuable for drought-risk detection because trees often deteriorate where heat-retaining urban materials, high modeled temperatures, and weak vegetation vigor co-occur.
Implementation
Location
- Module: bluegreencity_ki/criteria/albedo.py
- Tests: tests/test_albedo.py
- Catalog entry: bluegreencity_ki/criteria/criteria_catalog.py
Processing Logic
- Load the UrbanGreenEye albedo raster from ctx.raster.
- Sample raster values at tree locations using the standard point-sampling workflow used for raster criteria.
- Convert raw integer values to unitless albedo via scale_factor = 0.001.
- Filter physically implausible values outside the configured valid range.
- Map albedo to drought risk with an inverse linear transformation.
The resulting score is in the standard pipeline range [0, 1]:
- 1.0 = high drought risk
- 0.0 = low drought risk
- 0.5 = neutral fallback for missing data
Scoring Logic
With thresholds albedo_low and albedo_high:
- albedo <= albedo_low -> score = 1.0
- albedo >= albedo_high -> score = 0.0
- albedo between thresholds -> linear interpolation, inverted
- missing data -> score = 0.5
Example with static thresholds 0.10 and 0.22:
- 0.08 -> 1.0
- 0.10 -> 1.0
- 0.16 -> about 0.5
- 0.22 -> 0.0
- 0.25 -> 0.0
Configuration
inputs:
albedo_raster:
type: "file"
path: "UrbanGreenEye ILA/UrbanGreenEye_Hannover_ILA/Hannover/UGE_Hannover_Albedo_S2_2024.tif"
criteria:
- name: "albedo"
weight: 0.5 # example; current calibrated weight in config/config.yaml
params:
threshold_method: "sample_percentile"
scale_factor: 0.001
valid_min: 0.0
valid_max: 1.2
low_percentile: 5
high_percentile: 95
albedo_low: 0.10
albedo_high: 0.22
Parameters
| Parameter |
Type |
Default |
Description |
| threshold_method |
string |
sample_percentile |
static, sample_percentile, or spatial_percentile |
| scale_factor |
float |
0.001 |
Converts UrbanGreenEye raster integers to unitless albedo |
| valid_min |
float |
0.0 |
Minimum accepted albedo after scaling |
| valid_max |
float |
1.2 |
Maximum accepted albedo after scaling |
| low_percentile |
int |
5 |
Lower percentile for dynamic thresholding |
| high_percentile |
int |
95 |
Upper percentile for dynamic thresholding |
| albedo_low |
float |
0.10 |
Static low threshold |
| albedo_high |
float |
0.22 |
Static high threshold |
Recommended Mode
sample_percentile is the recommended default because it adapts to the tree sample that is actually scored. This avoids hard-coding one fixed reflectance range for all future raster updates.
Output Fields
The criterion produces:
- albedo_risk: drought-risk score from 0 to 1
- albedo_value: scaled unitless albedo at the tree location
Metadata includes:
- threshold method
- scale factor
- thresholds actually used
- min, max, mean of valid samples
- valid and missing sample counts
Process and Design Decision
The discussion around issue #92 started from the broader question of how remote sensing should enter the drought-risk pipeline.
The chosen implementation deliberately uses an explicit raster criterion instead of a latent embedding feature. The practical process was:
- evaluate which remote-sensing products are already available for Hannover in a stable, local workflow
- prefer physically interpretable signals that can be sampled directly at tree locations
- implement them as transparent criteria that fit the existing static scoring pipeline
UrbanGreenEye albedo satisfies these requirements well:
- it is already available as a local GeoTIFF
- it covers the whole study area consistently
- it has a clear physical interpretation
- it integrates with the same raster sampling workflow as land use and air temperature
Why Not Google Earth Satellite Embeddings
Issue #92 also raised the question whether the project should use satellite embeddings instead of explicit raster variables.
For the static criteria pipeline, the team decided against Google Earth based satellite embeddings for now. The reasons are pragmatic and methodological:
- Operational dependency: the earlier ML planning documents already flagged location embeddings as requiring Google Earth Engine and cloud-side infrastructure.
- Cost and access: that adds account, quota, and potentially cost constraints that the current local pipeline avoids.
- Reproducibility: a local GeoTIFF in the repository workflow is easier to re-run, archive, QA, and version than opaque external embedding generation.
- Explainability: a criterion such as albedo can be documented, validated, and discussed scientifically; a latent embedding dimension cannot.
- Maintainability: updating a single raster input is much simpler than regenerating embeddings for every new tree inventory snapshot.
- Architectural fit: the current static score is intentionally criterion-based and traceable. Embeddings fit better into an ML workflow than into a transparent weighted-sum criterion system.
This does not mean embeddings are useless. They remain relevant for future ML experiments. But for the current criterion-based drought-risk pipeline, explicit remote-sensing variables are the better engineering choice.
Validation and Limitations
Strengths
- physically interpretable
- available as a citywide remote-sensing layer
- simple and robust integration into the existing pipeline
- complements temperature and NDVI without duplicating them
Limitations
- albedo is a site-context proxy, not a direct tree-health measurement
- the relation is not purely monotonic in every urban material context
- tree crowns can partially mask ground-surface effects at fine scale
- very bright impervious materials can still imply sealed, low-infiltration environments even if their albedo is high
For that reason, albedo should be interpreted jointly with land use, air temperature, and NDVI, not as a standalone drought diagnosis.
Changelog
2026-04-01
- initial implementation of UrbanGreenEye albedo as a remote-sensing criterion
- added config, tests, and criteria documentation
- documented the issue #92 design rationale and the decision against Google Earth satellite embeddings in the static criteria pipeline