Solar Site Suitability Analysis
Purpose
Solar Site Suitability Analysis creates a terrain-based suitability map, visual-impact proxy, and ranked candidate sites for early solar siting.
Typical Questions This Tool Helps Answer
- Which candidate areas are strongest when balancing terrain suitability and visual impact?
- How much do transmission lines, substations, and roads change candidate ranking?
- Are top candidates stable under threshold/profile sensitivity checks?
Background
Solar siting is a screening and prioritization workflow, not a final approval workflow. This chapter is designed to support early-stage shortlist generation by combining terrain-derived suitability with optional infrastructure-aware reranking.
The workflow separates base score and final reranked score so teams can explain why rank changes occurred when infrastructure context is introduced. Final decisions still require permitting, interconnection, land-control, and environmental review.
Methodological Considerations
- Use a DEM appropriate to your planning scale and keep it consistent across comparisons.
- Add infrastructure layers when you want practical deployment-aware ranking behavior.
- Use sweep outputs to test shortlist stability before operational decisions.
Practical Interpretation Pitfalls
Common mistakes include treating top-ranked outputs as final decisions, ignoring sensitivity diagnostics, and comparing runs with different profile/threshold settings without documenting those differences.
Inputs
| Input | Required | Notes |
|---|---|---|
dem | Yes | Input DEM raster. |
candidate_threshold | No | Candidate score threshold (default 0.7). |
max_candidate_sites | No | Candidate cap (default 200). |
min_candidate_separation_cells | No | Minimum candidate spacing in cells (default 3, set 0 to disable). |
transmission_lines | No | Optional transmission lines for infrastructure-aware ranking. |
substations | No | Optional substations for infrastructure-aware ranking. |
road_network | No | Optional roads for access-aware ranking. |
infra_weight_profile | No | balanced, grid_priority, or access_priority (default balanced). |
sweep_spec | No | Optional JSON sweep specification. When supplied, the tool executes sweep runs and writes run-matrix and sensitivity outputs. |
output_prefix | No | Output prefix (default solar_siting). |
Outputs
| Output Key | Description |
|---|---|
suitability_score | Suitability raster. |
visual_impact | Visual-impact proxy raster. |
candidate_sites | Ranked candidate points. |
summary | JSON summary with candidate and infrastructure reranking metrics. |
run_matrix_summary | Optional CSV sweep run matrix. |
sensitivity_report | Optional JSON sweep sensitivity report with normalized span and stability_class indicators. |
sensitivity_report_html | Optional HTML sweep sensitivity report. |
stability_map | Optional GeoTIFF sweep stability classes (3=high, 2=medium, 1=low). |
html_report | Optional HTML report. |
Candidate-site attributes include RANK, SCORE, VIS_IMPACT, FINAL_SCORE, INFRA_BONUS, GRID_DIST_M, and ACCESS_DIST_M.
When sweep_spec is supplied, summary includes an executed sweep block and companion run-matrix/sensitivity artifacts for scenario traceability, including primary_relative_span and stability_class.
Example
import whitebox_workflows as wbw
env = wbw.WbEnvironment()
result = env.solar_site_suitability_analysis(
dem="dem_30m.tif",
transmission_lines="grid/transmission_lines.gpkg",
substations="grid/substations.gpkg",
road_network="transport/roads.gpkg",
infra_weight_profile="grid_priority",
output_prefix="solar_siting"
)
Common Questions
Q: What changes when infrastructure layers are added? A: Candidate ranking is adjusted using infrastructure bonus, and reranking impact is reported in summary metrics.
Q: Which setting usually changes shortlist size the most?
A: candidate_threshold, followed by separation and max-site limits.
Q: Are top scores always final decisions? A: No. Use this as screening output and combine with land-control, permitting, and interconnection checks.