dem_hillshade — DEM shading op

• Data kinds: depth → image2d

• Call: import fullseye as fs; fs.ledger.dem_hillshade(dem, cell_size, azimuth_deg=315.0, altitude_deg=45.0, z_factor=1.0, method='horn') (to call the implementation directly, import demops; demops.dem_hillshade(dem, cell_size, azimuth_deg=315.0, altitude_deg=45.0, z_factor=1.0, method='horn'); from the registry, opsdem.get("dem_hillshade"))

Usage

Hillshade [0,1]. azimuth_deg is the azimuth of the light source (north 0 degrees, increasing towards east).

It is Lambert's cosine law as is, and occlusion is not considered (the portion shadowed by a ridge in front of the cell is not included). If cast shadows are needed, combine with dem_horizon_angle —— assuming "the hillshade contains shadows" is the classic misconception.

On a flat surface it equals sin(altitude) (measured 1e-15 or less).

Detailed usage guide

• dem_terrain_analysis family guide

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_dem_terrain — py -3.11 examples/poc_dem_terrain.py

• poc_lidar_terrain_change — py -3.11 examples/poc_lidar_terrain_change.py

• poc_stockpile_volume — py -3.11 examples/poc_stockpile_volume.py

Ops the type connects to (they accept image2d as input)

—

Same category (shading)

—


*Provenance: demops.py — DEM operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.