Terrain Derivatives from SRTM (Slope/Aspect/Hillshade)

terrain-analysis easy USGS SRTM 30m, Mt. Rainier region

Ground Truth

24.0
degrees
10.0%
Tolerance
3
Runs
3
Passed

Calibrated from GEE execution on 2026-03-29 (actual: 23.95 degrees). Will be validated against QGIS and folia outputs. Cross-platform variation expected from different slope algorithms (Horn vs. Zevenbergen-Thorne) and edge handling.

Run Results

Workflow Model Backend Status Answer Error Cost Latency
exec gold gee PASS 23.946871106724288 0.2% $0.000029 514ms
exec gold folia-rust PASS 20.254913330078125 15.6% --- 50ms
exec gold qgis PASS 20.828126919688536 13.2% --- 200ms

Requirements

Data Sources
  • USGS SRTM 30m (SRTMGL1)
Operations
terrain_slope terrain_aspect terrain_hillshade

Gold Spec (folia.yaml)

Known-correct folia spec for this problem. This is the reference implementation used for backend quality testing.

Interactive map powered by <folia-view>. Requires pre-staged data to render layers.
View Raw Spec
# Platform Comparison: Terrain Derivatives — Gold Spec
#
# Compute slope, aspect, and hillshade from Copernicus DEM 30m
# over the Mt. Rainier region.  Ground truth: mean slope ~24 degrees.
#
# This spec is designed to run through both the Python backend and
# browser-wasm executor (folia bench exec -b browser-wasm).

name: terrain-derivatives
version: "1.0"
description: >
  Compute terrain derivatives (slope, aspect, hillshade) from a 30m DEM
  over Mt. Rainier.  Report the mean slope in degrees.
  Ground truth: ~24 degrees (calibrated from GEE 2026-03-29).

settings:
  default_bbox: [-121.9, 46.7, -121.6, 46.9]
  default_crs: EPSG:4326

layers:

  # ============================================================
  # SOURCE LAYERS
  # ============================================================

  source/dem:
    uri: stac://earth-search/cop-dem-glo-30
    type: raster
    description: >
      Copernicus GLO-30 DEM (30m), equivalent to SRTM coverage.
      Mt. Rainier region, WA.
    params:
      bbox: [-121.9, 46.7, -121.6, 46.9]

  # ============================================================
  # COMPUTE: TERRAIN DERIVATIVES
  # ============================================================

  compute/slope:
    type: raster
    description: >
      Slope in degrees computed from the DEM using Horn's method.
    compute:
      op: terrain_slope
      inputs:
        dem: { layer: source/dem }
      params:
        units: degrees
        algorithm: horn

  compute/aspect:
    type: raster
    description: >
      Aspect in degrees (0-360, clockwise from north).
    compute:
      op: terrain_aspect
      inputs:
        dem: { layer: source/dem }

  compute/hillshade:
    type: raster
    description: >
      Hillshade with standard illumination (azimuth 315, altitude 45).
    compute:
      op: terrain_hillshade
      inputs:
        dem: { layer: source/dem }
      params:
        azimuth: 315
        altitude: 45

  # ============================================================
  # RESULT: MEAN SLOPE
  # ============================================================

  result/mean-slope:
    type: table
    description: >
      Mean slope across the AOI in degrees.
      Ground truth: ~24 degrees.
    compute:
      op: analysis_zonal_stats
      params:
        stats: [mean]
      inputs:
        raster: { layer: compute/slope }

LLM Prompt

The prompt given to LLMs in single-shot workflow benchmarks.

Problem: Compute slope, aspect, and hillshade from the SRTM 30m DEM
for the Mt. Rainier region. Report the mean slope in degrees.

Study area: -121.9, 46.7, -121.6, 46.9 (Mt. Rainier, WA).
Data: USGS SRTM 30m.
Expected answer: approximately 24 degrees mean slope.