Power Density and Land Use Explained

On this page

Problem statement

After the exclusions, a region has some hundreds of square kilometres left, and the next question is how much generation that land can hold. The answer needs a power density — megawatts or, better, average watts per square metre — and the published figures for it vary by a factor of ten because they measure different things: the module area, the fenced plant, the whole wind farm between the outermost turbines, or only the concrete pads and access roads.

A siting study has to pick one definition, say which, and use a number measured under that definition. Mapped plants are the best source, because their outlines and their capacities are both on record.

Quick answer

Three quantities describe land use, and they should not be mixed:

  • Capacity density — MW per km² of the chosen area.
  • Power density — average W per m²: capacity density × capacity factor.
  • Energy density — GWh per km² per year: power density × 8.76.

For solar, measure capacity density from real plant outlines:

import re, osmnx as ox

ox.settings.http_user_agent = "spatialworkflow-examples/1.0"
ox.settings.overpass_url = "https://maps.mail.ru/osm/tools/overpass/api"   # overpass-api.de mirror
ox.settings.overpass_rate_limit = False
ox.settings.max_query_area_size = 5e11        # one query; the default splits this box into ~50

# osmnx combines the keys in a tags dict with OR, not AND:
# ask for power=plant and filter on the source afterwards.
plants = ox.features_from_bbox((-6.0, 38.0, -1.5, 41.0), {"power": "plant"})
plants = plants[plants.geom_type.isin(["Polygon", "MultiPolygon"])]
print(plants["plant:source"].value_counts().head(5).to_string())

pv = plants[(plants["plant:source"] == "solar")
            & (plants.get("plant:method") != "thermal")].copy()

def megawatts(tag):
    if not isinstance(tag, str):
        return None
    m = re.match(r"^\s*([\d.]+)\s*(kW|MW|MWp|GW)\s*$", tag)
    if not m:
        return None                                   # "yes", ranges, typos
    return float(m.group(1)) * {"kW": 1e-3, "MW": 1, "MWp": 1, "GW": 1e3}[m.group(2)]

pv["mw"] = pv["plant:output:electricity"].map(megawatts)
pv["km2"] = pv.to_crs("EPSG:25830").area / 1e6
known = pv[pv.mw >= 1]
density = known.mw / known.km2
print(f"\n{len(pv)} PV plants mapped, {len(known)} with a usable capacity tag")
print(f"MW per km² of plant outline: median {density.median():.0f}, "
      f"interquartile {density.quantile(0.25):.0f}–{density.quantile(0.75):.0f}")
print(f"pooled: {known.mw.sum():,.0f} MW on {known.km2.sum():,.0f} km² "
      f"= {known.mw.sum() / known.km2.sum():.0f} MW/km²")
print(f"highest: {density.max():.0f} MW/km²")
plant:source
solar      741
hydro       61
gas         24
wind        21
battery      9

725 PV plants mapped, 140 with a usable capacity tag
MW per km² of plant outline: median 51, interquartile 39–61
pooled: 7,561 MW on 146 km² = 52 MW/km²
highest: 378 MW/km²

Only 140 of the 725 mapped PV plants have a usable capacity tag; most carry plant:output:electricity=yes — a tag that says the plant produces electricity and not how much. The median, 51 MW/km², rests on that fifth.

Fix the area definition, then measure real plants

1. Fix the area definition first

For solar, the fenced plant outline is standard and well mapped. For wind, the choice is between the direct footprint (pads, roads, substation — about 1–3% of the farm) and the spacing area the turbines need to avoid each other's wakes. They answer different questions: direct land take and exclusive land use.

2. Measure capacity density from real plants

Mapped outlines with capacity tags give a distribution for the region and the era. Report the median and the spread, and check the outliers — plants tagged with the capacity of a whole complex on one parcel's outline.

3. Convert to average power

Capacity density alone favours technologies with low capacity factors. Multiplying by the capacity factor gives average W/m², which is comparable across solar, wind and anything else.

4. Apply it to the available land, with a utilisation factor

Not every eligible hectare becomes a plant: parcels are too small, owners refuse, grid capacity runs out. Studies use utilisation factors from a few percent to around 30% of the eligible land.

5. Keep the energy per km² separate from the energy per MW

A wind farm has a far higher capacity factor and a far lower energy per km² of spacing area. Both statements are true; which one matters depends on whether the land is shared.

The nested areas used to measure the land use of renewable plants, from module area to wind spacing area. four denominatorsmodule areathe glass itself~210 W/m² at STCfenced PV plantrows, gaps, roadsmedian 51 MW/km²wind direct footprintpads, roads, substation1.3% of the spacing areawind spacing area5D × 8D per turbine5.4 MW/km²Name the area before quoting a density; 1 MW/km² = 1 W/m² spatialworkflow.io
Four areas, four densities — always name the denominator.

From capacity density to energy per square kilometre

The data used on this page

Every OpenStreetMap power=plant polygon in central Spain, 6.0–1.5° W, 38.0–41.0° N, fetched by the quick answer through OSMnx and the maps.mail.ru Overpass mirror, with the solar ones kept and their plant:output:electricity tags parsed for capacity. The setup unpacks that answer as saved on 10 October 2026, so the plant count stays put while new plants are mapped.

import io
import os
import requests
import zipfile

# OpenStreetMap as Overpass returned it on 10 October 2026, saved as osmnx's own cache so the counts
# below do not drift as OSM is edited; delete the cache folder to query live instead
if not os.path.exists("cache"):
    reply = requests.get("https://data.spatialworkflow.io/osm-cache-power-density-land-use-explained-2026-10-10.zip", timeout=300)
    reply.raise_for_status()
    with zipfile.ZipFile(io.BytesIO(reply.content)) as archive:
        archive.extractall("cache")

Example 1 — from capacity density to energy per km²

yield_kwh_per_kwp = 1633                       # PVGIS, optimal fixed tilt, Toledo
cf = yield_kwh_per_kwp / 8760
mw_km2 = density.median()
w_m2 = mw_km2 * cf                             # 1 MW/km² = 1 W/m²
print(f"{mw_km2:.0f} MW/km² × capacity factor {cf:.1%} = {w_m2:.1f} W/m² average")
print(f"= {w_m2 * 8.76:.0f} GWh per km² per year")
poa_w_m2 = 2106 * 1000 / 8760                 # PVGIS tilted-plane irradiation, Toledo
print(f"against {poa_w_m2:.0f} W/m² average irradiation on the tilted plane: "
      f"land converts {w_m2 / poa_w_m2:.1%} of it")
51 MW/km² × capacity factor 18.6% = 9.6 W/m² average
= 84 GWh per km² per year
against 240 W/m² average irradiation on the tilted plane: land converts 4.0% of it

The last line is the whole-plant efficiency on land: module efficiency, times the fraction of ground covered by modules, times the system losses. The ground coverage — typically 35–45% for fixed-tilt rows — is the biggest single factor after the module.

Example 2 — the wind version

rotor, rated_mw = 126, 3.45                    # Vestas V126-3.45
gross_cf, losses = 0.553, 0.15                 # western Jutland, from the capacity-factor guide
for across, along in ((4, 7), (5, 8), (6, 10)):
    spacing_km2 = (across * rotor) * (along * rotor) / 1e6
    mw_km2 = rated_mw / spacing_km2
    w_m2 = mw_km2 * gross_cf * (1 - losses)
    print(f"{across}D × {along}D: {spacing_km2:.2f} km² per turbine, "
          f"{mw_km2:.1f} MW/km², {w_m2:.1f} W/m², {w_m2 * 8.76:.0f} GWh/km²/yr")
footprint_ha = 0.8                             # pad, crane area, share of roads
print(f"direct footprint at 5D × 8D: {footprint_ha / 100 / (5 * 8 * rotor**2 / 1e6):.1%} "
      f"of the spacing area")
4D × 7D: 0.44 km² per turbine, 7.8 MW/km², 3.6 W/m², 32 GWh/km²/yr
5D × 8D: 0.64 km² per turbine, 5.4 MW/km², 2.6 W/m², 22 GWh/km²/yr
6D × 10D: 0.95 km² per turbine, 3.6 MW/km², 1.7 W/m², 15 GWh/km²/yr
direct footprint at 5D × 8D: 1.3% of the spacing area

Per km² of spacing area, even this high-capacity-factor site produces 15–32 GWh a year against the solar plant's 84. Per km² of land actually taken out of use, it produces far more — and the rest of the farm stays farmland.

Example 3 — capacity on the available land

available_km2 = 762                            # Toledo region at a 500 m setback
for utilisation in (0.02, 0.05, 0.10, 0.20):
    gw = available_km2 * utilisation * density.median() / 1000
    twh = gw * cf * 8.76
    print(f"use {utilisation:.0%} of the eligible land: {gw:.1f} GW, {twh:.1f} TWh a year")
use 2% of the eligible land: 0.8 GW, 1.3 TWh a year
use 5% of the eligible land: 2.0 GW, 3.2 TWh a year
use 10% of the eligible land: 3.9 GW, 6.4 TWh a year
use 20% of the eligible land: 7.8 GW, 12.8 TWh a year

The utilisation factor moves the answer tenfold and is almost never measured — it is a policy assumption. A technical potential without it is an upper bound, not a forecast.

Energy per square kilometre per year for fixed-tilt PV in central Spain and for wind in western Jutland by spacing area. GWh per km² per yearPV, fenced area84 GWh/km² (51 MW/km² × 1,633 h)wind, 4D × 7D spacing32wind, 5D × 8D spacing22wind, 6D × 10D spacing15050100GWh/km²Per km² of land actually taken out of use, wind is far ahead — the spacing area stays farmland spatialworkflow.io
Which technology uses more land depends entirely on which land you count.

One megawatt per square kilometre is one watt per square metre

Why 1 MW/km² equals 1 W/m²

A square kilometre is a million square metres and a megawatt is a million watts. The identity makes it easy to move from a planning figure (MW/km²) to a physical one (W/m²), and to compare against the roughly 200 W/m² of average sunshine that falls on southern Spain.

Why wind spacing is not land consumption

Turbines are spaced 5–10 rotor diameters apart so that each one sees wind the others have not slowed. The land between them is still farmed or grazed. Counting the spacing area as land use is right when the question is "how many turbines fit" and wrong when it is "how much farmland is lost".

Why capacity tags need scrutiny

OSM capacity tags are entered by hand. A complex of several plants tagged with its total output on one of its parcels gives a density of 378 MW/km² in this data — impossible for fixed-tilt PV with today's modules. Medians are robust to a few of these; means are not.

Solar capacity and annual energy on the Toledo region’s eligible land at four utilisation factors. the assumption that moves the answer tenfoldshare of eligible land usedcapacityenergy a year2%0.8 GW1.3 TWh5%2.0 GW3.2 TWh10%3.9 GW6.4 TWh20%7.8 GW12.8 TWh762 km² eligible at a 500 m setback × 51 MW/km² × 1,633 kWh/kWpUtilisation is a policy assumption, almost never measured spatialworkflow.io
Technical potential without a utilisation factor is an upper bound, not a forecast.

DC or AC, trackers and agrivoltaics

  • DC or AC: plant capacity tags mix MWp and MW(AC); a 1.3 ratio between them is a 30% difference in density.
  • Trackers need wider row spacing than fixed tilt and have somewhat lower capacity density but higher energy per MW.
  • Agrivoltaics deliberately lower the density to keep farming underneath.
  • Solar thermal plants (CSP) are tagged plant:method=thermal and have very different densities; keep them out of a PV figure.
  • Offshore wind densities are typically 3–6 MW/km², and the question of land use does not arise.

FAQ

How much land does a solar farm need per MW?

In central Spain, mapped PV plants have a median of 51 MW per km² of fenced area — roughly 2 hectares per MW.

What is power density?

Average power per unit area, in W/m²: capacity density multiplied by capacity factor.

Does wind use more land than solar?

Per unit of energy, yes if you count the spacing area; far less if you count only the land taken out of use.

Why do published figures disagree so much?

They use different areas: module, fence, spacing or footprint, and different eras of module efficiency.

Can I use OSM capacity tags?

Yes, with care: parse them explicitly, drop yes, and check the outliers against the plant's outline.

What utilisation factor should I assume?

There is no standard; published studies use roughly 1–30% of eligible land. Report results across a range.