Soil Landscape Classification
What This Tool Does
Soil Landscape Classification classifies a DEM into Pennock-inspired landform units using multiscale terrain analysis. It returns a landform raster, an optional polygon layer, a summary JSON, and an HTML report.
Typical Questions This Tool Helps Answer
- Which landform positions dominate this field (summit, backslope, footslope, depression), and how do their typical erosion, leaching, and moisture characteristics inform site-specific management decisions?
- Which terrain positions show convergent or depressional characteristics that signal moisture accumulation or elevated compaction vulnerability?
- Are the predicted soil landscape classes consistent with existing field observations and available soil survey records?
When To Use
- Soil survey preparation
- Terrain-based land management planning
- Identifying convergent and depositional terrain positions
- Building a simple landform map from a DEM
What You Need
| Input | Description |
|---|---|
| DEM raster | The elevation raster to classify. |
Key Settings
| Setting | Default | Guidance |
|---|---|---|
flat_slope_threshold | 3.0 | Higher values make more terrain count as flat. |
fine_scale | 2.0 | Smaller values preserve more local terrain detail. |
coarse_scale | 8.0 | Larger values emphasize broader landform patterns. |
pedology_region | none | Use a regional calibration pack when the landscape matches a supported setting. |
What You Get
| Deliverable | Format | Description |
|---|---|---|
landform_units | Raster | Landform class map. |
multiscale_signature | Raster | Three-band diagnostic raster. |
landform_polygons | Vector | Optional polygon layer. |
summary | JSON | Run statistics and interpretation guidance. |
html_report | HTML | Human-readable report. |
The summary also includes dominant_class_code, dominant_class_name, and class_distribution entries with confidence ranges for each class.
It also includes:
output_semanticsconfidence_contractinterpretation_warnings
Runtime Output Keys
result.outputs["landform_units"]
result.outputs["multiscale_signature"]
result.outputs["landform_polygons"]
result.outputs["summary"]
result.outputs["html_report"]
result.outputs["path"]
Common Questions
Q: Which output should agronomy teams review first?
A: Start with summary.dominant_class_name plus class confidence ranges in summary.class_distribution, then verify map patterns in landform_units.
Q: What is a common interpretation mistake? A: Treating class boundaries as hard soil boundaries; transition zones with low confidence need field checks.
Q: Which settings most change class distribution?
A: profile_curvature_threshold, plan_curvature_threshold, fine_scale, and coarse_scale usually produce the largest redistribution.
Q: How should teams use these outputs operationally?
A: Use landform_polygons to plan sampling zones and target lower-confidence areas for pedology verification.
Results Delivery Checklist
-
summary["valid_cells"]is non-zero -
summary["dominant_class_name"]matches the expected terrain setting -
class_distributionlooks plausible for the study area -
If requested,
landform_polygonswas created and opens correctly in GIS software - The report was reviewed before delivery
Operational Notes
- Curvature thresholds and smoothing scales are the most sensitive controls; keep them fixed when comparing fields or seasons.
- Use confidence ranges from
class_distributionto prioritize field checks in transitional terrain. - Treat mapped class boundaries as guidance for sampling and management zoning, not hard pedologic boundaries.
Related Tools
yield_data_conditioning_and_qaprecision_ag_yield_zone_intelligenceprecision_irrigation_optimization
References
- Runtime implementation:
wbtools_pro/src/tools/geomorphometry/soil_landscape_classification.rs - Precision Agriculture Intelligence bundle overview:
manual/pro-tools-customer/src/precision_agriculture/overview.md
When To Use This Workflow
Use Soil Landscape Classification when you need terrain-informed soil-position units for sampling design and variable-rate agronomic planning.