About Solspejder
Solspejder shows whether a spot is in sun or shade right now, when that changes, whether it is sheltered from the wind, and today's UV, for any point in Denmark. This page explains exactly how the numbers are produced, which data they build on, and where the uncertainties lie.
What can Solspejder do?
You click the map or search for an address or a place name, and Solspejder assesses that exact point:
- Sun or shade right now, and when the next change happens.
- The day's sun window: a timeline showing when the point has sun, from sunrise to sunset.
- Shelter: whether buildings screen the point from the current wind.
- UV and temperature for the selected time.
- Ahead in time: drag the timeline and pick a date. Sun and shade can be calculated for any date; weather, wind and UV are available 7 days ahead.
Everything works across Denmark, on both mobile and computer, in Danish and English, free and without a login. You can share a link to a specific point and time, and shortcuts give quick access to 15 of the country's largest cities.
Who's behind it
We're Rasmus and Victoria.
It started as a bet with ourselves: could we finish our master's thesis from Siargao in the Philippines instead of from a reading room back home? We could. Away from the everyday noise, the deep focus actually showed up, and we proved to ourselves that you don't have to choose between a career and an adventure.
That trip grew into Core Nomadic, where we write honest, practical guides to working, studying or writing a thesis abroad for a longer stay. Victoria handles the research and the writing, Rasmus the technical side, and everything in between we do together.
Solspejder came later. Once you've got used to sun every day, you really notice how much the Danish hours of sunshine matter. We wanted something that could simply tell us whether there was sun exactly where we were thinking of sitting down. It didn't exist, so we built it.
Found a mistake, or missing something? Write to us at [email protected].
How sun and shade are calculated
1. The sun's position
The sun's altitude above the horizon and its compass direction are calculated astronomically for the chosen place and time with the open source library SunCalc. When the altitude is below 0 degrees, the sun is below the horizon and the point is shown as night.
2. The length of the shadow
Every building casts a shadow in the direction opposite the sun. The length of the shadow along the ground follows the classic formula:
shadow length = height ÷ tan(sun altitude)A 15 metre tall building therefore casts roughly 15 metres of shadow when the sun stands 45 degrees above the horizon, and more than 50 metres when the sun drops to around 16 degrees. In the calculation the shadow length is capped at 500 metres per building.
3. Is the point in shade?
The building's footprint from OpenStreetMap is split into triangles, and each triangle is swept along the shadow direction. If your point falls inside one of the swept shapes, the point is in shade. The method respects the actual shape of buildings, so an L-shaped building does not cast shade into its own courtyard.
For fully enclosed courtyards, where the building forms a continuous ring all the way around (such as a classic city block), a dedicated courtyard model is used instead: if your point is inside the courtyard, sun and shade are decided by the distance to the wall facing the sun, not by the building's full outer footprint.
4. The day's sun window
The same test is repeated in steps of 5 minutes from sunrise to sunset. That produces the timeline in the panel and an interval such as "sun 06:15 to 18:42" for the continuous sun window the point is currently in.
Building heights
In the covered city areas the height is measured, not guessed. We derive it from Denmark's national elevation model: the difference between the surface model (a laser scan of roofs and trees) and the terrain model (the ground), sampled inside each building footprint. We use the median, so chimneys and aerials don't inflate the height.
Where we have no measurement, the calculation falls back to the old order:
- The building's
heighttag in OpenStreetMap, if present. - Otherwise the number of floors times 3.1 metres.
- Otherwise a guess based on the building type: 15 metres for apartment and commercial buildings, 6 metres for houses and outbuildings, and 12 metres when the type is unknown.
The measurements currently cover the centres of Copenhagen, Aarhus, Odense and Aalborg. Outside those the guess is used, and it remains the largest source of uncertainty. The elevation model is also a snapshot: buildings put up after the laser scan are missing, so those are guessed too.
How shelter is calculated
The wind's direction and speed at 10 metres height come from Open-Meteo. Solspejder then looks at buildings within 160 metres in a sector of ±12 degrees around the direction the wind comes from, seen from an eye height of 1.5 metres (plus the selected floor). The largest angle a building spans in the sky in that direction decides the assessment:
| Condition | Assessment |
|---|---|
| Wind below 2 m/s | Sheltered (near calm) |
| Building spans 14 degrees or more | Sheltered |
| Building spans 6 to 14 degrees | Some shelter |
| Less than 6 degrees | Exposed |
The shelter assessment is a geometric approximation. It does not model turbulence, wind between buildings or local wind conditions.
Data sources
| Data | Source |
|---|---|
| The sun's position | SunCalc (astronomical calculation in the browser) |
| Building footprints | OpenStreetMap via the Overpass API |
| Measured building heights | Denmark's national elevation model (Dataforsyningen): surface minus terrain |
| Weather, wind and UV | Open-Meteo (hourly values, 7 days ahead) |
| The map | OpenFreeMap map tiles (OpenStreetMap data) shown with MapLibre GL |
| Address search and lookup | DAWA (Denmark's official address web API) |
| Place name search | Photon (OpenStreetMap names) |
| Approximate location on open | The browser's location (only with your permission), otherwise a rough IP lookup to pick the nearest city |
Fetched buildings are stored temporarily in your own browser, so repeated lookups in the same neighbourhood are fast. There is no account, no tracking cookies and no backend; all calculations happen in the browser.
Uncertainties and limitations
- Heights outside the measured areas: In the centres of Copenhagen, Aarhus, Odense and Aalborg the heights are measured from Denmark's national elevation model. Elsewhere most OpenStreetMap buildings lack a height, so type-based guesses are used and shadows can be too short or too long.
- Buildings only: Trees, hedges, parasols, fences, bridges and vehicles do not cast shadows in the model.
- Flat terrain: Hills and slopes are not taken into account. In hilly terrain the result can differ noticeably.
- OpenStreetMap errors: If a building is missing from OSM, or its footprint is inaccurate, the assessment becomes correspondingly inaccurate.
- Building horizon: Buildings are fetched within roughly 500 metres of the point. At very low sun, even longer shadows from distant, tall buildings can therefore be missed.
- The map's shadow drawing is simplified: The shadows drawn on the map itself use a faster, coarser method than the actual sun/shade assessment and are only indicative graphics.
- The weather is a forecast: Wind, UV and temperature come from a weather model and are available only 7 days ahead. The sun/shade geometry does not account for cloud cover; "in sun" means the sun is not blocked by buildings, not that the sky is clear.
- Minute precision: Sunrise, sunset and change times can differ by a few minutes from other sources; different sun calculations use slightly different models for atmospheric refraction. The sun window is also computed in steps of 5 minutes.
- Time zone: Times are shown in Danish time (Europe/Copenhagen).
Disclaimer
Solspejder is an indicative service. All assessments of sun, shade, shelter and UV are automatic calculations on publicly available data and can differ from the actual conditions. The service is provided as is, without any warranty of accuracy, availability or fitness for a particular purpose. Do not use Solspejder as the sole basis for decisions about, for example, health, sun protection, construction or property purchases. Always verify the conditions on site.
Found an error?
If a building is missing, or a shadow looks wrong, it is often down to data in OpenStreetMap. You can correct and add buildings yourself at openstreetmap.org; corrections flow through to Solspejder automatically after a while.
Have a quick question? See the frequently asked questions.
Anything else wrong, or an idea for the site? Write to us at [email protected].