A 3DEP viewshed from Engineer Mountain: the named summits the model rates in view

· Mountains · Engineer Mountain, Colorado

The 3DEP model rates 27 of 40 named summits above 3,600 m in view from the summit, the farthest Uncompahgre Peak at 51 km; I check the list on my next visit.

The skyline east of the Engineer Mountain summit at dusk: black ridges against a fading glow, the summits the model rates in view as luminous marks with names, elevations, and distances. Vertical scale four times.
The skyline from northeast to southeast, with the 18 summits the model rates in view. Vertical scale 4×. Data: USGS 3DEP, public domain

Why this summit

Engineer Mountain stands alone above Coal Bank Pass on US 550, between Silverton and Durango, and the summit has a view in every direction. I want the list of what is in view from the top, by name and by distance, before I am up there next with a camera.

I check a model against the ground before I publish it. This time the model goes first, in September 2026, and the photographs come on the next visit. Every number below is the elevation model’s, not the ground’s, and the list is what I carry up.

Data

3DEP lidar

Product
Classified lidar point clouds (LAZ) and 1 m bare-earth DEM by project; 1/3 arc-second seamless DEM nationwide
Resolution
1 m DEM where lidar exists (finer in some projects); 10 m seamless
Cadence
Project by project; no fixed revisit
Latency
Months to years from acquisition to publication, by project
Format
GeoTIFF (DEM), LAZ (points), Entwine Point Tiles on AWS
License
Public domain (US government work)
Access
The National Map downloader; AWS Open Data bucket usgs-lidar-public (EPT); py3dep
Official
www.usgs.gov/3d-elevation-program

Method

Two public elevation models from the USGS 3D Elevation Program: the 1/3 arc-second seamless DEM resampled to 30 m for a 60 km far field, and the 1 m lidar bare-earth DEM for a 3 km near field, both projected to UTM zone 13N so distances are in metres. Named summits come from the USGS Geographic Names Information System.

far_dem = ps.dem.fetch_dem(LON, LAT, 60_000, 30, DATA / "dem_30m_60km.tif")
near_dem = ps.dem.fetch_dem(LON, LAT, 3_000, 1, DATA / "dem_1m_3km.tif")
gnis = ps.peaks.load_gnis("CO", DATA)
summit = ps.peaks.find_feature(gnis, "Engineer Mountain", near=(-107.79, 37.70))

The observer stands on the crest, not on the gazetteer point. GNIS places the summit 20 m from the highest 1 m cell and 10 m below it, and a viewshed run from the gazetteer cell was blind to the north, hidden by the summit itself. The observer moves to the highest 1 m cell within 100 m, and both viewsheds start there.

OBS_LON, OBS_LAT, summit_elev = ps.dem.highest_point(near_dem, LON, LAT, 100)

gdal_viewshed from 1.7 m above that cell, target height 0, curvature coefficient 0.85714 for curvature with standard refraction, cut at 60 km on the far grid and 3 km on the near one.

far_vs = ps.viewshed.run_viewshed(far_dem, OBS_LON, OBS_LAT, DATA / "viewshed_far.tif", observer_height=1.7, max_distance=60_000)
near_vs = ps.viewshed.run_viewshed(near_dem, OBS_LON, OBS_LAT, DATA / "viewshed_near.tif", observer_height=1.7, max_distance=3_000)

Every GNIS summit within 60 km at 3,600 m or higher, the highest forty, each sampled against the far viewshed at its own coordinates and rated visible or hidden.

cand = ps.peaks.summits_near(gnis, OBS_LON, OBS_LAT, max_km=60, min_km=1.0)
cand["elevation_m"] = ps.dem.sample(far_dem, cand["lon"], cand["lat"])
cand = cand[cand["elevation_m"] >= 3600].sort_values("elevation_m", ascending=False).head(40)
cand["predicted"] = np.where(ps.dem.sample(far_vs, cand["lon"], cand["lat"]) >= 128, "visible", "hidden")

The skyline itself is cast from the same observer: a ray every 0.05 degrees of true azimuth, the DEM sampled every 30 m out to 60 km with the same curvature, the eye 1.7 m above the 1 m crest. The largest elevation angle along a ray is the skyline. Drawing distance slices far to near, each hiding what lies behind it, gives the ridges in view; a summit rated visible stands on the skyline, and a summit rated hidden falls inside the ridge in front of it.

sky = ps.panorama.compute_skyline(far_dem, OBS_LON, OBS_LAT, observer_height=1.7, max_distance=60_000, observer_elevation=summit_elev)
The skyline east to south from the Engineer Mountain summit drawn as forty stacked distance slices, fine profile lines fainter with distance, the skyline heavy on top, named summits marked in view or hidden.
Forty distance slices from 0.7 to 60 km, east to south from the summit, each hiding what lies behind it; the heavy line is the skyline the model keeps. Data: USGS 3DEP, public domain

Result

The model rates 27 of the 40 named summits in view and 13 hidden. The farthest in view is Uncompahgre Peak at 51 km, with Wetterhorn Peak beside it at 48 km. Ground in view covers 3.1 percent of the 60 km far field and 30.2 percent of the 3 km near field: from a summit the eye lands on ridgelines, and everything behind them is out of sight.

Viewshed from the Engineer Mountain summit over a hillshade of the San Juan Mountains, ground in view tinted green, named peaks marked visible or hidden.
Modeled visibility from the summit at 30 m over 60 km: 27 of 40 named peaks rated visible. Data: USGS 3DEP, public domain
The skyline from the Engineer Mountain summit, north to east and east to south, drawn as flat tonal ridges pale far and dark near, named summits with elevation and distance, a bearing scale under each strip.
The eastern half of the view, north to east and east to south: 20 of 29 named summits rated in view. Data: USGS 3DEP, public domain

East. The Grenadiers, Arrow Peak, Vestal Peak, Trinity Peaks, and Storm King Peak, stand on the skyline between 92 and 97 degrees at 17 to 22 km, and Jagged Mountain at 107. In the Needles, Sunlight Peak and North Eolus stand clear; Windom Peak, Mount Eolus, Pigeon Peak, Turret Peak, Jupiter Mountain, and Glacier Point are rated hidden, six summits within five degrees of bearing whose marks fall just inside the ridge in front of them on the sheet. Rio Grande Pyramid, at 37 km on the same bearing as the Grenadiers, is rated hidden; its mark sits inside the Grenadier ridge.

North. Mount Sneffels and Gilpin Peak stand up at 34 and 32 km; Teakettle Mountain and Potosi Peak beside them are rated hidden. Uncompahgre Peak and Wetterhorn Peak are in view at 51 and 48 km, and the Handies group, Handies, Jones, Niagara, American, Redcloud, Sunshine, and Half Peak, runs along the skyline between 48 and 58 degrees at 32 to 43 km.

The skyline from the Engineer Mountain summit, south to west and west to north, drawn as flat tonal ridges pale far and dark near, named summits with elevation and distance, a bearing scale under each strip.
The western half of the view, south to west and west to north: 7 of 11 named summits rated in view. Data: USGS 3DEP, public domain

Northwest and north. Mount Wilson, Gladstone Peak, and Wilson Peak are in view at 23 to 24 km; El Diente Peak, a kilometre farther on almost the same bearing, is rated hidden. Grizzly Peak at 8 km is the highest point on the whole skyline. Vermilion Peak and Fuller Peak stand up at 11 km with Golden Horn between them rated hidden, and Dallas Peak at 32 km and Ulysses S Grant Peak at 14 km, both due north, are rated hidden. South. Nothing above 3,600 m, and the horizon sits below level across the whole quarter-turn.

Near-field viewshed from the Engineer Mountain summit on the 1 m lidar bare-earth DEM, 3 km radius, ground in view tinted green over a hillshade with 50 m contours.
The near field on the 1 m bare-earth model: 30 percent of the ground within 3 km is in view. The model has no trees, so near ridgelines below treeline may show as visible when they are not. Data: USGS 3DEP, public domain

Where the model is likely wrong, until I check

I have not checked this list against the ground. Two things the run itself shows.

The bare-earth model has no trees. Engineer Mountain’s summit is above treeline, but the slopes and ridges in the near field are not, and a camera on the summit sees canopy where the model sees ground. Near ridgelines below treeline will be rated visible when they are not.

The coarse grid loses the summit. The 30 m DEM puts the summit at 3,947 m; the 1 m lidar puts the crest at 3,955 m. A viewshed started from the GNIS coordinate, 20 m from the crest and 10 m below it, saw nothing to the north because the summit hid it. Any viewshed from a named summit on a 10 m or 30 m grid should start from the highest fine-grid cell, not from the gazetteer point.

The check is set up. In the notebook folder, field/observations.csv carries one row per summit with the model’s rating. On the next visit I mark each one visible or hidden from the photographs, re-run, and the score replaces this section.

  • 3DEP lidar: The bare-earth DEM removes the trees, so a viewshed from a summit near treeline over-reports what a camera sees below the ridgelines.
  • 3DEP lidar: The 1/3 arc-second grid puts the summit 8 m below the 1 m lidar crest, and a viewshed started from the gazetteer coordinate, 20 m off the crest, saw nothing to the north; the observer has to stand on the highest 1 m cell.

Reproduce

The notebook fetches both DEMs and the GNIS names, runs gdal_viewshed, rates the forty summits, draws the sheets and the hero, and writes result.json. Public data and open tools; a re-run takes under a minute once the downloads are cached.

Notebook and fetch script

Jesse Sprague

Jesse Sprague. Field-checked analyses of public wildfire data. Work: Echospectra.