Ground-mount vs roof-mount PV systems: the real trade-offs
A technical comparison of ground-mount and roof-mount PV covering yield, tilt freedom, foundations, cost per kWp, cabling, permitting, and O&M access.
A worked-trigonometry guide to inter-row shading geometry, solar altitude at the design hour, and how ground coverage ratio trades off against annual shading loss.
Row spacing is one of the few PV design decisions that trades off against itself: tighter spacing raises ground coverage ratio and energy density per hectare, but it also raises inter-row shading losses, and the two effects do not move in your favor at the same rate. This article is for site designers and layout engineers who need to move past rule-of-thumb spacing ratios and actually run the trigonometry for a specific site and design hour.
The core geometry is simple - solar altitude, row height, and row pitch fully determine when one row starts shading the row behind it - but the economic optimum depends on the shape of the shading-loss curve near the chosen design hour, and that curve is not linear. Small spacing reductions near the optimum barely affect losses; the same reduction below a threshold causes losses to rise sharply.
We work through the standard design-hour method, show the trigonometry explicitly, and then quantify the trade-off between ground coverage ratio and annual shading loss using representative numbers.
For a fixed-tilt array, the sun's position is described by solar altitude (angle above the horizon) and solar azimuth (compass bearing), both functions of latitude, day of year, and time of day. Inter-row shading is governed almost entirely by solar altitude at the times of day and year when the sun is low - shading loss is negligible near solar noon in summer and dominant in the low-altitude hours of winter mornings and afternoons.
The standard design approach does not optimize for the worst possible moment (typically the winter solstice at sunrise, when the sun is at or below the horizon and any finite spacing would "fail"). Instead it fixes a design hour - commonly solar noon plus/minus a stated number of hours on the winter solstice, or a fixed solar altitude threshold such as the "4-hour window around solar noon on December 21" - and ensures no shading occurs at that hour. Losses outside the design window are accepted and quantified separately.
Solar altitude alpha at a given hour angle H, on a day with solar declination delta, at latitude phi, is:
sin(alpha) = sin(phi) x sin(delta) + cos(phi) x cos(delta) x cos(H)
Declination on the winter solstice (Northern Hemisphere, around December 21) is delta = -23.45 degrees. The hour angle H is 15 degrees per hour from solar noon (H = 0 at solar noon, H = 30 degrees two hours before or after noon).
Figure — Row pitch geometry
Ground coverage ratio (GCR) is the ratio of module area to total ground area, or equivalently (for a single-axis-fixed row geometry) the ratio of the row's plan-projected width to the row pitch (center-to-center row spacing):
GCR = W_proj / D
where W_proj is the horizontal (plan) projection of the tilted module row and D is the row pitch. A higher GCR packs more capacity per hectare - directly reducing land cost, cabling length, and civil works per kWp - but increases the fraction of hours in the year when adjacent rows partially shade each other, cutting energy yield per installed kWp. There is no universally correct GCR; the optimum depends on land cost, latitude (which sets the achievable sun angles), electricity value, and whether the array uses fixed tilt or tracking (trackers largely sidestep this trade-off through backtracking, at the cost of mechanical complexity).
Consider a fixed-tilt array at latitude 45 degrees N, tilt angle 30 degrees, module row height (slant height) 2.0 m, designed for no shading within 4 hours of solar noon on the winter solstice (December 21, delta = -23.45 degrees).
Step 1: solar altitude at the design hour (H = 60 degrees, i.e. 4 hours from solar noon).
sin(alpha) = sin(45) x sin(-23.45) + cos(45) x cos(-23.45) x cos(60) sin(alpha) = (0.7071 x -0.3977) + (0.7071 x 0.9175 x 0.5) sin(alpha) = -0.2812 + 0.3244 sin(alpha) = 0.0432 alpha = 2.48 degrees
This is a very low sun angle, as expected 4 hours from noon in midwinter at 45 degrees latitude - it is close to the geometric limit where the sun is barely above the horizon, so a 4-hour design window at this latitude demands very wide spacing or an acceptance of some shading loss at the window edges.
Step 2: required row pitch for zero shading at this altitude.
The shadow length cast by a row of slant height L tilted at angle beta, measured horizontally along the ground in the direction of the sun's azimuth projection, for a due-south-facing array at solar noon-ish hour angles (ignoring azimuth deviation for this simplified case) is approximately:
Shadow horizontal length = L x cos(beta) + [L x sin(beta)] / tan(alpha)
With L = 2.0 m, beta = 30 degrees, alpha = 2.48 degrees:
= 2.0 x cos(30) + [2.0 x sin(30)] / tan(2.48) = 2.0 x 0.8660 + [2.0 x 0.5] / 0.0433 = 1.732 + 1.0 / 0.0433 = 1.732 + 23.09 = 24.82 m
Step 3: interpret the result. A row pitch of nearly 25 m for a 2 m slant-height row gives a GCR of roughly W_proj / D = 1.73 / 24.82 = 0.07 - about 7%. This is impractically low for land-constrained sites and illustrates why nobody designs to true zero shading at a 4-hour window at 45 degrees latitude; in practice, designers either shorten the design window (e.g. 2-3 hours from solar noon), accept a defined amount of shading loss at the window edges, or use a lower tilt angle to reduce L x sin(beta).
Repeating step 1-2 for a 2-hour design window (H = 30 degrees) gives sin(alpha) = 0.7071x-0.3977 + 0.7071x0.9175x0.866 = -0.2812+0.5615 = 0.2803, alpha = 16.29 degrees, and shadow length = 1.732 + 1.0/tan(16.29) = 1.732 + 1.0/0.2924 = 1.732+3.420 = 5.15 m, giving GCR = 1.73/5.15 = 0.34 - a far more realistic 34%, illustrating how sharply required pitch drops as the design window narrows.
| Row pitch (m) | GCR (approx) | Design window (no shading) | Typical annual shading loss |
|---|---|---|---|
| 5.15 | 0.34 | +/-2 h at solstice | 2-4% |
| 6.5 | 0.27 | +/-3 h at solstice | 1-2% |
| 8.5 | 0.20 | +/-4 h at solstice | <1% |
| 4.0 | 0.43 | +/-1 h at solstice | 5-8% |
| 3.0 | 0.58 | near-zero margin | 10-15%+ |
These figures are order-of-magnitude illustrations for the 45 degrees latitude, 30 degree tilt case above and will shift with latitude, tilt, and azimuth orientation; they should not be used as a substitute for a full 8760-hour simulation, but they demonstrate the characteristic shape: shading loss rises slowly as GCR increases from 0.20 to 0.30, then accelerates sharply above roughly 0.40-0.45 for fixed-tilt arrays at mid latitudes.
Below a critical GCR, only the lowest-sun hours near sunrise/sunset in midwinter are shaded, and these hours carry little energy because of the cosine losses on the module plane and higher atmospheric attenuation at low sun angles - shading a low-value hour costs little. Above the critical GCR, shading begins to intrude into higher-altitude, higher-irradiance hours, and the marginal energy lost per unit of pitch reduction rises quickly. This is why practical fixed-tilt utility arrays commonly land in the GCR 0.28-0.40 range rather than pushing toward the theoretical density limit.
The simplified shadow formula above assumes a due-equator-facing array observed near solar noon. For east-west deviated arrays or hours farther from solar noon, the sun's azimuth is not aligned with the row's shading axis, and the effective shadow length must be computed using the full solar position (both altitude and azimuth) projected onto the plane perpendicular to the row direction. Software tools (PVsyst, PVGIS-based custom scripts) handle this rigorously across all 8760 hours of the year; the simplified single-hour calculation above is a design check, not a substitute for full-year simulation when finalizing GCR for a real project.
Single-axis trackers use backtracking algorithms that deliberately reduce the tracking angle away from true sun-normal as the sun approaches the row-to-row shading limit, trading a small direct-beam cosine loss for the elimination of inter-row shading entirely. This allows trackers to run at higher GCR (commonly 0.35-0.45) than an equivalently spaced fixed-tilt array without incurring the same shading penalty, though the mechanical and control complexity, plus the higher balance-of-system cost, are the offsetting factors. For system-level yield estimates that account for these effects, see the system sizing calculator.
Most practice uses a 2 to 4-hour window around solar noon on the winter solstice, but the choice should be driven by an explicit trade-off study rather than convention alone, since the required pitch is highly sensitive to window width, especially at higher latitudes as shown in the worked example.
Not necessarily net of energy loss. Higher GCR reduces land, cabling, and civil cost per kWp, but the associated shading loss reduces energy yield per kWp; the optimum GCR balances land value against local electricity value and generally rises with land cost and falls with a high shading-loss penalty at that latitude.
Significantly. Reducing tilt lowers the slant-height projection (L x sin(beta) term) that drives shading, so lower-tilt arrays can use tighter spacing for the same design window; this is one reason low-latitude sites, which already use lower tilt angles, can support higher GCR than high-latitude sites at an equivalent design window.
Because backtracking eliminates the hard shading cutoff that fixed-tilt geometry imposes, replacing it with a smoother, smaller cosine loss as the tracker angle is limited near the shading boundary; this allows economically higher packing density for the same acceptable energy loss.
No. It is a useful first-pass design check and sanity bound, but final row spacing should be confirmed with full 8760-hour simulation software that accounts for the complete solar path, diffuse irradiance components, and site-specific horizon obstructions.
Related design decisions interact with row spacing choices, including inverter and string sizing discussed in MPPT explained and voltage drop implications covered in the voltage drop calculator; see also the glossary for term definitions.
Standards are cited for orientation. Always work from the current published edition and the national annex that applies in your jurisdiction.
First published.
Technical review: worked examples re-derived, standards references checked against current editions, sources verified.
A technical comparison of ground-mount and roof-mount PV covering yield, tilt freedom, foundations, cost per kWp, cabling, permitting, and O&M access.
How EN 1991-1-3 and 1991-1-4 govern PV mounting design, from terrain factors and edge zones to uplift arithmetic and roof capacity checks.
How to assess lightning risk and size, place, and coordinate SPDs on DC and AC sides of PV systems under IEC 62305 and IEC 61643-32.