Wildlife and wetlands

Lidar terrain analysis

How we tested passage through the valley.

We used a detailed terrain model to ask a straightforward question: if a reservoir fills the valley floor, how does the easiest route through Homestake change?

Method in plain terms

The comparison holds the valley still, then adds the reservoir.

The model gives every scenario the same terrain data, the same starting and ending areas, and the same movement rules. The principal change is whether the modeled reservoir occupies the valley floor.

  1. 01

    Build a detailed terrain map

    A 2016 USGS bare-earth lidar surface records the shape of the ground in 1 metre cells. Four neighboring cells are averaged into each 2 metre routing cell.

  2. 02

    Use the same passage points

    Every comparison begins and ends at the same broad gates across the valley. This keeps a shorter or easier starting position from favoring one scenario.

  3. 03

    Mark where a route cannot go

    Modeled reservoir water, existing ponds, very steep broad terrain, and mapped candidate steep faces are treated as barriers. Streams remain possible crossing points.

  4. 04

    Find the lowest-effort route

    The routing calculation tests neighboring cells and accounts for travel distance, climbing, and descending. It finds the least-cost connection through the remaining terrain.

  5. 05

    Compare like with like

    The current valley is compared with reservoir alternatives A through D under matched rules. Additional runs vary slope thresholds, shoreline position, terrain scale, side of valley, direction, and distance from current roads and trails.

What the analysis measures

It measures difficulty and room to choose a route.

Least-cost route

The easiest modeled connection between the same two passage gates.

Cumulative ascent

The total climbing along that route, including every rise rather than only the difference between its endpoints.

Relative terrain effort

A consistent score based on distance and signed slope. It lets current and reservoir conditions be compared on the same scale.

Route opportunity

The area reachable within 5%, 10%, or 20% of the current valley's minimum cost. It shows how much comparably easy choice remains.

Matched route comparison

See how the route moves out of the valley floor.

Purple and green show the modeled routes on the eastern and western sides. Blue shows our modeled full-pool boundary for the potential dam site. Red marks terrain cells that meet the candidate steep-face test.

Current terrain lidar map with eastern and western least-cost routes following the Homestake Valley corridor
Current terrain73.2 m cumulative ascent

The easiest route can use the broad valley floor.

Modeled full-pool reservoir D with eastern and western least-cost routes displaced onto the valley sides
Full-pool model D191.3 m cumulative ascent

The modeled water occupies the central corridor and pushes routes onto the slopes.

The other modeled alternatives

Modeled full-pool reservoir A with eastern and western least-cost routes
Model A191.6 m cumulative ascent
Modeled full-pool reservoir B with eastern and western least-cost routes
Model B191.6 m cumulative ascent
Modeled full-pool reservoir C with eastern and western least-cost routes
Model C191.6 m cumulative ascent

All maps use the same central gates and the primary 2 metre terrain rules. The lines show computational routes, not observed animal tracks.

Calculation method

The technical method, inputs, and tests.

The details below show how the terrain routes were compared and where the numbers in the maps came from.

01Terrain source and fixed geometry

The source is the georeferenced 2016 USGS lidar-derived 1 metre bare-earth digital terrain model. The analysis domain is 5,800 by 5,700 metres with a 100 metre source halo. Coordinates use EPSG:32613, with bounds of easting 376,000 to 381,800 metres and northing 4,362,500 to 4,368,200 metres.

  • Each 2 metre routing elevation is the arithmetic mean of its four underlying 1 metre cells.
  • The 10 metre comparison surface uses 10 by 10 cell means aligned with the earlier terrain model.
  • The original upstream and downstream gate footprints, east-west separator, and A through D pool polygons remain fixed across comparisons.
  • Side restrictions apply only through the north-south reach of the combined modeled pools. Unrestricted connectors join the gates outside that reach.
02Water, broad slopes, and candidate steep faces

Modeled pools and existing ponds are barriers. Their polygons are expanded by half a routing-cell diagonal before cell centers are tested. Existing mapped streams remain traversable under the crossing and fording assumption used in the earlier analysis.

The main route model excludes broad hillsides steeper than 35 degrees. That broad slope is calculated from the mean 10 metre terrain with a 20 metre central-difference span, then interpolated to the 2 metre routing grid.

A 1 metre cell is classified as a candidate steep face only when it meets both tests:

  1. Slope of at least 60 degrees, calculated from elevations 2 metres apart in each horizontal direction.
  2. At least 5 metres of elevation difference within an 11 by 11 cell neighborhood, spanning 10 metres between the outer cell centers.

A 2 metre route cell is blocked when any of its four underlying 1 metre cells meets both tests. The classifier adds no gap closing, dilation, component pruning, or modeled rockfall runout.

03Route graph and terrain-cost equation

Each traversable cell connects to as many as eight neighbors. A diagonal move is allowed only when both adjoining orthogonal cells are also open, preventing a route from cutting between two blocked corners.

Each directed edge costs its 3D length multiplied by the normalized anisotropic routing cost from Berti et al. (2022):

θ is the signed grade of movement in degrees, so uphill and downhill travel receive different costs. Results are relative terrain-effort units rather than calories or a species-specific probability of passage.

An implicit C++ A* solver calculates neighbors as needed. Its lower-bound heuristic uses the global minimum cost multiplier, reached at a 7.5 degree descent, multiplied by straight-line horizontal distance to the destination gate. Independent tests compare A*, full Dijkstra, and reverse-edge distances against a separately built SciPy graph.

Read the Berti et al. terrain-energy method

04Route-opportunity calculation

The opportunity envelopes answer a different question from the single easiest route: how much terrain remains available if a route may cost slightly more than today's minimum?

Full Dijkstra accumulation calculates the minimum cost from the upstream gate to every cell. A reversed-edge calculation does the same from every cell to the downstream gate. Adding those two values gives the minimum possible gate-to-gate cost of a route that passes through each cell.

Every alternative is then tested against the same current-valley minimum multiplied by 1.05, 1.10, and 1.20. The reported between-gate area includes cells within northings 4,363,455 to 4,367,455 metres that remain inside each shared cost budget.

Writing the rule explicitly: C(v) = d(upstream, v) + d(v, downstream). A cell is eligible when C(v) ≤ (1 + b) × C₀, where C₀ is the current-valley minimum and b is 0.05, 0.10, or 0.20. For example, the current minimum of 5,325.3486 relative-cost units gives a +5% ceiling of 5,591.6160 units. Eligible 2 by 2 metre cells inside the between-gate band contribute 4 square metres each; the reported loss is 100 × (A₀ − Aₛ) / A₀, using the same budget for the current and reservoir scenarios.

05Scenario and sensitivity matrix
What changes in each calculation
ScenarioPurpose
lidar-source 10 mAverages the lidar terrain to 10 metres while retaining the 35 degree broad-slope ceiling, original gates, and original separator. This isolates the change in terrain source.
fine 2 m-no-cliffUses native 2 metre routing elevations with the same broad 10 metre-supported slope screen, but without the candidate steep-face mask.
fine 2 m-primary-cliffAdds the primary 1 metre candidate steep-face mask while retaining the same terrain, water, gates, and costs. Its paired difference isolates the mask's effect.
cliff 45 / cliff 70Changes only the candidate-face slope threshold.
cliff 60-span 4Keeps the 60 degree threshold but increases the fine-slope derivative span from 2 to 4 metres.
primary-cliff-shoreplus 10Adds a 10 metre outward expansion to each modeled pool as a shoreline-position sensitivity.
primary-cliff-quiet 250Excludes cells within 250 metres of the same current road and trail alignment in both the baseline and reservoir comparisons.
native 2 m-slope 35Applies the 35 degree ceiling from the native 2 metre grid instead of the broader 10 metre-supported slope.

The central cases test either-side, east-side, and west-side routes in both directions. Additional sensitivities test either-side and east-side routes, with the 250 metre quiet scenario using either side. Together they produce 200 directional route records.

06Output fields and interpretation
effort_change_pct
Change from the matching baseline with the same scenario, side, and direction.
added_cliff_effort_pct
Isolated change from adding the candidate-face mask while shoreline, access, and broad-slope rules remain unchanged.
ascent_native_m
Cumulative ascent sampled on the native 2 metre route surface.
ascent_smooth_10_m
Cumulative ascent sampled on the standardized mean 10 metre surface along the same route.
access_within_100_m / 250_m
Length of route within the named distance of the current mapped road and trail alignment.
newly_excluded_cliff_cells_before_side
Candidate cells blocked after water and broad-slope screening but before east-west side restrictions.

Opportunity-envelope area is a computational measure of route choice within a common terrain-cost budget. It is distinct from occupied habitat acreage or a measured biological corridor width.

07Reproduction and independent checks
  1. Compile the solver: g++ -O3 -std=c++17 scripts/implicit_astar.cpp -o scripts/implicit_astar.
  2. Run python3 scripts/run_lidar.py to recreate all 200 route records.
  3. Run python3 scripts/compute_envelopes.py to recreate the 5%, 10%, and 20% route-opportunity summaries.
  4. Run the solver, algorithm, route, and envelope QA scripts preserved with the analysis package.

The independent review reconstructed all 200 exported paths, checked 375,693 vertices and 256,431 diagonal edges against the saved constraints, recalculated route metrics, and found no numerical defect in the reviewed implementation or final outputs.

Required Python packages are NumPy, SciPy, Shapely, PyProj, and Rasterio. The saved package retains the source terrain, masks, routes, results, scripts, environment record, and checksums needed to reproduce the analysis without new data retrieval.

How to read the result

A terrain screen shows where the landscape tightens.

The reservoir-driven detour is the main modeled change. In matched runs, adding the primary candidate steep-face mask changes route cost by no more than 0.0292%. The mask shows where the displaced route meets locally abrupt terrain, while the calculation keeps animal behavior, vegetation, snow, footing, fencing, construction disturbance, and future road changes outside the model.

Every tested route remained mathematically connected. The important change is what that connection requires: more climbing, higher terrain cost, and substantially less low-cost room to choose another path.