Wind Turbine Siting Analysis
Purpose
Wind Turbine Siting Analysis produces a siting score, confidence map, candidate points, high-confidence zones, and threshold-sensitivity diagnostics.
Typical Questions This Tool Helps Answer
- Which candidate locations satisfy terrain and settlement-visibility constraints while maintaining strong confidence?
- How sensitive is the shortlist to threshold changes and selected profile settings?
- Where are high-score zones that are also confidence-stable for feasibility follow-up?
Background
Wind siting is a constrained screening process where physical suitability and uncertainty must be interpreted together. This workflow explicitly separates siting_score (suitability) and confidence (stability/reliability) so ranking decisions are easier to explain.
The output is designed for early-stage planning and prioritization. Final wind deployment decisions still require grid studies, land access confirmation, permitting, environmental review, and local policy compliance.
Methodological Considerations
- Ensure DEM and settlement data are in aligned projected coordinates.
- Keep profile selection (
fast,balanced,quality) consistent across alternatives when comparing results. - Use threshold and sweep diagnostics to assess shortlist robustness before selecting field targets.
Practical Interpretation Pitfalls
Common mistakes include interpreting high score as high certainty, comparing runs with inconsistent profile/threshold settings, and skipping threshold-sensitivity diagnostics.
Inputs
| Input | Required | Notes |
|---|---|---|
dem | Yes | Input DEM raster with CRS metadata. |
settlements | Yes | Settlement locations as vector or CSV. |
settlements_epsg | Conditional | Required for CSV settlements; optional override otherwise. |
visibility_radius_meters | No | Visibility radius (default 5000, range [1000, 50000]). |
min_slope_degrees | No | Minimum slope (default 5.0). |
max_slope_degrees | No | Maximum slope (default 35.0). |
candidate_threshold | No | Candidate threshold in [0, 1] (default 0.7). |
max_candidate_sites | No | Candidate cap (default 200). |
min_candidate_separation_cells | No | Candidate spacing in cells (default 3, set 0 to disable). |
transmission_region | No | dense_grid, sparse_grid, or remote (default dense_grid). |
profile | No | fast, balanced, or quality (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 wind_siting). |
Outputs
| Output Key | Description |
|---|---|
siting_score | Combined siting score raster. |
confidence | Confidence raster. |
candidate_sites | Ranked candidate points. |
high_score_confident_zones | Polygon zones passing score and confidence rules. |
threshold_sensitivity_summary | JSON threshold-sensitivity diagnostics. |
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). |
summary | JSON metrics and interpretation guidance. |
html_report | Optional HTML report. |
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.wind_turbine_siting(
dem="dem.tif",
settlements="settlements.shp",
transmission_region="dense_grid",
profile="balanced",
output_prefix="wind_siting"
)
Common Questions
Q: Why is EPSG required for CSV settlements? A: CSV files do not carry CRS metadata, so EPSG is needed to align with the DEM.
Q: What is the difference between score and confidence? A: Score ranks suitability; confidence indicates how stable that score is across components.
Q: Where do I check threshold robustness?
A: Review threshold_sensitivity_summary and the threshold_sensitivity section in summary JSON.