Methodology
Saferland evaluates climate resilience by combining eight independent risk factors into a single score, supplemented by a ten-domain Regional Climate Guide covering broader socioeconomic impacts through 2100. This page documents how each factor is measured, the scientific basis for our thresholds, data sources used, and known limitations. All scoring values reflect the production codebase. Key sources include IPCC AR6, DMI technical reports, Spildevandskomiteen (SVK) standards, GEUS geological surveys, and over 70 peer-reviewed studies spanning climate science, economics, geopolitics, and public health.
Sea Flood Risk
What we measure
The site's elevation above mean sea level determines vulnerability to storm surges, sea-level rise, and coastal flooding. Flood risk increases non-linearly as elevation approaches sea level because even modest storm surges can inundate large areas of flat, low-lying terrain — a defining characteristic of Danish geography.
Scientific basis
Denmark's highest natural point (Mollehøj) is just 170.86m. Measured directly against the national DHM/Terræn elevation model, 14.0% of Denmark's land area lies below 5m (DVR90) — 9.5% below 3m and 24.0% below 10m. The country experienced its worst recorded storm surge on 13 November 1872, when water levels reached 3.0–3.3m above mean sea level along the inner Danish waters (southern Zealand, Lolland-Falster), destroying over 2,000 buildings. More than 260 people died nationwide including those lost at sea; the frequently quoted figure of 80 is the Lolland-Falster toll alone.
DMI Report 21-28: Historical extreme high water levels along the coastline of Denmark; Kystdirektoratet storm surge records; Styrelsen for Dataforsyning og Infrastruktur: Danmarks Højdemodel (Terræn)DVR90 datum caveat
Danish elevation data uses DVR90 (Dansk Vertikal Reference 1990), which was calibrated to mean sea level circa 1990. Due to sea-level rise since then, DVR90 zero is now approximately 5–10cm below actual present-day mean sea level. This means an elevation of “1.0m DVR90” is effectively closer to 0.9–0.95m above today's water. Our scoring does not add this offset but users should be aware that stated elevations have a small built-in optimism.
Geodatastyrelsen: DVR90 definition; DMI sea level observations Copenhagen 1890–2023Regional land movement
Post-glacial isostatic adjustment causes northern Jutland/Scandinavia to rise (+1–2 mm/yr at Skagen). South of the tilting line the land subsides, but only slightly: up to −0.4 mm/yr, with the maximum in south-west Jutland and the Wadden Sea rather than on Lolland-Falster. Copenhagen and Aarhus are both still rising, at roughly +0.5 mm/yr. Over a century the subsidence adds up to about 4cm of effective additional sea-level rise in the most affected areas, on top of global projections.
Vestol et al. (2019): NKG2016LU land uplift model; Khan et al. (2019)Data sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| Open-Meteo Elevation API | Point elevation (Copernicus DEM / SRTM blend) | ~30m horizontal, ±1–2m vertical accuracy |
| AWS Terrarium Tiles | RGB-encoded elevation for heatmap & flood layer | ~30m per pixel at zoom 12; derived from SRTM/ASTER |
| Dataforsyningen DHM (when token available) | LiDAR-derived flood zone confirmation | 0.4m ground resolution (Denmark's national DEM) |
How we calculate
The climateScore() function applies a stepped adjustment based on site elevation.
Starting from the baseline score of 72:
| Elevation | Adjustment | Rationale |
|---|---|---|
| ≥ 40 m | +12 | Above all projected surge + SLR scenarios through 2150 |
| ≥ 25 m | +7 | Safe from all IPCC AR6 scenarios including SSP5-8.5 |
| ≥ 15 m | +2 | Above 100-year North Sea surge (~4–5m DVR90) + worst-case SLR |
| ≥ 10 m | −5 | Within range of compound events (surge + SLR + rainfall) |
| ≥ 6 m | −8 | Above every recorded Baltic surge; still inside the margin of a North Sea surge plus SLR (~5m by 2100) |
| ≥ 3 m | −22 | Below 1872-type inner water surge (~3.3m DVR90) |
| < 3 m | −38 | Severe risk; most scenarios inundate by 2100 |
Storm surge context
100-year return-period surge heights vary dramatically across Denmark:
| Coast | 100-yr surge (DVR90) | Source |
|---|---|---|
| North Sea (Esbjerg, Ribe) | 4.0–5.0 m | DMI Report 21-28 |
| Inner Danish waters (Copenhagen) | 1.5–2.0 m | DMI / Kystdirektoratet |
| Southern Zealand / Lolland (1872 type) | 2.5–3.3 m | Historical record + DMI modelling |
| Limfjorden | 2.0–2.5 m | Kystdirektoratet |
The elevation also feeds into the Terrarium-based Flood Risk Layer, which classifies every pixel
against the user-adjustable floodThresholdM slider (default 1.0m):
≤ 0.5 m transparent (already water)
≤ thresh × 0.5 dark blue, 210 alpha — deep inundation
≤ thresh blue, 175 alpha — inundation zone
≤ thresh × 1.5 light blue, 100 alpha — at-risk fringe
≤ thresh × 2.5 faint blue, 45 alpha
else transparent
Limitations
- Open-Meteo DEM (~30m) cannot resolve dykes, levees, raised roads, or micro-topography. Danish DHM (0.4m) is far more precise but only used for flood zone confirmation, not point elevation.
- DVR90 zero is ~5–10cm below current MSL — stated elevations are slightly optimistic.
- Land subsidence south of the tilting line (up to −0.4 mm/yr) is not added to score adjustments.
- No distinction between protected (dyked) and unprotected coastline.
- Tidal range and local surge dynamics are not modelled — we use national-scale surge statistics.
Rain & Runoff Risk
What we measure
The likelihood of stormwater accumulating at a location during an extreme cloudburst event. This combines soil permeability, surface type, topographic position, and proximity to waterways that may overflow. Denmark is particularly exposed to cloudbursts: the 2 July 2011 Copenhagen event delivered 135.4 mm over 24 hours and cost DKK 4.88 billion in insured losses. No source publishes a return period for it, so we do not state one.
Forsikring & Pension (2012): Copenhagen cloudburst damage estimate; DMI Climate AtlasScientific basis
Danish sewer design standards (SVK Skrift 27)
Danish municipal sewers are designed to the standards set by Spildevandskomiteen (The Danish Water Pollution Committee, SVK). SVK Skrift 27 (2005) specifies that combined sewer systems must handle a T=5 to T=10 year return period event without surface flooding. For separate stormwater systems, T=5 years is typical. The Skrift series has continued since: Skrift 29 (2008), Skrift 30 (2014) and most recently Skrift 32 (2023).
Spildevandskomiteen: Skrift 27 — Funktionspraksis for afløbssystemer under regn (2005)A T=5–10 year event in Copenhagen corresponds to approximately 15–25 mm/hr rainfall intensity (depending on duration and location). A 100-year cloudburst produces approximately 50–60 mm/hr raw. The SVK klimafaktor is indexed by return period, not by how cautious the planner wishes to be: 1.2 at T=2, 1.3 at T=10 and 1.4 at T=100. Applying the T=100 factor gives approximately 70–84 mm/hr for future conditions.
SVK Skrift 30 (2014): the Spildevandskomiteen klimafaktor document; SVK Skrift 29 (2008): Forventede ændringer i ekstremregn; DMI IDF curves for CopenhagenRunoff coefficients (φ-coefficients)
We use the SVK/Spildevandskomiteen rational method φ-coefficients for Danish urban surfaces, which determine what fraction of rainfall becomes surface runoff:
| Surface type | φ coefficient | SVK category |
|---|---|---|
| Asphalt / concrete (roads, commercial) | 0.80 – 0.90 | Tæt bymæssig bebyggelse |
| Industrial areas | 0.60 – 0.80 | Industri, delvist befæstet |
| Residential composite (villa quarter) | 0.30 – 0.60 | Villakvarter, blandet |
| Parks / lawns | 0.05 – 0.15 | Parkarealer, græs |
| Clay farmland | 0.15 – 0.30 | Dyrkede marker på moræneler |
| Sandy farmland / heathland | 0.05 – 0.15 | Sandede arealer |
Climate change trend
DMI projections indicate a 15–25% increase in extreme rainfall intensity by 2100 under RCP4.5/SSP2-4.5. SVK Skrift 30 sets the klimafaktor applied to current IDF curves for infrastructure planning, indexed by return period: 1.2 at T=2, 1.3 at T=10, 1.4 at T=100. Our scoring uses current intensities but notes the trend in the risk assessment.
SVK Skrift 30 (2014); DMI Technical Report 15-07; Olesen et al. (2014): Fremtidige klimaændringer i DanmarkData sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| GEUS WMS (Jordartskort 1:25,000) | Soil type classification (clay, sand, peat, etc.) | 1:25,000 geological survey; boundary accuracy ±10–30m |
| OpenStreetMap Overpass API | Land-use polygons (urban surface type) | Crowdsourced, variable completeness |
| AWS Terrarium elevation tiles (Open-Meteo as fallback) | ~201-point elevation grid for topographic depression analysis | Sampled at zoom 13, ~11m per pixel (still far coarser than DHM's 0.4m) |
How we calculate
The riskRain() function evaluates a composite of sub-factors. Starting baseline: 25
(Denmark's flat terrain and high rainfall intensity mean every property has meaningful cloudburst risk).
| Condition | Points added | Rationale |
|---|---|---|
| Elevation < 5m | +35 | Low-lying ground with nowhere to drain |
| Elevation 5–12m | +15 | Limited gravity drainage |
| Peat soil (no urban override) | +25 | Saturated, near-surface water table, negligible storage |
| Clay soil (no urban override) | +20 | SVK φ ≈ 0.15–0.30 on clay farmland |
| Moderate soil (till gravel, glaciolacustrine sand) | +8 | Mixed permeability; drains, but not freely |
| Urban managed drainage | −5 | Active sewer infrastructure removes water (partial drainage: −2) |
| Water risk score > 30 | +15 | A watercourse close enough to contribute during the same event |
| Floodplain flag (watercourse within 100m, at or above site) | +15 | Site sits on the channel's own flood-spreading ground |
| DHM confirms the 1m flood zone | +12 | LiDAR fill model puts the site under water at a 1m rise |
| DHM 3m flood zone only | +5 | Reached only by a much larger rise |
| DHM says outside the zone, but a waterway is near | −8 | LiDAR overrides the OSM proximity estimate: terrain protects |
| Depression score ≥ 55 | +18 | Runoff from the whole neighbourhood converges here |
| Depression score 35–54 | +8 | Partial convergence; some pooling likely |
| Ridge position (score ≤ 15) | −8 | Water drains away by gravity |
Urban surface types use SVK φ-coefficients converted to our scale:
| Land Use | Runoff % | Risk Delta | SVK basis |
|---|---|---|---|
| Commercial / city centre | 85% | +5 | φ = 0.80–0.90, managed sewer |
| Industrial zone | 75% | +18 | φ = 0.60–0.80, partial drainage |
| Construction site | 70% | +25 | Compacted soil, no drainage |
| Residential area | 35% | +3 | φ = 0.30–0.60, composite |
| Farmland | 25% | 0 | φ = 0.15–0.30 on clay |
| Allotments | 18% | −10 | Near-natural infiltration |
| Cemetery / green space | 15% | −8 | Permeable ground cover |
| Park | 12% | −14 | φ = 0.05–0.15 |
| Forest | 8% | −14 | φ < 0.10, high interception |
The compound rain term in the climate score
riskRain() above produces the rain bar shown in the report. Separately,
climateScore() carries its own compound rain term worth up to −18.
It exists because rain damage is multiplicative rather than additive: more rainfall falling on more
sealed ground produces disproportionately more peak runoff, which purely additive per-factor scoring
cannot express. It counts how many rain-worsening conditions hold at once:
riskCount = number of these that are true
elevation < 8 m
clay or peat soil
depressionScore ≥ 35
waterRiskScore > 25
sealed urban surface (runoff > 60%)
5 -> -18 4 -> -14 3 -> -9 2 -> -4 1 -> -1 0 -> 0
+2 back if urban drainage is managed and the penalty exceeds 4
+3 bonus if riskCount is 0 and elevation ≥ 20 m
A second, graded top-up of up to −8 handles soil × depression severity. The count above only records that impermeable soil and a depression co-occur; it is blind to how deep the depression is. A 3m basin on peat ponds cloudburst water far worse than a shallow hollow on clay, so this term scales with depth, soil impedance and how low-lying the site is:
penalty = round(8 × drainImpedance × depthFactor × lowGate)
drainImpedance = 1.0 peat | 0.7 clay
depthFactor = clamp((depressionScore - 35) / 65, 0, 1)
lowGate = 1.0 below 8m | 0.5 below 15m | 0.2 above
Limitations
- No real-time rainfall data — uses statistical cloudburst thresholds, not forecasts.
- Municipal sewer capacity varies by neighbourhood; SVK T=5–10yr standard is a national average.
- Surface permeability is approximated from broad OSM land-use categories, not field measurements.
- Green roofs, retention basins, LAR/SUDS features, and recent climate adaptation projects are not detected.
- The 30m DEM cannot resolve urban micro-topography (sunken roads, underpasses, courtyards) that traps water.
Topographic Position
What we measure
Whether a location sits in a topographic low point (basin or depression) where rainwater and floodwater naturally collect, or on a ridge or slope where water drains away. In Denmark's flat terrain, even subtle depressions of 0.5–1.0m can trap significant volumes of stormwater.
Scientific basis
Water flows downhill and pools in the lowest points, so a site's position relative to its surroundings governs how much runoff arrives from elsewhere. The Topographic Position Index (TPI), widely used in geomorphological analysis, classifies landforms by comparing a point's elevation to its neighbourhood mean — exactly the approach we implement, at two scales. We deliberately publish no multiplier for how much rainfall a depression concentrates: we could not find a sourced Danish figure, and an invented one would be worse than none.
Weiss (2001): Topographic Position and Landforms Analysis (ESRI); Jenness (2006): TPI extension for ArcGIS; Balstrøm & Crawford (2018): Arc-Malstrøm bluespot methodData sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| AWS Terrarium elevation tiles (primary); Open-Meteo batch API (fallback) | ~201 grid elevations, read from tiles the map has usually already cached | Zoom 13, ~11m per pixel; two rings covering ±200m and ±1km |
How we calculate
The analyseTopographicContext() function builds a two-scale grid centred on the target
location: a dense 11×11 inner grid over ±200m (~40m spacing) plus a sparse
9×9 outer grid over ±1km (~250m spacing), skipping outer points that fall
inside the inner zone — about 201 sample points in total. Pooling both rings into
one statistic was wrong: the dense inner grid carried most of the weight while covering only ~4% of the
area, so a regional slope with a small local dimple read as a basin. Each scale is therefore measured
against its own ring, and a basin must be depressed at both.
// Two scales, each measured against its OWN ring (Weiss 2001 multi-scale TPI)
tpiInner = centre - mean(inner ring) // ±200m, 11x11
tpiOuter = centre - mean(outer ring) // 200m-1km, 9x9
fracHigher = share of that ring above centre + 0.3m
combinedHigherFrac = 0.6 x fracHigherInner + 0.4 x fracHigherOuter
combinedTpi = 0.6 x tpiInner + 0.4 x tpiOuter
depthNorm = min(max(0, -combinedTpi) / 4, 1) // saturates at 4m
// WDI = geometric mean of SHAPE x DEPTH -- both are required
depressionScore = round(sqrt(combinedHigherFrac x depthNorm) x 100)
capped at 45 local hollow only (inner depressed, outer neutral)
capped at 50 valley floor (outer depressed, inner neutral)
capped at 30 many higher points but centre near the mean at both scales
// OUTFLOW GATE -- a sink fills, a valley conveys water away
if depressionScore ≥ 55 and the lowest nearby point is >1.5m below centre:
depressionScore = max(35, round(depressionScore x (0.35 + 0.65 x sealed)))
sealed = 1 when almost nothing nearby is lower, 0 once a fifth is
The ±0.3m tolerance prevents noise in flat terrain from creating false depression signals. The depression score maps to a position label and a score adjustment:
| Depression Score | Position | Adjustment | Hydrological meaning |
|---|---|---|---|
| ≥ 75 | Basin | −24 | Collects surrounding runoff and has no clear outlet |
| 55 – 74 | Depression | −16 | Strong convergence zone; water pools during cloudburst |
| 35 – 54 | Slight hollow | −6 | Some convergence; partial pooling likely |
| 16 – 34 | Flat terrain or slope | 0 | Neutral — sheet flow, no preferential accumulation. There is no separate slope band: nothing between 16 and 34 changes the score. |
| ≤ 15 | Ridge / elevated | +7 | Water drains away in all directions |
Additional outputs include deltaFromMean (centre vs. surrounding average),
relief (max−min elevation across the grid), and runoffRisk
(qualitative label based on all topographic indicators).
Limitations
- The outer ring samples at ~250m spacing, so depressions narrower than that are visible only to the inner ring — and the inner ring reaches just ±200m.
- Urban terrain features (underpasses, sunken car parks, enclosed courtyards) are below the 30m DEM resolution.
- The ±0.3m tolerance may miss very subtle depressions in western Jutland heathland (relief <1m over several km).
- No flow-direction or flow-accumulation modelling. The outflow gate is a proxy for whether water can leave, not a routed drainage network; a true D8/D-infinity analysis would require the 0.4m DHM.
River / Waterway Risk
What we measure
The combined flood risk from nearby rivers, streams, canals, and other waterbodies. We consider both horizontal proximity and vertical elevation difference — features that are close to the site and at or above its elevation pose the greatest threat.
Scientific basis
Proximity–risk relationship
Danish insurance data (Forsikring & Pension) shows that properties within 100m of a watercourse have significantly elevated claims rates for water damage. The risk decays with distance following an approximate power-law relationship. Our model uses a proximity exponent of 1.5:
proximityFactor = 1 - (distance / 400) // normalised 0–1 over 400m search radius
contribution = baseWeight × proximityFactor^1.5 × elevRiskMultiplier
The 1.5 exponent produces a steeper-than-linear decay: risk drops rapidly beyond ~150m but remains non-zero out to 400m. Empirical studies of riverine flood damage show exponents between 1.0 and 2.0, with 1.5 as a reasonable midpoint for Danish lowland watercourses.
Forsikring & Pension: Skadedata for oversvommelse (2018); Merz et al. (2010): Assessment of economic flood damage, Natural HazardsDHM watercourse flood model
When a Dataforsyningen token is available, Saferland probes the DHM vandloeb_overloeb
WMS layer. This is a static bathtub/fill model derived from 0.4m LiDAR data —
it identifies areas that would be inundated if watercourse levels rose by a given threshold (1m, 3m, etc.).
It does not incorporate hydrodynamic flow, channel capacity, or bridge constrictions.
Data sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| OpenStreetMap Overpass API | Waterways and water bodies within 400m bbox | Crowdsourced geometry; good for major features, variable for minor ditches |
| Open-Meteo Elevation API | Elevation at each water feature (top 8 closest) | ~30m DEM — approximates water surface, not actual gauge level |
| Dataforsyningen DHM vandloeb_overloeb | LiDAR-derived static flood zone (bathtub model) | 0.4m LiDAR; authoritative for terrain but simplified hydrology |
How we calculate
The analyseWaterFeatures() function runs three passes:
Pass 1 — Classify
Each OSM element is assigned a baseWeight reflecting its flood potential.
Tidal and decorative features are discounted or skipped. Urban drains and ditches have their weight halved
(managed infrastructure reduces risk).
| Waterway Type | Base Weight | Rationale |
|---|---|---|
| River | 10 | Largest flood potential; carries upstream catchment |
| Stream | 6 | Moderate flood potential; common in Danish lowlands |
| Canal | 7 | Managed but can overflow; harbour canals = surge risk |
| Drain | 4 | Engineered; low but non-zero overflow risk |
| Ditch | 3 | Minor; relevant mainly for waterlogging |
| Water bodies | 4 – 10 | Separate weight table: floodplain 10, lagoon 9, lake 8, marsh 8, wetland 7, pond 4 |
Pass 2 — Elevation sample
The 8 closest features are sampled for elevation via Open-Meteo (5s timeout per feature, parallel). This determines the vertical relationship between the site and each water feature.
Pass 3 — Risk scoring
The elevRiskMultiplier adjusts based on the site's elevation relative to the water feature:
| Condition | Multiplier | Rationale |
|---|---|---|
| Site below water surface | 2.5× | Gravity drains water toward site; most dangerous |
| Within flood surge range | 0.8 – 2.0× | Overflow could reach site during high flow |
| Above the surge range, within 2.5× of it | 0.4× | Only an exceptional event could reach the site |
| Well above water surface | 0.05× | Terrain provides natural protection |
Contributions are accumulated and normalised:
MAX_WATER_RISK = 39.1 // (river 10 x 2.5 x 1.0) + (stream 6 x 2.0 x 0.8) + (brook 5 x 1.5 x 0.6)
waterRiskScore = min(100, accumulated / MAX_WATER_RISK x 100)
// Features beyond the 8 closest still contribute, at half weight and with no
// elevation correction. The divisor is deliberately conservative so that cities
// full of managed canals do not all spike into the 90s.
The waterway score maps to climate score adjustments:
| Water Risk Score | Adjustment | Meaning |
|---|---|---|
| ≥ 70 | −25 | Close to major waterway, below flood level |
| ≥ 45 | −14 | Significant waterway exposure |
| ≥ 25 | −8 | Moderate proximity risk |
| ≥ 10 | −4 | Minor waterway presence |
| < 10 | 0 | No significant waterway risk |
The floodplainRisk flag is elevation-gated, not flat: −12 below 10m,
−6 below 20m, −3 above that. A property beside a river canyon is on a floodplain in name only,
and a flat penalty punished it as though it sat on the valley floor. Separately, when every water feature
nearby is managed tidal water — a Copenhagen or Odense canal, no true river or stream — and the
water risk score is under 30, the waterway block adds a small +2 bonus: the real hazard
there is storm surge, which the coast block has already counted. Finally, when DHM shows the site is
outside the flood zone despite OSM waterways being nearby, the displayed waterway risk bar is
reduced by 10 points (terrain-protected).
Limitations
- OSM waterway coverage varies; minor streams and culverted watercourses may be missing.
- Elevation sampling uses ~30m DEM, not actual water surface gauge data — overestimates depth for incised channels.
- DHM vandloeb is a static bathtub model, not hydrodynamic — it does not account for channel capacity, bridge constrictions, or flood defences.
- Culverted or piped watercourses (common in Danish cities) are invisible in OSM data.
- No precipitation-runoff modelling — risk is proximity-based, not simulation-based.
Soil Drainage
What we measure
The underlying soil type, which determines how quickly rainwater infiltrates into the ground versus pooling on the surface. Clay-rich soils (moræneler) and peat soils have very low permeability and significantly increase surface water risk.
Scientific basis
Danish till (moræneler) hydraulic conductivity
Danish moræneler (glacial till clay) has a matrix hydraulic conductivity of approximately 10−9 m/s — essentially impermeable. However, field-scale measurements by Fredericia (1990) demonstrated that fractured Danish till has bulk hydraulic conductivity 100–1,000× higher than the matrix value, due to desiccation cracks and fracture networks in the upper 2–4m. This means water can penetrate more quickly than pure clay would suggest, but the fractures saturate rapidly and the soil reverts to near-impermeable behaviour during sustained rainfall.
Fredericia, J. (1990): Saturated hydraulic conductivity of clayey tills and the role of fractures. Nordic Hydrology, 21(2), 119–132For surface runoff purposes, the effective runoff coefficient on moræneler is φ ≈ 0.15–0.30 (SVK), meaning 15–30% of rainfall runs off during short events. During sustained cloudburst events (>30 min), the effective runoff increases significantly as fractures fill and surface saturation occurs.
Peat soil subsidence
Peat soils (tørvejord) pose a dual risk: extremely low permeability and ongoing subsidence. Drained peat in agricultural use subsides at approximately 1–2 cm/year due to oxidative decomposition. Over decades, this progressively lowers the land surface, increasing flood vulnerability. Areas like Lammefjorden (western Zealand) and Store Vildmose (northern Jutland) have subsided by 1–3m since drainage.
Greve et al. (2014): Estimating peat soil loss in Denmark; GEUS geological survey dataGroundwater considerations
A high water table reduces the soil's capacity to absorb rainfall and increases basement flooding risk.
This is measured, not inferred: Saferland reads a depth-to-water value from the national
HIP 10m terrain-near groundwater model via Dataforsyningen (checkGroundwaterDepth(), WMS
GetFeatureInfo on the 10m_phreatic_winter layer), and classifies it as shallow (<1m),
moderate (1–3m) or deep (>3m). Without a Dataforsyningen token the app falls back to an older
raster probe of the 2010 groundwater surface, which returns the same three classes but no depth in metres.
Data sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| GEUS WMS Jordartskort 1:25,000 | Soil type classification via GetFeatureInfo | 1:25,000 (v7.1, Jan 2026); boundary accuracy ±10–30m |
| OpenStreetMap Overpass API | Urban land-use polygon for surface override | Crowdsourced, variable |
How we calculate
The isInClayZone() function sends a WMS GetFeatureInfo request to the GEUS server
at an 800×640 virtual map centred on the target point. It parses the Jordart attribute from
the GML response and classifies it into one of four risk levels:
| Risk Level | Soil Types (Danish geological terms) | Adjustment | Ksat range |
|---|---|---|---|
| Peat | tørv, ferskvandstørv, ferskvandsdannelser, kær og mose | −20 | 10−8–10−6 m/s + subsidence |
| High (clay) | moræneler, issøler, marint ler, ferskvandler, søler | −15 | Matrix: ~10−9 m/s; bulk: 10−7–10−6 |
| Moderate (no climate-score penalty) | morænegrus, moræne, extramarginale aflejringer, issøsand, postglacialt hav | 0 | 10−6–10−4 m/s |
| Low (sandy) | smeltevandssand, flyvesand, klitsand, strandvoldsaflejringer, hedeslette | 0 | 10−5–10−3 m/s |
Only two soil classes move the climate score: peat and clay. “Moderate” soils are neutral
there — they do carry +8 in the rain risk bar, but nothing in climateScore(). We show
the row rather than hide it, because a moderate reading is a real result and not a missing one.
When a site falls within an OSM-mapped urban land-use polygon, the surface type replaces the plain soil penalty. The surface risk delta is applied scaled by 0.6, a naturally-drained green surface (park, allotment) earns a further +3, and the underlying soil is then added back at a reduced rate, because urban drainage only partly compensates for it:
| Under an urban surface | Adjustment |
|---|---|
| Surface risk delta | −round(riskDelta × 0.6) |
| Naturally drained green surface | +3 |
| Peat substrate | −12 |
| Clay substrate | −8 |
Groundwater in the score
The measured depth class contributes its own adjustment, plus an interaction with elevation. A near-surface water table on low ground leaves almost no soil buffer before surge or rainfall saturates it, so the two compound:
| Measured depth class | Adjustment | Notes |
|---|---|---|
| Shallow (< 1 m) | −8 | Basement seepage, foundation damage, sewer infiltration |
| Moderate (1–3 m) | −4 | Limited buffer in a sustained wet period |
| Deep (> 3 m), or not measured | 0 | No adjustment |
| Shallow and elevation < 5 m | −4 more | −2 instead between 5 and 10 m. Total groundwater penalty tops out at −12. |
Limitations
- GEUS 1:25,000 boundaries can be off by 10–30m — a property near a boundary may be misclassified.
- GEUS coverage is Denmark only; locations outside Denmark receive no soil data.
- Artificial fill, compacted ground, and post-construction surfaces are not reflected.
- Groundwater depth is measured, but from a 10m national model rather than a borehole at the address, and the reading is a winter phreatic level — it does not capture a perched water table, a leaking drain, or seasonal extremes at that specific plot.
- Fredericia (1990) fracture conductivity means moræneler is not as impermeable as the matrix K suggests, but during sustained rainfall the effective permeability drops back toward the matrix value.
- Peat subsidence (1–2 cm/yr) is not dynamically modelled — current elevation is used as-is.
Coast Distance
What we measure
The shortest distance from the site to the nearest coastline, measured perpendicular to actual coastline geometry (not point-to-point). Proximity to the coast increases exposure to storm surges, salt spray, and long-term erosion.
Scientific basis
Coastal erosion rates
Kystdirektoratet (the Danish Coastal Authority) monitors erosion along the entire Danish coastline. Erosion rates vary dramatically:
| Coast type | Typical retreat rate | Location examples |
|---|---|---|
| West Jutland sandy coast | 0.5 – 2.0 m/yr | Blåvand, Thorsminde, Agger |
| Moraine clay cliffs | 0.1 – 0.5 m/yr | Stevns Klint, Møns Klint, Fur |
| Inner waters (sheltered) | < 0.1 m/yr | Fyn archipelago, Øresund |
| Nourished beaches | Net stable (managed) | Skagen, North Sea coast (post-nourishment) |
Cliff erosion mechanism
Clay cliffs in Denmark (e.g. Stevns Klint) erode through rotational slides and mudflows when the toe is undercut by wave action and the clay becomes saturated. The retreat is episodic rather than gradual: a single storm can remove several metres of cliff. Cliff exposure enters the score as a continuous ramp over elevation, and it is added to the surge term rather than substituted for it — see “How we calculate” below.
DMI Denmark-specific sea-level rise
IPCC AR6 provides global mean SLR projections, but Denmark experiences approximately 10–15% higher relative sea-level rise than the global mean along the North Sea coast, due to gravitational fingerprinting (proximity to melting Greenland ice redistributes melt water), ocean dynamics, and regional land subsidence in southern Denmark.
DMI Report 25-18 (2025): Fremtidens havniveaustigning i Danmark; Bamber et al. (2019): Ice sheet contributions to future sea-level rise, PNASData sources
| Source | Provides | Resolution / Accuracy |
|---|---|---|
| Embedded OSM coastline (natural=coastline, © OpenStreetMap contributors, ODbL) | The whole Danish coastline, shipped inside the page: 2,646 ways / 18,331 points, Douglas-Peucker simplified at 80m, Int16 delta-encoded and base64'd to ~119KB | Max observed error vs full-resolution geometry: 14m. Downloaded once (2026-06-13); no network request at runtime |
| In-page 0.1° grid index | Narrows each query to the coastline segments that could plausibly be nearest | ~0.1 ms per query, deterministic. No cache and no fallback polyline exist |
| Kystdirektoratet KystAtlas | Measured chronic erosion rate and coast type for the nearest segment | Fetched non-blocking; arrives after the first score render and can move it either way |
How we calculate
coastDistKm() computes the distance locally, as pure arithmetic over the embedded geometry.
There is no Overpass query, no stepped-radius search, no cache and no fallback polyline.
That earlier two-tier design was removed because whenever Overpass was rate-limited — which the
project treats as routine — the hand-drawn fallback outline cut straight across peninsulas and
reported 11.7km for points 110m from the sea.
1. Look up the target's cell in a 0.1-degree grid index, plus its neighbours
2. Take the perpendicular distance to every coastline segment in those cells
3. Return the minimum
Deterministic and offline, ~0.1 ms per query.
fetchCoastDist() survives only as a thin async wrapper for call-site compatibility.
Foreign coastline (Swedish, German) is filtered out of the embedded set, validated on a 0.3° grid: from Danish land it is never the nearest coast. The 80m simplification is the only deliberate loss of precision, and it was measured against full-resolution geometry at eight reference points before being accepted.
The coast contribution is not a staircase. Three terms are computed independently, summed, and the total clamped to the range +8 (best) to −24 (worst). They are not alternatives to one another.
1. Surge exposure, attenuated by elevation
Storm-surge inundation is governed by elevation, not by distance: a house 200m from the sea at 30m
altitude cannot be reached by any Danish surge plus sea-level rise combination. The distance term is
therefore multiplied by coastAtten, which is 1 at or below 3m and falls linearly to 0 at
15m. The two inland bonuses are not attenuated. This replaced a 1.0/0.8/0.5/0.2/0 staircase whose 6m
and 10m steps could move the score by up to 4 points for a 0.1m elevation difference — inside the
DHM's own margin of error.
| Coast Distance | Adjustment | Condition |
|---|---|---|
| ≥ 20 km | +8 | Not attenuated — genuinely inland |
| ≥ 10 km | +3 | Not attenuated |
| ≥ 5 km | −3 × coastAtten | Within the surge propagation zone at low elevation |
| ≥ 2 km | −7 × coastAtten | High surge exposure at low elevation |
| < 2 km | −12 × coastAtten | Direct coastal flood risk at low elevation |
2. Cliff erosion, ramped in by elevation
Cliff exposure ramps in continuously with elevation rather than switching at a threshold, so a 0.1m
difference in measured height cannot move the score across a colour band. cliffFrac runs
from 0 to 1 between 2.5m and 7m on clay, and between 4m and 10m on anything
else. The penalty is cliffFull × cliffFrac within 500m of the shore, halved
between 0.5 and 1.5km, and zero beyond that. cliffFull is keyed on Kystdirektoratet's
measured chronic-erosion rate for the segment, not on a flat figure:
| KystAtlas class | Representative rate | cliffFull |
|---|---|---|
| Not published for this segment | — | 14 |
| Accreting | Gaining land | 10 |
| Lille | 0.05 m/yr | 11 |
| Moderat | 0.3 m/yr | 13 |
| Stort | 0.75 m/yr | 15 |
| Meget Stort (inner coast scale) | 1.0 m/yr | 16 |
| Meget Stort | 3.0 m/yr | 18 |
The unknown default of 14 is deliberately mid-range, not maximal. When “no data” scored worse than every measured class, a segment turning out to be low-erosion made the score jump upward the moment the erosion request landed, while the risk bar moved the other way. Arriving data can now move the number in either direction, which is what measurement should do.
3. Land loss on a low shore
Erosion is not a cliff-only hazard. A dune-backed house at 3m, 100m from a 3 m/yr West Jutland shore,
is losing ground today and the cliff term above scores it nothing, because cliffFrac is
still 0 there. So a separate term of up to −6 carries the low-shore case:
penalty = min(6, 2 x rate) x (1 - cliffFrac) x distFrac
distFrac = 1.0 within 200m | 0.6 to 500m | 0.25 to 1km | 0 beyond
(1 - cliffFrac) is the complement of the cliff weight, not a switch. The
two terms are non-zero together across roughly 2.5–7m on clay and 4–10m on sandy coast: they
form a convex partition whose weights sum to exactly 1, so no hazard is counted twice at full strength,
but they are not mutually exclusive. An earlier version of this page claimed they were; that was
wrong. The term is skipped entirely on accreting coasts, where the rate is unknown, and on KystAtlas
marsh segments, where the land is flatter than the nearshore slope and passive inundation
already exceeds shoreline retreat.
The projected-retreat figure shown in the app is an informational range, not a forecast for a specific property — Saferland knows the distance to the coastline, not your plot boundary. It assumes no coastal protection: Danish sand nourishment has cut realised west-coast retreat from about 2 m/yr to about 0.1 m/yr, so any projection implicitly assumes that spending continues. The sea-level-driven component is not yet observable in measured shoreline records; its direction is IPCC-backed but its magnitude at a single address is not resolvable. The retreat-per-metre-of-sea-level-rise ratios are a Saferland derivation from Kystdirektoratet active depths, not a published Danish figure.
Limitations
- The embedded coastline is a snapshot taken on 13 June 2026. It does not update, so shoreline changes from erosion or land reclamation since that date are invisible until the dataset is regenerated.
- Douglas-Peucker simplification at 80m smooths the finest coastal detail. Measured error against full-resolution geometry was at most 14m across eight reference points, but a very narrow inlet can be cut shorter than it is.
- Protection status is not modelled. A heavily nourished shore such as Thybøron is classified Lille because the sand is replaced each year — that reflects an ongoing spending commitment, not the underlying physics.
- The coast-type dataset cannot separate chalk from glacial till — Møns Klint and Lønstrup are both classed as soft cliff coast despite retreat rates that differ by roughly fifty-fold.
- Denmark-specific SLR (+10–15% above IPCC global) is documented but not yet added as an explicit correction to the elevation scoring. Glacial-isostatic land movement (Skagen is rising, the south-west is not) is likewise not yet applied.
- Measured retreat rates are published for only about a quarter of coastal segments; elsewhere the class-representative rate is used.
Overall Climate Score
What we measure
A single composite score from 5 to 95 that summarises the climate resilience of a location by combining all individual risk factors. Higher scores indicate greater resilience. The score is calibrated for Danish geography but applies to all supported countries.
How we calculate
The climateScore() function starts from a baseline of 72. Denmark’s
low-lying geography, high rainfall intensity, and extensive coastline mean that non-trivial climate risk
exists virtually everywhere, so the baseline is already well below the top of the scale.
Each factor applies its adjustment (detailed in the sections above), and the final sum is clamped to the range 5–95:
score = 72 // Denmark baseline
score += elevation // -38 .. +12
score += coast // -24 .. +8 surge + cliff + low-shore erosion,
// summed and clamped as ONE block
score += soil // -20 .. +3 peat -20 | clay -15, or the urban
// override: riskDelta x 0.6, +3 for a
// green surface, peat -12 | clay -8
score += waterway // -37 .. +2 risk-score band + elevation-gated
// floodplain + managed-tidal bonus
score += topography // -24 .. +7
score += compoundRain // -18 .. +3 how many rain-worsening conditions
// hold at once
score += soilDepressionSeverity // -8 .. 0 graded by depression depth x soil
score += groundwater // -12 .. 0 measured depth class + its
// interaction with low elevation
score = clamp(round(score), 5, 95)
Score bands
| Range | Label | Indicator |
|---|---|---|
| 75 – 95 | Good | Green |
| 62 – 74 | Acceptable | Green (60% opacity) |
| 48 – 61 | Moderate risk | Amber |
| 35 – 47 | Elevated risk | Amber (60% opacity) |
| 20 – 34 | High risk | Red (70% opacity) |
| 5 – 19 | Very high risk | Red |
Confidence: the score is the optimistic end of its own range
climateScore() skips the block for any input it did not receive, which is arithmetically
identical to “this hazard is absent”. A failed soil lookup and a clean sandy reading therefore
produce the same number. Measured against the live engine, a 12m/6km site with every optional source
failed renders a confident 66 — green, “Acceptable” — when the true value lies
anywhere in 5…73.
The asymmetry is decisive: missing data never makes the score worse, only better. So
the honest presentation is not a symmetric error bar but a downside bound.
scoreConfidence() produces it by re-running the same climateScore()
with each missing input pinned to the ends of its own published range — no second model and no
second set of weights, so the bound cannot drift away from the number it qualifies.
Relevance is derived, never hardcoded. A factor is only reported as missing if pinning it to its worst plausible value actually moves the score at this location; coastal erosion gates to zero beyond ~1km inland and groundwater only bites at low elevation, so for an inland property those inputs are permanently absent rather than failed, and they drop out of the denominator too. The strip is keyed on the span of the bound, not the number of gaps: one missing factor that swings the score 30 points matters more than three that swing it 3.
Climate scenario projections
Saferland carries five sea-level pathways in CLIMATE_PROJECTIONS, shown decade by decade in
the Regional Climate Guide. None of them feeds climateScore() — the
headline score describes the property as it is today. The pathways are narrative context, not a scored
projection. Values below are the Denmark-mean figures the app actually uses:
| Scenario | SSP Pathway | SLR by 2050 | SLR by 2100 | Source notes |
|---|---|---|---|---|
| Low emissions | SSP1-2.6 | 0.17 m | 0.50 m | IPCC AR6 WG1 Ch9 median, Denmark mean |
| Middle of the road | SSP2-4.5 | 0.22 m | 0.64 m | The pathway the Regional Climate Guide opens on |
| High emissions | SSP5-8.5 | 0.27 m | 0.85 m | IPCC AR6 WG1 Ch9 median, Denmark mean |
| Low-confidence high end | AR6 Box 9.4 | 0.40 m | 1.60 m | Ice-sheet processes of low confidence. Not part of the likely range |
| Tipping cascade | Beyond SSP5-8.5 | 0.45 m | 2.50 m | SSP5-8.5 plus early West Antarctic destabilisation and AMOC weakening beyond 50%. Anchored at 2050, 2070 and 2100; intermediate decades interpolated |
The SLR projections feed into buildClimateConsiderations(), which presents decade-by-decade
risk across ten domains (see Regional Climate Guide below). Storm surge is added
on top of SLR: 2.0m for sites <3km from coast, 1.5m for 3–8km, 1.0m beyond.
These surge values approximate the range between inner Danish waters (~1.5m) and North Sea coast (~4–5m),
weighted conservatively.
Limitations
- The score is an index, not a probability — it cannot predict whether a specific event will occur at a specific time.
- Factor weights are expert-calibrated using Danish climate data, not derived from statistical loss modelling or machine learning.
- Interactions are captured by three explicit terms — the compound rain count, the graded soil×depression severity top-up, and shallow groundwater × low elevation — not by a full multivariate simulation. Any interaction outside those three is not modelled.
- The 5–95 clamping means extreme combinations cannot produce a score of 0 or 100.
- Engineered defences (dykes, pumps, retention basins, flood gates) are not accounted for.
- Denmark-specific SLR (+10–15% above IPCC global) is noted in scenario descriptions but not applied as an explicit multiplier to score adjustments.
- The score reflects present-day and projected conditions but does not model planned or ongoing adaptation measures.
Regional Climate Guide
Saferland’s Regional Climate Guide goes beyond the physical risk score to present a broader picture
of how climate change may affect a Danish property and its surroundings across ten interconnected domains.
The panel is built by buildClimateConsiderations() and uses the property’s elevation,
coast distance, soil type, waterway proximity, topographic position, and urban surface classification
to tailor relevance ratings for each domain.
All projections are drawn from peer-reviewed literature and authoritative Danish/Nordic sources. Confidence levels follow IPCC terminology: high confidence (robust evidence, high agreement), medium confidence (limited evidence or mixed agreement), low confidence (incomplete evidence). Severity ratings per consequence use four levels: minor, moderate, severe, and critical.
1. Sea Level Rise
Denmark faces 0.5–1.6m of sea level rise by 2100 depending on emissions, with southern regions most vulnerable due to land subsidence. DMI projections exceed IPCC global means because they account for regional North Sea and Baltic dynamics.
| Decade | SSP1-2.6 | SSP2-4.5 | SSP5-8.5 | Low confidence |
|---|---|---|---|---|
| 2050 | +0.17 m | +0.22 m | +0.27 m | +0.40 m |
| 2060 | +0.24 m | +0.32 m | +0.40 m | +0.62 m |
| 2070 | +0.31 m | +0.42 m | +0.54 m | +0.88 m |
| 2080 | +0.38 m | +0.50 m | +0.65 m | +1.10 m |
| 2090 | +0.44 m | +0.57 m | +0.75 m | +1.35 m |
| 2100 | +0.50 m | +0.64 m | +0.85 m | +1.60 m |
Regional factors: Greenland ice melt reduces local sea level via gravitational fingerprinting (Denmark receives only 0.2–0.5 mm/yr per 1 mm/yr global from Greenland), but Antarctic melt produces above-average SLR in the Northern Hemisphere. Northern Denmark benefits from post-glacial uplift (1–2 mm/yr). South of the tilting line the land subsides by up to 0.4 mm/yr, with the maximum in south-west Jutland and the Wadden Sea; Copenhagen and Aarhus are both still rising.
Impact thresholds: At +0.5m, storm surges reach ~50% more properties and 18,100 ha face permanent flooding. At +1.0m, 72,700 ha flooded and ~2% of Danish homes at direct risk. At +1.5m+, Lolland-Falster, Amager, and western Jutland require major defences or managed retreat. Coastal wetland loss: 14.3% by 2070, 44.7% by 2120.
2. AMOC (Atlantic Meridional Overturning Circulation)
The AMOC — the ocean conveyor bringing warmth to northwestern Europe — has been weakening over the past century. Denmark sits directly in the AMOC impact zone, making this the highest-consequence risk factor for the region.
| Study | Finding | Source |
|---|---|---|
| Ditlevsen & Ditlevsen (2023) | Collapse projected 2025–2095, central ~2057 | Nature Communications |
| Boers (2021) | Early-warning signals in 8 AMOC indices | Nature Climate Change |
| Baker et al. (2025) | AMOC resilient across 34 CMIP6 models | Nature |
| Nordic Council (2026) | 70% collapse probability (high emissions) | TemaNord 2026:504 |
If weakened (20–30% by 2050): Modest cooling partially offsetting global warming; slightly more severe winters; minor agricultural adjustment.
If collapsed: 5–10°C winter cooling in Denmark within decades; sea ice extending to the Kattegat and Baltic; growing seasons contract dramatically; current crop varieties (wheat, barley, rapeseed) become unviable; Denmark’s winter climate comparable to interior Alaska/northern Canada. Energy demand for heating would surge. This would occur against a backdrop of continued global warming, creating a stark regional anomaly.
3. Extreme Weather & Precipitation
Denmark faces a triple threat: rain from above, sea from the coast, and groundwater from below — all intensifying. Temperature has risen 1.8°C over 50 years (~0.5°C per decade, faster than global average).
| Metric | Projected change | Source |
|---|---|---|
| Annual precipitation | +8% by 2041–2070 | DMI Klimaatlas |
| Cloudburst frequency | +31% | DMI/SVK |
| Days >20mm rain (winter) | +40% | DMI Klimaatlas |
| Extreme hourly intensity | +15–30% | SVK climate factors |
| West coast storm surge | +0.2–0.5m by 2100 | Copernicus |
Compound events are the critical concern: simultaneous SLR + storm surge + river flooding + heavy rainfall. These are poorly modelled individually but devastating in combination. Economic damage without adaptation: DKK 72 billion over 10 years, DKK 262 billion over 50 years (DTU/CIP 2024).
Groundwater rise: ~440,000 year-round Danish homes threatened by combined water hazards (CONCITO). Not covered by standard insurance; government only recently addressing it (November 2024 proposal).
4. Food Security & Agriculture
Denmark is a major agricultural nation (~61% farmland). Under moderate warming (1.5–2°C global), Danish agriculture benefits: longer growing seasons (+18 days over 50 years already), CO2 fertilisation boosting C3 crops +5–18%, and new varieties becoming viable (maize, sunflower, wine grapes).
Under higher warming (3–4°C), effects turn mixed-to-negative: heat stress during critical growth, new pests migrating north, extreme precipitation disrupting planting/harvest, and summer soil moisture deficits. Under AMOC collapse, Danish agriculture faces existential crisis — growing season contracts dramatically and current crops become unviable.
Denmark imports ~25% of food calories. Global breadbasket failures (simultaneous droughts in multiple grain regions) directly affect Danish food prices. The 2022 wheat price spike (+50–100%) after Russia-Ukraine previewed this pathway.
Olesen et al. (2011); Aarhus University (2024); Nordic Council (2026); ClimateChangePost5. Insurance & Property Markets
Denmark operates a unique solidarity-based scheme (Naturskadeordningen) funded by DKK 30/year from every fire-insured individual, governed by Naturskaderadet. Coverage triggers when water level exceeds a 20-year return period, covering direct damage to buildings and contents.
Properties at risk projected to nearly double from current 0.9–1.2% to ~2% by 2071. Coastal property premium erosion beginning in highest-risk areas. No systematic climate risk disclosure requirement exists in Danish property transactions (as of 2025). Globally, climate-driven uninsurability is accelerating (California, Queensland, Florida).
By 2100: The insurance scheme likely needs fundamental restructuring. Some areas may become effectively uninsurable under high-emission scenarios. Significant property value redistribution expected from coastal/low-lying to inland/elevated locations.
Naturskaderadet; WTW (2023); EIOPA/ECB (2024); ClimateChangePost6. Government & Infrastructure Resilience
Denmark ranks #1 on the Climate Change Performance Index (2025) with very strong institutional capacity, low corruption, and consistent multi-party consensus. Key initiatives:
| Initiative | Budget / Status |
|---|---|
| Climate Adaptation Plan 1 | DKK 1.3 bn for coastal/urban protection |
| West coast programme | EUR 204m/year for 110 km beach nourishment |
| Lynetteholmen (Copenhagen) | ~EUR 2.7 bn; storm surge protection to 3.6m |
| Holmene (Hvidovre) | ~EUR 425m; 9 islets built 5.5m above sea level |
| Municipal adaptation plans | All 98 municipalities; quality uneven |
Implementation gap: Plans exist but execution lags. Only 25% of municipal plans mention nature-based solutions. Denmark has far less coastal defence heritage than the Netherlands. About 30% of Denmark’s area is vulnerable to flooding from storm surges, cloudbursts, and rising groundwater. Critical infrastructure at risk includes low-lying rail corridors (Storebælt/Øresund links), hospitals, substations, and combined sewer systems.
7. Climate Tipping Points
Armstrong McKay et al. (2022) identified nine global core tipping elements plus seven regional ones. Five are already above their minimum threshold at current ~1.1°C warming: Greenland Ice Sheet, West Antarctic Ice Sheet, tropical coral reefs, Labrador-Irminger Sea convection, and abrupt permafrost thaw.
| Tipping element | Threshold | Timescale | Denmark relevance |
|---|---|---|---|
| AMOC collapse | 1.4–8.0°C | Decades | Critical |
| Greenland Ice Sheet | 0.8–3.0°C | Centuries–millennia | High (SLR) |
| West Antarctic Ice Sheet | 1.0–3.0°C | Centuries–millennia | High (SLR) |
| Boreal forest shift | 1.4–5.0°C | Decades–century | Medium |
| Permafrost (abrupt thaw) | 1.0–2.3°C | Decades | Medium (indirect) |
| Barents Sea ice | 1.5–1.7°C | Decades | Medium |
Tipping cascades: The critical concern is not individual tipping points but cascading interactions. Greenland melt → freshwater → AMOC weakening → further melt (positive feedback). Permafrost thaw → methane/CO2 → warming → more thaw (carbon feedback). A 2025 study found that under current policies, Amazon dieback and permafrost thaw “modestly amplify” the probability of triggering other tipping points. By 2100, 3–6 elements likely committed under SSP2-4.5.
8. Health & Livability
Denmark avoids the worst heat impacts but faces genuine and growing risks:
- Heat stress: Aging population (25% over 65 by 2050) increases vulnerability. Limited residential air conditioning. Urban heat island effect in Copenhagen. Under SSP5-8.5, regular 35°C+ events by 2100.
- Tick-borne disease: TBE cases with presumed Danish infection rising (17 in 2024, up from 13 in 2023). Geographic spread from Bornholm to North Zealand and first Jutland case. Lyme disease incidence increasing with tick range expansion.
- Air quality: Wildfire smoke transport from southern Europe intensifying. 2025 summer: highest fire emissions in 23 years of GFAS data in Greece/Turkey/Iberia. Ozone formation increases with temperature.
- Mental health: Climate anxiety growing, especially among young people. Flooding events cause PTSD, anxiety, depression. Property value uncertainty creates financial stress.
9. War & Geopolitical Risk
Climate change acts as a “threat multiplier” that amplifies geopolitical instability. Denmark’s position as an Arctic nation (via Greenland), NATO member, EU state, and small open economy creates distinctive indirect climate-security risks.
Arctic geopolitics: Denmark committed DKK 42 billion to Arctic defence (2025–2026), exceeding 3% of GDP. The Northern Sea Route is projected navigable 3–6 months/year by 2050 and potentially year-round by 2100, making the Arctic a primary theatre of great-power competition. Greenland holds 25 of 34 EU critical minerals and ~$186 billion in extractable resources.
Climate migration: World Bank projects 216 million internal climate migrants by 2050. Climate → conflict → displacement pathways are significant (Abel et al. 2019). Under SSP5-8.5 by 2100, potentially 500M–1B+ people in uninhabitable zones globally.
Nuclear risk: Climate-amplified tensions (India-Pakistan water disputes, Arctic competition) increase nuclear conflict probability. Xia et al. (2022, Nature Food) estimate a regional nuclear exchange could cause global famine affecting over 2 billion people. A regional exchange could cool Earth 2–5°C for a decade.
Infrastructure security: Baltic undersea cables cut in 2024. Denmark’s energy grid, data infrastructure, and supply chains face increasing hybrid/cyber threats in a more unstable world.
NATO (2024); World Bank (2021); Abel et al. (2019); Xia et al. (2022); CSIS (2025); Wilson Center (2025)10. Cost of Living
Climate change affects Danish household finances through at least ten channels. The aggregate additional cost is projected to grow from ~DKK 5,000–15,000/year per household in the 2030s to DKK 25,000–80,000+/year by 2100 under moderate-to-high emission scenarios. Low-lying, coastal, and clay-soil properties face significantly higher costs — directly reinforcing Saferland’s scoring logic.
| Cost channel | Key driver | By 2050 | By 2100 |
|---|---|---|---|
| Energy | AMOC heating / cooling demand / volatility | +DKK 0–5k | +DKK 2–40k |
| Food | Global crop failures, import prices | +DKK 5–12k | +DKK 3–25k |
| Water & sewage | Infrastructure upgrades, climate levies | +DKK 1–3k | +DKK 3–8k |
| Property tax | Municipal adaptation levies | +DKK 2–5k | +DKK 5–15k |
| Insurance | Scheme restructuring, risk pricing | +DKK 1–3k | +DKK 5–20k |
| Construction | Climate building codes, flood-proofing | +DKK 2–5k | +DKK 3–10k |
| Healthcare | Heat/vector/mental health burden | +DKK 0–2k | +DKK 1–5k |
| Adaptation | Personal flood protection, drainage | +DKK 2–8k | +DKK 5–15k |
Food prices have already risen 32% since 2021 (twice general CPI). The 2022 energy crisis (electricity spot prices hitting DKK 7–8/kWh, 3× baseline) previewed what climate-driven supply disruptions look like. Under AMOC collapse, heating demand could double, creating an energy cost crisis of DKK 15,000–30,000+/year per household.
Location-dependent relevance
The Regional Climate Guide adjusts relevance ratings based on the analysed property’s characteristics:
| Domain | Higher relevance when… |
|---|---|
| Sea Level Rise | Low elevation (<5m) or close to coast (<5km) |
| AMOC | Universally high for all Danish locations |
| Extreme Weather | Low elevation, clay soil, or topographic depression |
| Food Security | Universally moderate; slightly higher in rural areas |
| Insurance | Low elevation, coastal, or flood-prone locations |
| Government Response | Universally moderate |
| Tipping Points | Universally high (all Denmark in AMOC zone) |
| Health | Urban areas (heat island), low elevation (flooding stress) |
| War & Conflict | Near critical infrastructure (ports, military, cables) |
| Cost of Living | Low elevation, coastal, clay soil (higher adaptation costs) |
Key References
Danish standards & authorities
- Spildevandskomiteen (SVK) Skrift 27 (2005): Funktionspraksis for afløbssystemer under regn. The authoritative Danish sewer design standard; defines return-period requirements and rational method φ-coefficients.
- SVK Skrift 29 (2008): Forventede ændringer i ekstremregn som følge af klimaudviklinger. Expected change in extreme rainfall.
- SVK Skrift 30 (2014): the Spildevandskomiteen klimafaktor document — climate factors and design rainfall intensities. The klimafaktor is indexed by return period: 1.2 at T=2, 1.3 at T=10, 1.4 at T=100.
- SVK Skrift 32 (2023): the most recent publication in the Skrift series.
- DMI Report 21-28: Historical extreme high water levels along the coastline of Denmark. 100-year return-period surge heights. (This page previously cited “DMI 15-01, Ditlevsen et al. 2018, Extreme sea levels”, which does not exist: DMI 15-01 is Cappelen (2015), Danmarks klima 2014.)
- DMI Report 25-18 (2025): Fremtidens havniveaustigning i Danmark. Denmark-specific sea-level projections.
- Kystdirektoratet: Kystanalyse (2016), Erosionsatlas, Kystatlas and Kystplanlægger. Coastal erosion monitoring and nourishment data. (There is no annual “Kysternes tilstand” publication; earlier editions of this page cited one.)
- GEUS: Jordartskort 1:25,000 (v7.1, January 2026). National geological surface map of Denmark; boundary accuracy ±10–30m.
- Styrelsen for Dataforsyning og Infrastruktur: Danmarks Højdemodel (DHM). National 0.4m LiDAR DEM and derived flood products.
- Geodatastyrelsen: DVR90 (Dansk Vertikal Reference 1990). National vertical datum definition.
IPCC & international
- IPCC AR6 WG1 Chapter 9 (Fox-Kemper et al., 2021): Ocean, cryosphere and sea level change. Global and regional SLR projections.
- Garbe, J. et al. (2020): The hysteresis of the Antarctic Ice Sheet. Nature 585, 538–544. doi:10.1038/s41586-020-2727-5. Hysteresis of the Antarctic Ice Sheet as a whole — not a West Antarctic-only threshold, as earlier editions of this page stated.
- Bamber et al. (2019): Ice sheet contributions to future sea-level rise from structured expert judgment. PNAS 116(23), 11195–11200.
- Hansen, J. et al. (2023): Global warming in the pipeline. Oxford Open Climate Change, 3(1), kgad008. High-end SLR and climate sensitivity arguments.
- Morlighem, M. et al. (2024): The West Antarctic Ice Sheet may not be vulnerable to marine ice cliff instability during the 21st century. Science Advances, 10(34). (Crawford is the sixth author, not the first.)
AMOC
- Ditlevsen, P. & Ditlevsen, S. (2023): Warning of a forthcoming collapse of the Atlantic meridional overturning circulation. Nature Communications, 14, 4254.
- Boers, N. (2021): Observation-based early-warning signals for a collapse of the AMOC. Nature Climate Change, 11, 680–688.
- Baker, J.A. et al. (2025): Continued Atlantic overturning circulation even under climate extremes. Nature, 638, 987–994. (Weijer is a co-author, not the first author.)
- Nordic Council of Ministers (2026): A Nordic Perspective on AMOC Tipping. TemaNord 2026:504.
Tipping points & cascades
- Armstrong McKay, D.I. et al. (2022): Exceeding 1.5°C global warming could trigger multiple climate tipping points. Science, 377, 1171–1175.
- Lenton, T.M. et al. (2019): Climate tipping points — too risky to bet against. Nature, 575, 592–595.
- Deutloff, J. et al. (2025): High probability of triggering climate tipping points under current policies modestly amplified by Amazon dieback and permafrost thaw. Earth System Dynamics, 16, 565–583. (Wunderling is a co-author, not the first author.)
Agriculture & food security
- Olesen, J.E. et al. (2011): Impacts and adaptation of European crop production systems to climate change. European Journal of Agronomy, 34(2), 96–112.
- Aarhus University (2024): How Danish agriculture can adapt to future climate change.
- Climate Central (2024): Climate Change and Food Prices.
- IFRO/University of Copenhagen (2024): Food security in Denmark: A data-driven assessment.
Insurance & property
- Naturskaderadet: Storm surge and flooding compensation procedures. danishnaturalhazardscouncil.dk.
- WTW (2023): The storm surge has uncovered major gaps in insurance coverage. Insights paper.
- EIOPA/ECB (2024): Proposals for EU-level natural catastrophe insurance scheme.
- Nature Climate Change (2026): Prospects and challenges of risk-based insurance pricing for disaster adaptation.
Government & adaptation
- Klimatilpasning.dk: National Adaptation Strategy and Plan documentation.
- State of Green (2024): Danish Government presents plan to ramp up climate adaptation.
- Clean Energy Wire (2025): Denmark keeps on dithering over climate adaptation plans.
- CCPI (2025): Climate Change Performance Index country ranking.
- Copenhagen Post (2026): Government to spend 15 billion DKK on coastal protection to prevent flooding.
Health & livability
- SSI Denmark (2024): TBE Report 2024. Statens Serum Institut.
- Copernicus (2025): Air Quality Challenges in 2025: Europe’s Summer of Smoke, Dust and Ozone.
- EEA (2024): Denmark — air pollution country fact sheet 2024.
- Bjerager, M. et al. (2024): Impacts of Sea Level Rise on Danish Coastal Wetlands. Environmental Management.
Geopolitics & conflict
- NATO (2024): Climate Change and Security Impact Assessment 2024.
- World Bank (2021): Groundswell Part 2: Acting on Internal Climate Migration.
- Abel, G. et al. (2019): Climate, conflict and forced migration. Global Environmental Change, 54, 239–249.
- Xia, L. et al. (2022): Global food insecurity and famine from reduced crop, marine fishery and livestock production due to climate disruption from nuclear war soot injection. Nature Food, 3, 586–596.
- CSIS (2025): Greenland, Rare Earths, and Arctic Security.
- Wilson Center (2025): Risky Game: Hybrid Attack on Baltic Undersea Cables.
- IMF (2024): Climate Variability and Worldwide Migration. Working Paper 2024/058.
Economics & cost of living
- Danmarks Nationalbank (2023): Denmark risks a period of energy price fluctuations.
- Danmarks Nationalbank (2025): Global factors are driving high food prices in Denmark and abroad.
- Danmarks Nationalbank (2025): Global temperatures and inflation: More volatile, less homogeneous inflation pressures across countries.
- ECB (2022): Schnabel, I. A new age of energy inflation: climateflation, fossilflation and greenflation.
- EESC (2023): The cost of climate change on households and families in the EU.
- Housing Denmark (2024): Switching to Heat Pumps.
- CONCITO: Combined water hazards assessment for Danish properties.
Hydrology & geotechnics
- Fredericia, J. (1990): Saturated hydraulic conductivity of clayey tills and the role of fractures. Nordic Hydrology, 21(2), 119–132. Key paper on Danish moræneler field-scale K values.
- Merz et al. (2010): Assessment of economic flood damage. Natural Hazards and Earth System Sciences, 10, 1697–1724. Flood damage–distance relationships.
- Vestol et al. (2019): NKG2016LU: a new land uplift model for Fennoscandia and the Baltic region. Journal of Geodesy, 93, 1759–1779.
- Greve et al. (2014): Estimating peat soil loss in Denmark over the past 30 years. Aarhus University / GEUS.
- Weiss, A. (2001): Topographic Position and Landforms Analysis. ESRI User Conference poster. Foundational TPI methodology.
- Luetzenburg, G. et al. (2023): Drivers of Coastal Cliff Erosion in Denmark. Coastal Sediments 2023. doi:10.1142/9789811275135_0118. Measured Danish cliff retreat rates.
- Balstrøm, T. & Crawford, D. (2018): Arc-Malstrøm: a 1D hydrologic screening method for stormwater assessments based on geometric networks. Computers & Geosciences. Bluespot fill depths used to calibrate the depression index.
Data APIs
- Open-Meteo: Free elevation API using Copernicus DEM / SRTM blend. ~30m horizontal resolution.
- OpenStreetMap / Overpass API: Crowdsourced geospatial data for coastline, waterways, and land use.
- AWS Terrarium Tiles: RGB-encoded elevation tiles derived from SRTM/ASTER. Open data.
- GEUS WMS: Geological Survey of Denmark — soil type map via OGC WMS GetMap/GetFeatureInfo.
- Dataforsyningen: Danish government geospatial data portal — DHM flood zones, hillshade, contours via OGC WMS.
👥 Social Score
What we measure
The Social Score summarises how a Danish municipality performs on safety, education, local economy, public services, and civic engagement. It sits alongside the Climate Score and answers a different question: not will this place flood, but what is daily life like here? The score is percentile-based against all 98 Danish municipalities using the latest data published by Danmarks Statistik (Statistikbanken).
Factors and weights
Ten factors across four domains are combined into a single score from 5 to 95. Weights reflect how strongly each factor has been found to shape neighbourhood wellbeing in Danish research, balanced against how directly each can be observed in open public data.
How we calculate
Each factor value is converted into a percentile rank against the full 98-commune Denmark distribution for that factor, then mapped linearly to a sub-score in the range
[25…85]. This compressed range reflects that even the worst-scoring Danish municipality is still a reasonably safe country by international standards — the score should not crater on a single weak factor. The final Social Score is a weighted average of the available sub-scores, clamped to[5…95]:If a factor is missing for a commune (e.g. BOERN8 has small-commune reporting gaps), the weighted average is computed over the remaining factors and the missing row shows “Not reported” rather than a zero. At least four factors must resolve or the cache entry is dropped so that a transient API failure is not preserved for a week.
Economic cluster (Phase 2)
Poverty rate (LABY07), disposable income (INDKP106) and employment rate (RAS200) together form a 24% “local prosperity” cluster. They are deliberately redundant: poverty captures the floor of the income distribution, median income describes the typical household, and employment rate describes labour-market health. A commune can look good on one and poor on another (e.g. student-heavy Aarhus has low poverty and lower employment than its neighbours), and the combined signal is what the score rewards.
Daycare staff ratio
BOERN8 publishes the average number of children per pedagogical staff member in kommune-operated daycare. Lower values indicate more individual attention per child. We use the 0–2-year-old institution bracket (PASKAT=2) for scoring because it has both the widest between-commune variation and the largest quality-of-life impact for families. BOERN8 only covers kommune-operated daycare, so communes with a significant private sector (e.g. Frederiksberg) may show a ratio that does not reflect the full local market — this is noted in the panel.
Limitations