topo-derivatives
Six canonical terrain derivatives from a DEM — slope, aspect, curvature, TPI, TRI, geomorphons — emitted as single-band COGs over an AOI. This is the substrate layer beneath suitability, routing, microclimate, shade, hardiness, view-shed and parametric-flood recipes across the catalog. The default input is USGS 3DEP 10m for US AOIs (highest resolution in the registry within US extent); non-US AOIs should fork and override the input to @esa/copernicus-dem/glo-30. All six derivatives are deterministic functions of the DEM; there are no model knobs that need calibration. The only knobs are the neighborhood scales for TPI and geomorphons, which control the SIZE of the landforms the classifier resolves. Defaults match GRASS r.geomorphon's reference values (search_radius=5 cells, flatness=1.0 deg).
The contract
Read from this recipe's own declarations — parameters:,
outputs:, requires:, and the ops its layers name. Not from its
style blocks and not from any benchmark: a colour ramp is not a contract, and a measured
run is evidence about one AOI rather than a domain.
Parameters
The legacy dialect has no typed parameter schema. Read the folia.yaml for what this recipe takes; nothing here can type-check it.
Outputs
| output | kind | layer | what it is |
|---|---|---|---|
primary |
not declared | ['derived/slope', 'derived/aspect', 'derived/curvature', 'derived/tpi', 'derived/tri', 'derived/geomorphons'] |
Capabilities it requires
The legacy dialect has no requires: block.
Where it runs
- Browser preview does not run here derived/aspect: carries an unsubstituted ${...} template; derived/curvature: carries an unsubstituted ${...} template; derived/geomorphons: carries an unsubstituted ${...} template; and 4 more
- Local CLI (folia run) runs here runs locally through the legacy (no spec_version) parser
- Operated fleet (POST /plan, /run) runs here legacy dialect: a lock binds by the cut's layer names, not by digest
registry/recipes/topo-derivatives/folia.yaml