The Survey Plane Already Flew — Timestamping with Open Aerial Archives

National aerial survey programmes photograph entire countries on a fixed cadence and publish the frames as open data — in Denmark's case with capture timestamps accurate to the second. When and how to use Skråfoto, PDOK, and Norge i bilder to date a scene instead of guessing.

Several European countries photograph their entire territory from survey aircraft every one to two years and publish the result as open data. The imagery is sharper than anything you’ll get from satellite tiles — around 10 cm per pixel — and it comes with metadata Google will never give you: the exact capture date, in the best case the exact second.

That turns these archives into two different tools. As a map, they’re a better base layer for feature matching than aged satellite imagery. As a clock, they can date anything visible in a frame — a parked vehicle, a construction stage, a moving aircraft — to the survey pass. If your scene is in a covered country, check the archive before you reverse-engineer a date from shadows.

The archives

Denmark — Skråfoto (Klimadatastyrelsen). The strongest of the set. Five camera directions per pass — nadir plus obliques facing north, south, east, west — roughly every two years since 2017, with a per-frame capture timestamp to the second. Behind the viewer sits a STAC API; the token is published in the viewer’s own /config.js and is public by design. Querying every frame covering one coordinate is a single request:

T=<token from config.js>
curl -s "https://api.dataforsyningen.dk/rest/skraafoto_api/v1.0/search?token=$T" \
  -H 'Content-Type: application/json' -d '{
    "collections":["skraafotos2017","skraafotos2019","skraafotos2021",
                   "skraafotos2023","skraafotos2025"],
    "intersects":{"type":"Point","coordinates":[<lon>,<lat>]},
    "limit":500}' \
| jq -r '.features[] | "\(.properties.datetime) \(.properties.direction) \(.id)"' | sort

Each item links a Cloud-Optimised GeoTIFF, so you can window one corner of a 20544 × 14016 px frame over HTTP with /vsicurl/ instead of downloading it. Licence is CC BY — credit Klimadatastyrelsen when you republish.

Netherlands — PDOK (Beeldmateriaal). Nationwide orthophotos, updated yearly at 7.5–25 cm, CC BY. Dates resolve to the flight campaign rather than the second, but a yearly cadence at that resolution still brackets construction, demolition, and vegetation changes tightly.

Norway — Norge i bilder (Kartverket). Orthophoto projects with per-project capture dates, often multiple projects per region per decade. Date granularity is the acquisition period, not the frame — good enough to answer “was this building there in 2019”.

Sweden and Finland run comparable national programmes (Lantmäteriet, Maanmittauslaitos) with more friction — some products need registration. Worth knowing they exist; not worth learning until a case lands there.

The workflow

Geolocate first, then query. The archives index by coordinate, so the where has to come before the when. One point on your scene is enough.

Enumerate everything over that point. Don’t browse the viewer year by year — pull the full frame list from the API and read it as a timeline. Ten survey passes over one runway is a hundred-line table, not an afternoon of clicking.

Search every camera direction. The lesson that cost me the most time on the Billund case: I filtered for nadir frames because “aerial survey” meant “straight down” in my head, found nothing, and started doubting the challenge. The frame I needed was a north-facing oblique. Obliques also see façades, signage, and vehicles that nadir geometry hides.

Respect the viewing geometry when you measure. In a 45° oblique, the ground is foreshortened but an object hundreds of metres above it is not foreshortened by the same factor — an aircraft can appear 1.5× oversized against the terrain scale. Measure on the ground plane, or convert first. An anomalous measurement is a clue about the imaging geometry before it’s a clue about tampering.

Cross-check the clock against the sun. A to-the-second timestamp is falsifiable for free: compute the solar position for that instant on SunCalc and compare it against shadow directions in the frame. If they disagree, you’ve misread the metadata — or the frame.

Worked examples

The rule of thumb: in the Nordics and the Netherlands, assume a timestamped photograph of your scene already exists. The question is not whether someone imaged it — it’s which pass, which direction, and what was standing in frame when the shutter fired.

Sources

  • Skråfoto viewer — Klimadatastyrelsen’s oblique imagery archive; STAC API at api.dataforsyningen.dk/rest/skraafoto_api/v1.0
  • Dataforsyningen documentation — Skråfoto STAC endpoint reference
  • PDOK — Dutch national geodata platform, yearly aerial imagery
  • Norge i bilder — Norwegian orthophoto archive
  • SunCalc — solar position for shadow cross-checks